From fc28c68319c77aabe0f952aafb4da60d86a31d18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Tue, 15 May 2018 20:58:04 +0200 Subject: [PATCH 01/39] Upgrade Jest to 22 --- integration-test/example.test.js | 4 +- package.json | 9 +- src/test/warnTooManyClasses.test.js | 14 +- test-results.json | 2 +- test-utils/setupTestFramework.js | 18 + yarn.lock | 1156 +++++++++++++++++++++------ 6 files changed, 926 insertions(+), 277 deletions(-) create mode 100644 test-utils/setupTestFramework.js diff --git a/integration-test/example.test.js b/integration-test/example.test.js index 1c64068cb..c4d747fac 100644 --- a/integration-test/example.test.js +++ b/integration-test/example.test.js @@ -53,10 +53,10 @@ describe('example page', () => { }) page = await browser.newPage() page.on('request', req => { - if (urlWhitelist.find(regexp => req.url.match(regexp))) { + if (urlWhitelist.find(regexp => req.url().match(regexp))) { req.continue() } else { - throw new Error(req.url) + throw new Error(req.url()) req.abort() } }) diff --git a/package.json b/package.json index b7b13711c..bb1f97612 100644 --- a/package.json +++ b/package.json @@ -117,15 +117,15 @@ "flow-bin": "^0.47.0", "flow-watch": "^1.1.1", "husky": "^0.14.3", - "jest": "^20.0.4", - "jest-image-snapshot": "2.2.0", - "jest-styled-components": "^5.0.0", + "jest": "^22.4.3", + "jest-image-snapshot": "^2.4.1", + "jest-styled-components": "^5.0.1", "jsdom": "^9.10.0", "lint-staged": "^6.0.0", "node-watch": "^0.4.1", "npm-run-all": "^4.1.2", "prettier": "1.9.2", - "puppeteer": "^0.13.0", + "puppeteer": "^1.4.0", "raf": "^3.4.0", "react": "^16.3.0", "react-dom": "^16.0.0", @@ -164,6 +164,7 @@ "/src/test/enzymeSetup.js", "/src/test/globals.js" ], + "setupTestFrameworkScriptFile": "/test-utils/setupTestFramework.js", "testPathIgnorePatterns": [ "/src/native", "/src/primitives" diff --git a/src/test/warnTooManyClasses.test.js b/src/test/warnTooManyClasses.test.js index 3d7d172fb..71bdf0fd7 100644 --- a/src/test/warnTooManyClasses.test.js +++ b/src/test/warnTooManyClasses.test.js @@ -8,19 +8,19 @@ import styleSheet from '../models/StyleSheet' let styled describe('warn too many classes', () => { - const nativeWarn = console.warn - let warnCallCount; + const consoleWarn = console.warn + let warnCallCount /** * Make sure the setup is the same for every test */ beforeEach(() => { - (console: any).warn = () => warnCallCount++ + console.warn = () => warnCallCount++ warnCallCount = 0 styled = resetStyled() }) afterEach(() => { - (console: any).warn = nativeWarn + console.warn = consoleWarn }) it('should warn once', () => { @@ -28,7 +28,7 @@ describe('warn too many classes', () => { width: ${props => props.size}; ` for (let i = 0; i < 300; i++) { - shallow() + shallow() } expect(warnCallCount).toEqual(1) }) @@ -38,7 +38,7 @@ describe('warn too many classes', () => { width: ${props => props.size}; ` for (let i = 0; i < 200; i++) { - shallow() + shallow() } expect(warnCallCount).toEqual(1) }) @@ -48,7 +48,7 @@ describe('warn too many classes', () => { width: ${props => props.size}; ` for (let i = 0; i < 199; i++) { - shallow() + shallow() } expect(warnCallCount).toEqual(0) diff --git a/test-results.json b/test-results.json index 32d3b652c..6052576ea 100644 --- a/test-results.json +++ b/test-results.json @@ -1 +1 @@ -{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":20,"numPassedTests":156,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":20,"numTotalTests":156,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"unmatched":0,"updated":0},"startTime":1525942039890,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1525942040395,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/theme.test.js","startTime":1525942040176,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1525942040575,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/rehydration.test.js","startTime":1525942040476,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1525942040773,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/warnTooManyClasses.test.js","startTime":1525942040659,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1525942040866,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/styles.test.js","startTime":1525942040830,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should inject styles into two parallel contexts"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1525942040973,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1525942040922,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1525942041058,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/extending.test.js","startTime":1525942041024,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called with a valid element"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should allow you to pass in style objects"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"failureMessages":[],"status":"passed","title":"handle media at-rules inside style rules"}],"endTime":1525942041185,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/basic.test.js","startTime":1525942041146,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1525942041275,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/attrs.test.js","startTime":1525942041239,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1525942041356,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/expanded-api.test.js","startTime":1525942041327,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1525942041420,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/ssr.test.js","startTime":1525942041393,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work with default SC_ATTR"},{"failureMessages":[],"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1525942041507,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/constants.test.js","startTime":1525942041479,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1525942041586,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/constructors/test/styled.test.js","startTime":1525942041559,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"},{"failureMessages":[],"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1525942041658,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1525942041635,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1525942041734,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/css.test.js","startTime":1525942041709,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1525942041807,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/staticCaching.test.js","startTime":1525942041786,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1525942041920,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/constructors/test/keyframes.test.js","startTime":1525942041899,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1525942041991,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/no-parser/test/basic.test.js","startTime":1525942041970,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1525942042069,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/props.test.js","startTime":1525942042042,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1525942042138,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/overriding.test.js","startTime":1525942042119,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1525942042210,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/no-parser/test/keyframes.test.js","startTime":1525942042190,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":31,"numPassedTests":226,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":31,"numTotalTests":226,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"uncheckedKeys":[],"unmatched":0,"updated":0},"startTime":1526410172305,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the reactProps","location":null,"status":"passed","title":"should allow all the reactProps"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the html props","location":null,"status":"passed","title":"should allow all the html props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle all the SVG props","location":null,"status":"passed","title":"should handle all the SVG props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle aria and data attributes","location":null,"status":"passed","title":"should handle aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle uppercase aria and data attributes","location":null,"status":"passed","title":"should handle uppercase aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the event handlers","location":null,"status":"passed","title":"should allow all the event handlers"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should not allow custom props","location":null,"status":"passed","title":"should not allow custom props"}],"endTime":1526410174520,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/validAttr.test.js","startTime":1526410174196,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate empty classes with no styles","location":null,"status":"passed","title":"should generate empty classes with no styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to both classes if only parent has styles","location":null,"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to child class if only child has styles","location":null,"status":"passed","title":"should attach styles to child class if only child has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate a class for the child with the rules of the parent","location":null,"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate different classes for both parent and child","location":null,"status":"passed","title":"should generate different classes for both parent and child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should copy nested rules to the child","location":null,"status":"passed","title":"should copy nested rules to the child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep default props from parent","location":null,"status":"passed","title":"should keep default props from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep prop types from parent","location":null,"status":"passed","title":"should keep prop types from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep custom static member from parent","location":null,"status":"passed","title":"should keep custom static member from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep static member in triple inheritance","location":null,"status":"passed","title":"should keep static member in triple inheritance"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep styles in >= 3 inheritances","location":null,"status":"passed","title":"should keep styles in >= 3 inheritances"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component","location":null,"status":"passed","title":"should allow changing component"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and extending","location":null,"status":"passed","title":"should allow changing component and extending"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and adding attributes","location":null,"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1526410174715,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/extending.test.js","startTime":1526410174232,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not throw an error when called with a valid element","location":null,"status":"passed","title":"should not throw an error when called with a valid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with an invalid element","location":null,"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not inject anything by default","location":null,"status":"passed","title":"should not inject anything by default"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject component class when rendered even if no styles are passed","location":null,"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject styles","location":null,"status":"passed","title":"should inject styles"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject only once for a styled component, no matter how often it's mounted","location":null,"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic Should have the correct styled(component) displayName","location":null,"status":"passed","title":"Should have the correct styled(component) displayName"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should allow you to pass in style objects","location":null,"status":"passed","title":"should allow you to pass in style objects"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the ref to the component","location":null,"status":"passed","title":"should pass the ref to the component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not leak the innerRef prop to the wrapped child","location":null,"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the full className to the wrapped child","location":null,"status":"passed","title":"should pass the full className to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the innerRef to the wrapped styled component","location":null,"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should respect the order of StyledComponent creation for CSS ordering","location":null,"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests handle media at-rules inside style rules","location":null,"status":"passed","title":"handle media at-rules inside style rules"}],"endTime":1526410174724,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/basic.test.js","startTime":1526410174232,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append a style","location":null,"status":"passed","title":"should append a style"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append multiple styles","location":null,"status":"passed","title":"should append multiple styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects","location":null,"status":"passed","title":"should handle inline style objects"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with media queries","location":null,"status":"passed","title":"should handle inline style objects with media queries"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with nesting","location":null,"status":"passed","title":"should handle inline style objects with nesting"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with contextual selectors","location":null,"status":"passed","title":"should handle inline style objects with contextual selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components","location":null,"status":"passed","title":"should inject styles of multiple components"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components based on creation, not rendering order","location":null,"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should strip a JS-style (invalid) comment in the styles","location":null,"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should respect removed rules","location":null,"status":"passed","title":"should respect removed rules"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should add a webpack nonce to the style tags if one is available in the global scope","location":null,"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1526410174728,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/styles.test.js","startTime":1526410174270,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should use given stylesheet instance","location":null,"status":"passed","title":"should use given stylesheet instance"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target","location":null,"status":"passed","title":"should append style to given target"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target in iframe","location":null,"status":"passed","title":"should append style to given target in iframe"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should apply styles to appropriate targets for nested StyleSheetManagers","location":null,"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should inject styles into two parallel contexts","location":null,"status":"passed","title":"should inject styles into two parallel contexts"},{"ancestorTitles":["StyleSheetManager","ssr"],"failureMessages":[],"fullName":"StyleSheetManager ssr should extract CSS outside the nested StyleSheetManager","location":null,"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1526410174764,"message":"","name":"/Users/thymikee/Projects/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1526410174238,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component","location":null,"status":"passed","title":"should inject props.theme into a styled component"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component multiple levels deep","location":null,"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to fallback to its default props when a theme is not provided","location":null,"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly set the theme with an empty object when no theme is provided and no defaults are set","location":null,"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only inject props.theme into styled components within its child component tree","location":null,"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into all styled components within the child component tree","location":null,"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject new CSS when the theme changes","location":null,"status":"passed","title":"should inject new CSS when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly render with the same theme from default props on re-render","location":null,"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if theme is changed","location":null,"status":"passed","title":"should properly update style if theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if props used in styles is changed","location":null,"status":"passed","title":"should properly update style if props used in styles is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should change the classnames when the theme changes","location":null,"status":"passed","title":"should change the classnames when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a component that uses withTheme hoc","location":null,"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update theme prop on hoc component when theme is changed","location":null,"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme after initial render","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should hoist static properties when using withTheme","location":null,"status":"passed","title":"should hoist static properties when using withTheme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only pass the theme prop","location":null,"status":"passed","title":"should only pass the theme prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on as ref","location":null,"status":"passed","title":"should accept innerRef and pass it on as ref"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for stateless function components","location":null,"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for styled components","location":null,"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should not break without a ThemeProvier if it has a defaultTheme","location":null,"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1526410174813,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/theme.test.js","startTime":1526410174198,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should append a new component like normal","location":null,"status":"passed","title":"should append a new component like normal"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId","location":null,"status":"passed","title":"should reuse a componentId"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and generated class","location":null,"status":"passed","title":"should reuse a componentId and generated class"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and inject new classes","location":null,"status":"passed","title":"should reuse a componentId and inject new classes"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should not inject new styles for a component already rendered","location":null,"status":"passed","title":"should not inject new styles for a component already rendered"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should inject new styles for a new computed style of a component","location":null,"status":"passed","title":"should inject new styles for a new computed style of a component"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should generate new classes, even if they have the same name","location":null,"status":"passed","title":"should generate new classes, even if they have the same name"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should inject new global styles at the end","location":null,"status":"passed","title":"should inject new global styles at the end"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should interleave global and local styles","location":null,"status":"passed","title":"should interleave global and local styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should replace stylesheets on-demand","location":null,"status":"passed","title":"should replace stylesheets on-demand"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not change styles if rendered in the same order they were created with","location":null,"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should still not change styles if rendered in a different order","location":null,"status":"passed","title":"should still not change styles if rendered in a different order"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not regenerate keyframes","location":null,"status":"passed","title":"should not regenerate keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should still inject new keyframes","location":null,"status":"passed","title":"should still inject new keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should pass the keyframes name along as well","location":null,"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1526410174829,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/rehydration.test.js","startTime":1526410174266,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styled"],"failureMessages":[],"fullName":"styled should have all valid HTML5 elements defined as properties","location":null,"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1526410175015,"message":"","name":"/Users/thymikee/Projects/styled-components/src/constructors/test/styled.test.js","startTime":1526410174928,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should not throw an error when no children are passed","location":null,"status":"passed","title":"should not throw an error when no children are passed"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should accept a theme prop that's a plain object","location":null,"status":"passed","title":"should accept a theme prop that's a plain object"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with an outer theme","location":null,"status":"passed","title":"should merge its theme with an outer theme"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with multiple outer themes","location":null,"status":"passed","title":"should merge its theme with multiple outer themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should be able to render two independent themes","location":null,"status":"passed","title":"should be able to render two independent themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider ThemeProvider propagates theme updates through nested ThemeProviders","location":null,"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1526410175041,"message":"","name":"/Users/thymikee/Projects/styled-components/src/models/test/ThemeProvider.test.js","startTime":1526410174935,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract the CSS in a simple case","location":null,"status":"passed","title":"should extract the CSS in a simple case"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract both global and local CSS","location":null,"status":"passed","title":"should extract both global and local CSS"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should not spill ServerStyleSheets into each other","location":null,"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should add a nonce to the stylesheet if webpack nonce is detected in the global scope","location":null,"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should render CSS in the order the components were defined, not rendered","location":null,"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should share global styles but keep renders separate","location":null,"status":"passed","title":"should share global styles but keep renders separate"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should allow global styles to be injected during rendering","location":null,"status":"passed","title":"should allow global styles to be injected during rendering"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should dispatch global styles to each ServerStyleSheet","location":null,"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element","location":null,"status":"passed","title":"should return a generated React style element"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element with nonce if webpack nonce is preset in the global scope","location":null,"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should interleave styles with rendered HTML when utilitizing streaming","location":null,"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1526410175049,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/ssr.test.js","startTime":1526410174934,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten handles nested objects","location":null,"status":"passed","title":"handles nested objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings class instances","location":null,"status":"passed","title":"toStrings class instances"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten passes values to function","location":null,"status":"passed","title":"passes values to function"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten recursively calls functions","location":null,"status":"passed","title":"recursively calls functions"}],"endTime":1526410175105,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/flatten.test.js","startTime":1526410175038,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs work fine with an empty object","location":null,"status":"passed","title":"work fine with an empty object"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass a simple attr","location":null,"status":"passed","title":"pass a simple attr"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs call an attr function","location":null,"status":"passed","title":"call an attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass props to the attr function","location":null,"status":"passed","title":"pass props to the attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should replace attrs with props","location":null,"status":"passed","title":"should replace attrs with props"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className","location":null,"status":"passed","title":"should merge className"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className even if its a function","location":null,"status":"passed","title":"should merge className even if its a function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should work with data and aria attributes","location":null,"status":"passed","title":"should work with data and aria attributes"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs","location":null,"status":"passed","title":"merge attrs"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs when inheriting SC","location":null,"status":"passed","title":"merge attrs when inheriting SC"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass attrs to style block","location":null,"status":"passed","title":"pass attrs to style block"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through children as a normal prop","location":null,"status":"passed","title":"should pass through children as a normal prop"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through complex children as well","location":null,"status":"passed","title":"should pass through complex children as well"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should override children of course","location":null,"status":"passed","title":"should override children of course"}],"endTime":1526410175144,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/attrs.test.js","startTime":1526410174993,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be auto-generated if none passed","location":null,"status":"passed","title":"should be auto-generated if none passed"},{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be attached if supplied","location":null,"status":"passed","title":"should be attached if supplied"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated as \"sc\" + hash","location":null,"status":"passed","title":"should be generated as \"sc\" + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated from displayName + hash","location":null,"status":"passed","title":"should be generated from displayName + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be attached if passed in","location":null,"status":"passed","title":"should be attached if passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be combined with displayName if both passed in","location":null,"status":"passed","title":"should be combined with displayName if both passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.extend`","location":null,"status":"passed","title":"should work with `.extend`"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.withComponent`","location":null,"status":"passed","title":"should work with `.withComponent`"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should merge the options strings","location":null,"status":"passed","title":"should merge the options strings"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should keep the last value passed in when merging","location":null,"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1526410175163,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/expanded-api.test.js","startTime":1526410175023,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext merges strings","location":null,"status":"passed","title":"merges strings"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves rulesets after executing functions","location":null,"status":"passed","title":"resolves rulesets after executing functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves double nested rulesets after executing functions","location":null,"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1526410175253,"message":"","name":"/Users/thymikee/Projects/styled-components/src/no-parser/test/flatten.test.js","startTime":1526410175187,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should inject rules into the head","location":null,"status":"passed","title":"should inject rules into the head"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called repeatedly","location":null,"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called after a component","location":null,"status":"passed","title":"should non-destructively inject styles when called after a component"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should extract @import rules into separate style tags","location":null,"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1526410175289,"message":"","name":"/Users/thymikee/Projects/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1526410175168,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes in the right order","location":null,"status":"passed","title":"should add vendor prefixes in the right order"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes for display","location":null,"status":"passed","title":"should add vendor prefixes for display"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should generate styles for nested media queries","location":null,"status":"passed","title":"should generate styles for nested media queries"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should pass through custom properties","location":null,"status":"passed","title":"should pass through custom properties"}],"endTime":1526410175310,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/css.test.js","startTime":1526410175217,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with default SC_ATTR","location":null,"status":"passed","title":"should work with default SC_ATTR"},{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with custom SC_ATTR","location":null,"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1526410175336,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/constants.test.js","startTime":1526410175255,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles without any functions as static","location":null,"status":"passed","title":"should mark styles without any functions as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a nested styled component as static","location":null,"status":"passed","title":"should mark styles with a nested styled component as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a dynamic style as not static","location":null,"status":"passed","title":"should mark styles with a dynamic style as not static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with numeric attriutes as static","location":null,"status":"passed","title":"should mark components with numeric attriutes as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with dynamic attributes as not static","location":null,"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1526410175346,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/staticCaching.test.js","startTime":1526410175277,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and fall back","location":null,"status":"passed","title":"should execute interpolations and fall back"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and inject props","location":null,"status":"passed","title":"should execute interpolations and inject props"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should ignore non-0 falsy object interpolations","location":null,"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1526410175352,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/props.test.js","startTime":1526410175294,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn once","location":null,"status":"passed","title":"should warn once"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn if number of classes is 200","location":null,"status":"passed","title":"should warn if number of classes is 200"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should not warn if number of classes is below 200","location":null,"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1526410175375,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/warnTooManyClasses.test.js","startTime":1526410174703,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1526410175424,"message":"","name":"/Users/thymikee/Projects/styled-components/src/no-parser/test/keyframes.test.js","startTime":1526410175375,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should return its name","location":null,"status":"passed","title":"should return its name"},{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should insert the correct styles","location":null,"status":"passed","title":"should insert the correct styles"}],"endTime":1526410175588,"message":"","name":"/Users/thymikee/Projects/styled-components/src/constructors/test/keyframes.test.js","startTime":1526410175551,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with null","location":null,"status":"passed","title":"should throw a meaningful error when called with null"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly execute passed functions and assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1526410175513,"message":"","name":"/Users/thymikee/Projects/styled-components/src/no-parser/test/basic.test.js","startTime":1526410175459,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styleNames","addNameForId"],"failureMessages":[],"fullName":"styleNames addNameForId adds an id and a name to a given dictionary","location":null,"status":"passed","title":"adds an id and a name to a given dictionary"},{"ancestorTitles":["styleNames","resetIdNames"],"failureMessages":[],"fullName":"styleNames resetIdNames removes all names for an ID","location":null,"status":"passed","title":"removes all names for an ID"},{"ancestorTitles":["styleNames","hasNameForId"],"failureMessages":[],"fullName":"styleNames hasNameForId checks the existance of a name for an id","location":null,"status":"passed","title":"checks the existance of a name for an id"},{"ancestorTitles":["styleNames","stringifyNames"],"failureMessages":[],"fullName":"styleNames stringifyNames lists out all known names as a continuous string","location":null,"status":"passed","title":"lists out all known names as a continuous string"},{"ancestorTitles":["styleNames","cloneNames"],"failureMessages":[],"fullName":"styleNames cloneNames creates a deep clone of the names dictionary","location":null,"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1526410175572,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/styleNames.test.js","startTime":1526410175536,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should let you use another component in a css rule","location":null,"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1526410175573,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/overriding.test.js","startTime":1526410175535,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces characters that could be part of CSS selectors","location":null,"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces double hyphens with a single hyphen","location":null,"status":"passed","title":"replaces double hyphens with a single hyphen"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape removes extraneous hyphens at the ends of the string","location":null,"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1526410175575,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/escape.test.js","startTime":1526410175546,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should take precedence over ThemeProvider","location":null,"status":"passed","title":"should take precedence over ThemeProvider"},{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should fallback to default theme","location":null,"status":"passed","title":"should fallback to default theme"}],"endTime":1526410175886,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/determineTheme.test.js","startTime":1526410175856,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should create alphabetic names for number input data","location":null,"status":"passed","title":"should create alphabetic names for number input data"},{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should not fail for numbers above int32 limit","location":null,"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1526410175887,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1526410175857,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName defaults to reusing the component displayName","location":null,"status":"passed","title":"defaults to reusing the component displayName"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName falls back to the class name","location":null,"status":"passed","title":"falls back to the class name"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName ultimately falls back to \"Component\"","location":null,"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1526410175889,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/getComponentName.test.js","startTime":1526410175851,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should work for null or empty","location":null,"status":"passed","title":"should work for null or empty"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should ignore anything before the first SC","location":null,"status":"passed","title":"should ignore anything before the first SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC","location":null,"status":"passed","title":"should return a single SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC with multiple lines","location":null,"status":"passed","title":"should return a single SC with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with single lines","location":null,"status":"passed","title":"should return multiple SCs with single lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with multiple lines","location":null,"status":"passed","title":"should return multiple SCs with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should include whitespace after a component","location":null,"status":"passed","title":"should include whitespace after a component"}],"endTime":1526410175893,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1526410175858,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave blindly interleave","location":null,"status":"passed","title":"blindly interleave"},{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave should be driven off the number of interpolations","location":null,"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1526410175894,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/interleave.test.js","startTime":1526410175856,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file diff --git a/test-utils/setupTestFramework.js b/test-utils/setupTestFramework.js new file mode 100644 index 000000000..6e68bc82b --- /dev/null +++ b/test-utils/setupTestFramework.js @@ -0,0 +1,18 @@ +// @flow +const consoleError = console.error + +beforeEach(() => { + // Suppress errors from JSDOM CSS parser + // See: https://github.com/jsdom/jsdom/issues/2177 + // eslint-disable-next-line flowtype-errors/show-errors + console.error = message => { + if (!message.includes('Error: Could not parse CSS stylesheet')) { + consoleError(message) + } + } +}) + +afterEach(() => { + // eslint-disable-next-line flowtype-errors/show-errors + console.error = consoleError +}) diff --git a/yarn.lock b/yarn.lock index ac08dac9e..097fe43f2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,20 @@ # yarn lockfile v1 +"@babel/code-frame@^7.0.0-beta.35": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz#d18c2f4c4ba8d093a2bcfab5616593bfe2441a27" + dependencies: + "@babel/highlight" "7.0.0-beta.47" + +"@babel/highlight@7.0.0-beta.47": + version "7.0.0-beta.47" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.47.tgz#8fbc83fb2a21f0bd2b95cdbeb238cf9689cad494" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + "@types/node@*": version "9.3.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5" @@ -29,7 +43,7 @@ dependencies: csstype "^2.2.0" -abab@^1.0.3: +abab@^1.0.3, abab@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" @@ -61,6 +75,12 @@ acorn-globals@^3.1.0: dependencies: acorn "^4.0.4" +acorn-globals@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.1.0.tgz#ab716025dbe17c54d3ef81d32ece2b2d99fe2538" + dependencies: + acorn "^5.0.0" + acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" @@ -75,6 +95,10 @@ acorn@^4.0.1, acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" +acorn@^5.0.0, acorn@^5.3.0: + version "5.5.3" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" + acorn@^5.2.1: version "5.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" @@ -141,7 +165,7 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" -ansi-escapes@^1.0.0, ansi-escapes@^1.1.0, ansi-escapes@^1.4.0: +ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" @@ -155,7 +179,7 @@ ansi-gray@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-regex@^2.0.0, ansi-regex@^2.1.1: +ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -167,7 +191,7 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.0.0, ansi-styles@^3.1.0, ansi-styles@^3.2.0: +ansi-styles@^3.1.0, ansi-styles@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -345,6 +369,10 @@ assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + async-each@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" @@ -595,13 +623,12 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-20.0.3.tgz#e4a03b13dc10389e140fc645d09ffc4ced301671" +babel-jest@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.3.tgz#4b7a0b6041691bbd422ab49b3b73654a49a6627a" dependencies: - babel-core "^6.0.0" - babel-plugin-istanbul "^4.0.0" - babel-preset-jest "^20.0.3" + babel-plugin-istanbul "^4.1.5" + babel-preset-jest "^22.4.3" babel-messages@^6.23.0: version "6.23.0" @@ -634,17 +661,18 @@ babel-plugin-flow-react-proptypes@^2.1.3: babel-traverse "^6.18.0" babel-types "^6.18.0" -babel-plugin-istanbul@^4.0.0: - version "4.1.5" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz#6760cdd977f411d3e175bb064f2bc327d99b2b6e" +babel-plugin-istanbul@^4.1.5: + version "4.1.6" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" dependencies: + babel-plugin-syntax-object-rest-spread "^6.13.0" find-up "^2.1.0" - istanbul-lib-instrument "^1.7.5" - test-exclude "^4.1.1" + istanbul-lib-instrument "^1.10.1" + test-exclude "^4.2.1" -babel-plugin-jest-hoist@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz#afedc853bd3f8dc3548ea671fbe69d03cc2c1767" +babel-plugin-jest-hoist@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.3.tgz#7d8bcccadc2667f96a0dcc6afe1891875ee6c14a" babel-plugin-react-transform@2.0.2: version "2.0.2" @@ -672,7 +700,7 @@ babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.5.0, babel-plugin-sy version "6.18.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" -babel-plugin-syntax-object-rest-spread@^6.5.0, babel-plugin-syntax-object-rest-spread@^6.8.0: +babel-plugin-syntax-object-rest-spread@^6.13.0, babel-plugin-syntax-object-rest-spread@^6.5.0, babel-plugin-syntax-object-rest-spread@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" @@ -1096,11 +1124,12 @@ babel-preset-flow@^6.23.0: dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" -babel-preset-jest@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz#cbacaadecb5d689ca1e1de1360ebfc66862c178a" +babel-preset-jest@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.3.tgz#e92eef9813b7026ab4ca675799f37419b5a44156" dependencies: - babel-plugin-jest-hoist "^20.0.3" + babel-plugin-jest-hoist "^22.4.3" + babel-plugin-syntax-object-rest-spread "^6.13.0" babel-preset-react-native@^1.9.1, babel-preset-react-native@^1.9.2: version "1.9.2" @@ -1406,6 +1435,25 @@ braces@^2.3.0: split-string "^3.0.2" to-regex "^3.0.1" +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +browser-process-hrtime@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" + browser-resolve@^1.11.0, browser-resolve@^1.11.2: version "1.11.2" resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.2.tgz#8ff09b0a2c421718a1051c260b32e48f442938ce" @@ -1437,6 +1485,10 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" +buffer-from@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" + buffer@^5.0.3: version "5.0.8" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.0.8.tgz#84daa52e7cf2fa8ce4195bc5cf0f7809e0930b24" @@ -1506,7 +1558,7 @@ callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" -camelcase@4.1.0, camelcase@^4.0.0: +camelcase@4.1.0, camelcase@^4.0.0, camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -1522,6 +1574,12 @@ caniuse-lite@^1.0.30000792: version "1.0.30000792" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000792.tgz#d0cea981f8118f3961471afbb43c9a1e5bbf0332" +capture-exit@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f" + dependencies: + rsvp "^3.3.3" + capture-stack-trace@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" @@ -1610,6 +1668,10 @@ chokidar@^2.0.0: optionalDependencies: fsevents "^1.0.0" +chownr@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" + ci-env@^1.4.0: version "1.5.2" resolved "https://registry.yarnpkg.com/ci-env/-/ci-env-1.5.2.tgz#6a1f025f32a3a14a8197359bf0cdb56699e4be2d" @@ -1690,6 +1752,14 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + clone-stats@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" @@ -1745,6 +1815,10 @@ commander@^2.11.0, commander@^2.12.2, commander@^2.9.0, commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" +compare-versions@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.2.1.tgz#a49eb7689d4caaf0b6db5220173fd279614000f7" + component-emitter@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" @@ -2108,6 +2182,14 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +data-urls@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.0.0.tgz#24802de4e81c298ea8a9388bb0d8e461c774684f" + dependencies: + abab "^1.0.4" + whatwg-mimetype "^2.0.0" + whatwg-url "^6.4.0" + date-fns@^1.27.2: version "1.29.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" @@ -2126,7 +2208,7 @@ debug@2.6.7: dependencies: ms "2.0.0" -debug@2.6.9, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.2, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -2201,6 +2283,13 @@ define-property@^1.0.0: dependencies: is-descriptor "^1.0.0" +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + del@^2.0.2: version "2.2.2" resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" @@ -2255,6 +2344,10 @@ detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" +detect-newline@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" + detect-port@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.2.1.tgz#a2c0a048aa9df2b703fc54bb4436ce2118f09b5a" @@ -2302,6 +2395,12 @@ domelementtype@~1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" +domexception@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + dependencies: + webidl-conversions "^4.0.2" + domhandler@^2.3.0: version "2.4.1" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" @@ -2438,7 +2537,7 @@ errorhandler@~1.4.2: accepts "~1.3.0" escape-html "~1.0.3" -es-abstract@^1.4.3: +es-abstract@^1.4.3, es-abstract@^1.5.1: version "1.11.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.11.0.tgz#cce87d518f0496893b1a30cd8461835535480681" dependencies: @@ -2551,6 +2650,17 @@ escodegen@^1.6.1: optionalDependencies: source-map "~0.5.6" +escodegen@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + escope@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" @@ -2818,6 +2928,10 @@ exit-hook@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -2842,6 +2956,17 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expect@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" + dependencies: + ansi-styles "^3.2.0" + jest-diff "^22.4.3" + jest-get-type "^22.4.3" + jest-matcher-utils "^22.4.3" + jest-message-util "^22.4.3" + jest-regex-util "^22.4.3" + express-session@~1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.11.3.tgz#5cc98f3f5ff84ed835f91cbf0aabd0c7107400af" @@ -2897,7 +3022,7 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0: +extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" dependencies: @@ -2922,7 +3047,7 @@ extglob@^0.3.1: dependencies: is-extglob "^1.0.0" -extglob@^2.0.2: +extglob@^2.0.2, extglob@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" dependencies: @@ -3251,6 +3376,12 @@ fs-extra@^1.0.0: jsonfile "^2.1.0" klaw "^1.0.0" +fs-minipass@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" + dependencies: + minipass "^2.2.1" + fs-readdir-recursive@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -3266,6 +3397,13 @@ fsevents@^1.0.0: nan "^2.3.0" node-pre-gyp "^0.6.39" +fsevents@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426" + dependencies: + nan "^2.9.2" + node-pre-gyp "^0.10.0" + fstream-ignore@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" @@ -3658,7 +3796,7 @@ hosted-git-info@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" -html-encoding-sniffer@^1.0.1: +html-encoding-sniffer@^1.0.1, html-encoding-sniffer@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" dependencies: @@ -3746,6 +3884,12 @@ iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" +iconv-lite@^0.4.4: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" @@ -3754,6 +3898,12 @@ ignore-by-default@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + dependencies: + minimatch "^3.0.4" + ignore@^3.2.0: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" @@ -3766,6 +3916,13 @@ import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -3942,7 +4099,7 @@ is-descriptor@^0.1.0: is-data-descriptor "^0.1.4" kind-of "^5.0.0" -is-descriptor@^1.0.0: +is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" dependencies: @@ -3998,6 +4155,10 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +is-generator-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -4052,6 +4213,10 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -4068,6 +4233,12 @@ is-odd@^1.0.0: dependencies: is-number "^3.0.0" +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -4156,6 +4327,10 @@ is-windows@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.1.tgz#310db70f742d259a16a369202b51af84233310d9" +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" @@ -4193,131 +4368,153 @@ isstream@0.1.2, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-api@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.2.1.tgz#0c60a0515eb11c7d65c6b50bba2c6e999acd8620" +istanbul-api@^1.1.14: + version "1.3.1" + resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" dependencies: async "^2.1.4" + compare-versions "^3.1.0" fileset "^2.0.2" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-hook "^1.1.0" - istanbul-lib-instrument "^1.9.1" - istanbul-lib-report "^1.1.2" - istanbul-lib-source-maps "^1.2.2" - istanbul-reports "^1.1.3" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-hook "^1.2.0" + istanbul-lib-instrument "^1.10.1" + istanbul-lib-report "^1.1.4" + istanbul-lib-source-maps "^1.2.4" + istanbul-reports "^1.3.0" js-yaml "^3.7.0" mkdirp "^0.5.1" once "^1.4.0" -istanbul-lib-coverage@^1.0.1, istanbul-lib-coverage@^1.1.1: +istanbul-lib-coverage@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" -istanbul-lib-hook@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz#8538d970372cb3716d53e55523dd54b557a8d89b" +istanbul-lib-coverage@^1.1.2, istanbul-lib-coverage@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" + +istanbul-lib-hook@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.0.tgz#ae556fd5a41a6e8efa0b1002b1e416dfeaf9816c" dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.4.2, istanbul-lib-instrument@^1.7.5, istanbul-lib-instrument@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz#250b30b3531e5d3251299fdd64b0b2c9db6b558e" +istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.8.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" dependencies: babel-generator "^6.18.0" babel-template "^6.16.0" babel-traverse "^6.18.0" babel-types "^6.18.0" babylon "^6.18.0" - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.2.0" semver "^5.3.0" -istanbul-lib-report@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz#922be27c13b9511b979bd1587359f69798c1d425" +istanbul-lib-report@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.4.tgz#e886cdf505c4ebbd8e099e4396a90d0a28e2acb5" dependencies: - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.2.0" mkdirp "^0.5.1" path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.1.0, istanbul-lib-source-maps@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz#750578602435f28a0c04ee6d7d9e0f2960e62c1c" +istanbul-lib-source-maps@^1.2.1: + version "1.2.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6" dependencies: debug "^3.1.0" - istanbul-lib-coverage "^1.1.1" + istanbul-lib-coverage "^1.1.2" mkdirp "^0.5.1" rimraf "^2.6.1" source-map "^0.5.3" -istanbul-reports@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.1.3.tgz#3b9e1e8defb6d18b1d425da8e8b32c5a163f2d10" +istanbul-lib-source-maps@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" + dependencies: + debug "^3.1.0" + istanbul-lib-coverage "^1.2.0" + mkdirp "^0.5.1" + rimraf "^2.6.1" + source-map "^0.5.3" + +istanbul-reports@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.3.0.tgz#2f322e81e1d9520767597dca3c20a0cce89a3554" dependencies: handlebars "^4.0.3" -jest-changed-files@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-20.0.3.tgz#9394d5cc65c438406149bef1bf4d52b68e03e3f8" +jest-changed-files@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2" + dependencies: + throat "^4.0.0" -jest-cli@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-20.0.4.tgz#e532b19d88ae5bc6c417e8b0593a6fe954b1dc93" +jest-cli@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.3.tgz#bf16c4a5fb7edc3fa5b9bb7819e34139e88a72c7" dependencies: - ansi-escapes "^1.4.0" - callsites "^2.0.0" - chalk "^1.1.3" + ansi-escapes "^3.0.0" + chalk "^2.0.1" + exit "^0.1.2" + glob "^7.1.2" graceful-fs "^4.1.11" + import-local "^1.0.0" is-ci "^1.0.10" - istanbul-api "^1.1.1" - istanbul-lib-coverage "^1.0.1" - istanbul-lib-instrument "^1.4.2" - istanbul-lib-source-maps "^1.1.0" - jest-changed-files "^20.0.3" - jest-config "^20.0.4" - jest-docblock "^20.0.3" - jest-environment-jsdom "^20.0.3" - jest-haste-map "^20.0.4" - jest-jasmine2 "^20.0.4" - jest-message-util "^20.0.3" - jest-regex-util "^20.0.3" - jest-resolve-dependencies "^20.0.3" - jest-runtime "^20.0.4" - jest-snapshot "^20.0.3" - jest-util "^20.0.3" + istanbul-api "^1.1.14" + istanbul-lib-coverage "^1.1.1" + istanbul-lib-instrument "^1.8.0" + istanbul-lib-source-maps "^1.2.1" + jest-changed-files "^22.4.3" + jest-config "^22.4.3" + jest-environment-jsdom "^22.4.3" + jest-get-type "^22.4.3" + jest-haste-map "^22.4.3" + jest-message-util "^22.4.3" + jest-regex-util "^22.4.3" + jest-resolve-dependencies "^22.4.3" + jest-runner "^22.4.3" + jest-runtime "^22.4.3" + jest-snapshot "^22.4.3" + jest-util "^22.4.3" + jest-validate "^22.4.3" + jest-worker "^22.4.3" micromatch "^2.3.11" - node-notifier "^5.0.2" - pify "^2.3.0" + node-notifier "^5.2.1" + realpath-native "^1.0.0" + rimraf "^2.5.4" slash "^1.0.0" - string-length "^1.0.1" - throat "^3.0.0" + string-length "^2.0.0" + strip-ansi "^4.0.0" which "^1.2.12" - worker-farm "^1.3.1" - yargs "^7.0.2" + yargs "^10.0.3" -jest-config@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-20.0.4.tgz#e37930ab2217c913605eff13e7bd763ec48faeea" +jest-config@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403" dependencies: - chalk "^1.1.3" + chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^20.0.3" - jest-environment-node "^20.0.3" - jest-jasmine2 "^20.0.4" - jest-matcher-utils "^20.0.3" - jest-regex-util "^20.0.3" - jest-resolve "^20.0.4" - jest-validate "^20.0.3" - pretty-format "^20.0.3" - -jest-diff@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-20.0.3.tgz#81f288fd9e675f0fb23c75f1c2b19445fe586617" + jest-environment-jsdom "^22.4.3" + jest-environment-node "^22.4.3" + jest-get-type "^22.4.3" + jest-jasmine2 "^22.4.3" + jest-regex-util "^22.4.3" + jest-resolve "^22.4.3" + jest-util "^22.4.3" + jest-validate "^22.4.3" + pretty-format "^22.4.3" + +jest-diff@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" dependencies: - chalk "^1.1.3" + chalk "^2.0.1" diff "^3.2.0" - jest-matcher-utils "^20.0.3" - pretty-format "^20.0.3" + jest-get-type "^22.4.3" + pretty-format "^22.4.3" jest-docblock@^20.0.3: version "20.0.3" @@ -4327,25 +4524,35 @@ jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" -jest-environment-jsdom@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz#048a8ac12ee225f7190417713834bb999787de99" +jest-docblock@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19" dependencies: - jest-mock "^20.0.3" - jest-util "^20.0.3" - jsdom "^9.12.0" + detect-newline "^2.1.0" -jest-environment-node@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-20.0.3.tgz#d488bc4612af2c246e986e8ae7671a099163d403" +jest-environment-jsdom@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" dependencies: - jest-mock "^20.0.3" - jest-util "^20.0.3" + jest-mock "^22.4.3" + jest-util "^22.4.3" + jsdom "^11.5.1" + +jest-environment-node@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" + dependencies: + jest-mock "^22.4.3" + jest-util "^22.4.3" jest-get-type@^21.2.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" +jest-get-type@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + jest-haste-map@^20.0.4: version "20.0.5" resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-20.0.5.tgz#abad74efb1a005974a7b6517e11010709cab9112" @@ -4357,133 +4564,164 @@ jest-haste-map@^20.0.4: sane "~1.6.0" worker-farm "^1.3.1" -jest-image-snapshot@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/jest-image-snapshot/-/jest-image-snapshot-2.2.0.tgz#48b9aa6d9545e55b1eae4086454694ce80f8f434" +jest-haste-map@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.3.tgz#25842fa2ba350200767ac27f658d58b9d5c2e20b" + dependencies: + fb-watchman "^2.0.0" + graceful-fs "^4.1.11" + jest-docblock "^22.4.3" + jest-serializer "^22.4.3" + jest-worker "^22.4.3" + micromatch "^2.3.11" + sane "^2.0.0" + +jest-image-snapshot@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jest-image-snapshot/-/jest-image-snapshot-2.4.1.tgz#9da6a86515a9a6fec7c4964b7a6859cd366c6459" dependencies: chalk "^1.1.3" + get-stdin "^5.0.1" lodash "^4.17.4" mkdirp "^0.5.1" pixelmatch "^4.0.2" - pngjs "^3.3.0" + pngjs "^3.3.3" + rimraf "^2.6.2" -jest-jasmine2@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz#fcc5b1411780d911d042902ef1859e852e60d5e1" +jest-jasmine2@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz#4daf64cd14c793da9db34a7c7b8dcfe52a745965" dependencies: - chalk "^1.1.3" + chalk "^2.0.1" + co "^4.6.0" + expect "^22.4.3" graceful-fs "^4.1.11" - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-matchers "^20.0.3" - jest-message-util "^20.0.3" - jest-snapshot "^20.0.3" - once "^1.4.0" - p-map "^1.1.1" + is-generator-fn "^1.0.0" + jest-diff "^22.4.3" + jest-matcher-utils "^22.4.3" + jest-message-util "^22.4.3" + jest-snapshot "^22.4.3" + jest-util "^22.4.3" + source-map-support "^0.5.0" -jest-matcher-utils@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz#b3a6b8e37ca577803b0832a98b164f44b7815612" +jest-leak-detector@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz#2b7b263103afae8c52b6b91241a2de40117e5b35" dependencies: - chalk "^1.1.3" - pretty-format "^20.0.3" + pretty-format "^22.4.3" -jest-matchers@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-matchers/-/jest-matchers-20.0.3.tgz#ca69db1c32db5a6f707fa5e0401abb55700dfd60" +jest-matcher-utils@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" dependencies: - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-message-util "^20.0.3" - jest-regex-util "^20.0.3" + chalk "^2.0.1" + jest-get-type "^22.4.3" + pretty-format "^22.4.3" -jest-message-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-20.0.3.tgz#6aec2844306fcb0e6e74d5796c1006d96fdd831c" +jest-message-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" dependencies: - chalk "^1.1.3" + "@babel/code-frame" "^7.0.0-beta.35" + chalk "^2.0.1" micromatch "^2.3.11" slash "^1.0.0" + stack-utils "^1.0.1" -jest-mock@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-20.0.3.tgz#8bc070e90414aa155c11a8d64c869a0d5c71da59" +jest-mock@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" -jest-regex-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-20.0.3.tgz#85bbab5d133e44625b19faf8c6aa5122d085d762" +jest-regex-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" -jest-resolve-dependencies@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz#6e14a7b717af0f2cb3667c549de40af017b1723a" +jest-resolve-dependencies@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz#e2256a5a846732dc3969cb72f3c9ad7725a8195e" dependencies: - jest-regex-util "^20.0.3" + jest-regex-util "^22.4.3" -jest-resolve@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-20.0.4.tgz#9448b3e8b6bafc15479444c6499045b7ffe597a5" +jest-resolve@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" dependencies: browser-resolve "^1.11.2" - is-builtin-module "^1.0.0" - resolve "^1.3.2" + chalk "^2.0.1" -jest-runtime@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-20.0.4.tgz#a2c802219c4203f754df1404e490186169d124d8" +jest-runner@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.3.tgz#298ddd6a22b992c64401b4667702b325e50610c3" + dependencies: + exit "^0.1.2" + jest-config "^22.4.3" + jest-docblock "^22.4.3" + jest-haste-map "^22.4.3" + jest-jasmine2 "^22.4.3" + jest-leak-detector "^22.4.3" + jest-message-util "^22.4.3" + jest-runtime "^22.4.3" + jest-util "^22.4.3" + jest-worker "^22.4.3" + throat "^4.0.0" + +jest-runtime@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.3.tgz#b69926c34b851b920f666c93e86ba2912087e3d0" dependencies: babel-core "^6.0.0" - babel-jest "^20.0.3" - babel-plugin-istanbul "^4.0.0" - chalk "^1.1.3" + babel-jest "^22.4.3" + babel-plugin-istanbul "^4.1.5" + chalk "^2.0.1" convert-source-map "^1.4.0" + exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^20.0.4" - jest-haste-map "^20.0.4" - jest-regex-util "^20.0.3" - jest-resolve "^20.0.4" - jest-util "^20.0.3" + jest-config "^22.4.3" + jest-haste-map "^22.4.3" + jest-regex-util "^22.4.3" + jest-resolve "^22.4.3" + jest-util "^22.4.3" + jest-validate "^22.4.3" json-stable-stringify "^1.0.1" micromatch "^2.3.11" + realpath-native "^1.0.0" + slash "^1.0.0" strip-bom "3.0.0" - yargs "^7.0.2" + write-file-atomic "^2.1.0" + yargs "^10.0.3" -jest-snapshot@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-20.0.3.tgz#5b847e1adb1a4d90852a7f9f125086e187c76566" +jest-serializer@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.3.tgz#a679b81a7f111e4766235f4f0c46d230ee0f7436" + +jest-snapshot@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" dependencies: - chalk "^1.1.3" - jest-diff "^20.0.3" - jest-matcher-utils "^20.0.3" - jest-util "^20.0.3" + chalk "^2.0.1" + jest-diff "^22.4.3" + jest-matcher-utils "^22.4.3" + mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^20.0.3" + pretty-format "^22.4.3" -jest-styled-components@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/jest-styled-components/-/jest-styled-components-5.0.0.tgz#258f64c0a9c388042fb6b5d40af71ec11cec82f2" +jest-styled-components@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/jest-styled-components/-/jest-styled-components-5.0.1.tgz#386c5a161a0f5e783444d624bfc18c6d228d1277" dependencies: css "^2.2.1" -jest-util@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-20.0.3.tgz#0c07f7d80d82f4e5a67c6f8b9c3fe7f65cfd32ad" +jest-util@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" dependencies: - chalk "^1.1.3" + callsites "^2.0.0" + chalk "^2.0.1" graceful-fs "^4.1.11" - jest-message-util "^20.0.3" - jest-mock "^20.0.3" - jest-validate "^20.0.3" - leven "^2.1.0" + is-ci "^1.0.10" + jest-message-util "^22.4.3" mkdirp "^0.5.1" - -jest-validate@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-20.0.3.tgz#d0cfd1de4f579f298484925c280f8f1d94ec3cab" - dependencies: - chalk "^1.1.3" - jest-matcher-utils "^20.0.3" - leven "^2.1.0" - pretty-format "^20.0.3" + source-map "^0.6.0" jest-validate@^21.1.0: version "21.2.1" @@ -4494,11 +4732,28 @@ jest-validate@^21.1.0: leven "^2.1.0" pretty-format "^21.2.1" -jest@^20.0.4: - version "20.0.4" - resolved "https://registry.yarnpkg.com/jest/-/jest-20.0.4.tgz#3dd260c2989d6dad678b1e9cc4d91944f6d602ac" +jest-validate@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30" dependencies: - jest-cli "^20.0.4" + chalk "^2.0.1" + jest-config "^22.4.3" + jest-get-type "^22.4.3" + leven "^2.1.0" + pretty-format "^22.4.3" + +jest-worker@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.4.3.tgz#5c421417cba1c0abf64bf56bd5fb7968d79dd40b" + dependencies: + merge-stream "^1.0.1" + +jest@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.3.tgz#2261f4b117dc46d9a4a1a673d2150958dee92f16" + dependencies: + import-local "^1.0.0" + jest-cli "^22.4.3" js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" @@ -4515,7 +4770,38 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jsdom@^9.10.0, jsdom@^9.12.0: +jsdom@^11.5.1: + version "11.10.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.10.0.tgz#a42cd54e88895dc765f03f15b807a474962ac3b5" + dependencies: + abab "^1.0.4" + acorn "^5.3.0" + acorn-globals "^4.1.0" + array-equal "^1.0.0" + cssom ">= 0.3.2 < 0.4.0" + cssstyle ">= 0.2.37 < 0.3.0" + data-urls "^1.0.0" + domexception "^1.0.0" + escodegen "^1.9.0" + html-encoding-sniffer "^1.0.2" + left-pad "^1.2.0" + nwmatcher "^1.4.3" + parse5 "4.0.0" + pn "^1.1.0" + request "^2.83.0" + request-promise-native "^1.0.5" + sax "^1.2.4" + symbol-tree "^3.2.2" + tough-cookie "^2.3.3" + w3c-hr-time "^1.0.1" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.3" + whatwg-mimetype "^2.1.0" + whatwg-url "^6.4.0" + ws "^4.0.0" + xml-name-validator "^3.0.0" + +jsdom@^9.10.0: version "9.12.0" resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-9.12.0.tgz#e8c546fffcb06c00d4833ca84410fed7f8a097d4" dependencies: @@ -4674,6 +4960,10 @@ left-pad@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.2.0.tgz#d30a73c6b8201d8f7d8e7956ba9616087a68e0ee" +left-pad@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e" + leven@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" @@ -4895,6 +5185,10 @@ lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + lodash.template@^3.0.0: version "3.6.2" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" @@ -5006,6 +5300,12 @@ media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -5137,6 +5437,24 @@ micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +micromatch@^3.1.8: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + "mime-db@>= 1.30.0 < 2": version "1.32.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.32.0.tgz#485b3848b01a3cda5f968b4882c0771e58e09414" @@ -5183,6 +5501,10 @@ mime@^1.3.4: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" +mime@^2.0.3: + version "2.3.1" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.3.1.tgz#b1621c54d63b97c47d3cfe7f7215f7d64517c369" + mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" @@ -5211,6 +5533,19 @@ minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" +minipass@^2.2.1, minipass@^2.2.4: + version "2.3.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.0.tgz#2e11b1c46df7fe7f1afbe9a490280add21ffe384" + dependencies: + safe-buffer "^5.1.1" + yallist "^3.0.0" + +minizlib@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.0.tgz#11e13658ce46bc3a70a267aac58359d1e0c29ceb" + dependencies: + minipass "^2.2.1" + mixin-deep@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.0.tgz#47a8732ba97799457c8c1eca28f95132d7e8150a" @@ -5281,6 +5616,10 @@ nan@^2.3.0: version "2.8.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" +nan@^2.9.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" + nanomatch@^1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.7.tgz#53cd4aa109ff68b7f869591fdc9d10daeeea3e79" @@ -5297,6 +5636,23 @@ nanomatch@^1.2.5: snapdragon "^0.8.1" to-regex "^3.0.1" +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5309,6 +5665,14 @@ nearley@^2.7.10: railroad-diagrams "^1.0.0" randexp "^0.4.2" +needle@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.1.tgz#b5e325bd3aae8c2678902fa296f729455d1d3a7d" + dependencies: + debug "^2.1.2" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.5.3.tgz#269d5c476810ec92edbe7b6c2f28316384f9a7e8" @@ -5332,7 +5696,7 @@ node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" -node-notifier@^5.0.2: +node-notifier@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.2.1.tgz#fa313dd08f5517db0e2502e5758d664ac69f9dea" dependencies: @@ -5341,6 +5705,21 @@ node-notifier@^5.0.2: shellwords "^0.1.1" which "^1.3.0" +node-pre-gyp@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz#6e4ef5bb5c5203c6552448828c852c40111aac46" + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.0" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.1.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + node-pre-gyp@^0.6.39: version "0.6.39" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" @@ -5422,6 +5801,17 @@ normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +npm-bundled@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" + +npm-packlist@^1.1.6: + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-path@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" @@ -5493,6 +5883,10 @@ number-is-nan@^1.0.0: version "1.4.3" resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" +nwmatcher@^1.4.3: + version "1.4.4" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" + oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -5549,6 +5943,13 @@ object.entries@^1.0.4: function-bind "^1.1.0" has "^1.0.1" +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + object.omit@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" @@ -5650,6 +6051,14 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -5751,6 +6160,10 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parse5@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + parse5@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" @@ -5853,7 +6266,7 @@ performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -pify@^2.0.0, pify@^2.3.0: +pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -5887,6 +6300,12 @@ pkg-dir@^1.0.0: dependencies: find-up "^1.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + pkginfo@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/pkginfo/-/pkginfo-0.4.0.tgz#349dbb7ffd38081fcadc0853df687f0c7744cd65" @@ -5912,10 +6331,18 @@ pluralize@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" -pngjs@^3.0.0, pngjs@^3.3.0: +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + +pngjs@^3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.3.1.tgz#8e14e6679ee7424b544334c3b2d21cea6d8c209a" +pngjs@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.3.3.tgz#85173703bde3edac8998757b96e5821d0966a21b" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" @@ -5940,13 +6367,6 @@ prettier@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.9.2.tgz#96bc2132f7a32338e6078aeb29727178c6335827" -pretty-format@^20.0.3: - version "20.0.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-20.0.3.tgz#020e350a560a1fe1a98dc3beb6ccffb386de8b14" - dependencies: - ansi-regex "^2.1.1" - ansi-styles "^3.0.0" - pretty-format@^21.2.1: version "21.2.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" @@ -5954,6 +6374,13 @@ pretty-format@^21.2.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" +pretty-format@^22.4.3: + version "22.4.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + pretty-format@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-4.3.1.tgz#530be5c42b3c05b36414a7a2a4337aa80acd0e8d" @@ -6033,14 +6460,18 @@ punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -puppeteer@^0.13.0: - version "0.13.0" - resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-0.13.0.tgz#2e6956205f2c640964c2107f620ae1eef8bde8fd" +punycode@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + +puppeteer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-1.4.0.tgz#437f0f3450d76e437185c0bf06f446e80f184692" dependencies: - debug "^2.6.8" + debug "^3.1.0" extract-zip "^1.6.5" https-proxy-agent "^2.1.0" - mime "^1.3.4" + mime "^2.0.3" progress "^2.0.0" proxy-from-env "^1.0.0" rimraf "^2.6.1" @@ -6415,6 +6846,12 @@ readline2@^1.0.1: is-fullwidth-code-point "^1.0.0" mute-stream "0.0.5" +realpath-native@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" + dependencies: + util.promisify "^1.0.0" + rebound@^0.0.13: version "0.0.13" resolved "https://registry.yarnpkg.com/rebound/-/rebound-0.0.13.tgz#4a225254caf7da756797b19c5817bf7a7941fac1" @@ -6461,6 +6898,13 @@ regex-not@^1.0.0: dependencies: extend-shallow "^2.0.1" +regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -6514,6 +6958,20 @@ replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" +request-promise-core@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6" + dependencies: + lodash "^4.13.1" + +request-promise-native@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5" + dependencies: + request-promise-core "1.1.1" + stealthy-require "^1.1.0" + tough-cookie ">=2.3.3" + request@2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -6568,6 +7026,32 @@ request@^2.79.0: tunnel-agent "^0.6.0" uuid "^3.1.0" +request@^2.83.0: + version "2.86.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.86.0.tgz#2b9497f449b0a32654c081a5cf426bbfb5bf5b69" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + hawk "~6.0.2" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -6587,10 +7071,20 @@ require-uncached@^1.0.2: caller-path "^0.1.0" resolve-from "^1.0.0" +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + resolve-url@^0.2.1, resolve-url@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -6599,7 +7093,7 @@ resolve@1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2, resolve@^1.5.0: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: @@ -6640,7 +7134,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -6748,6 +7242,10 @@ rst-selector-parser@^2.2.3: lodash.flattendeep "^4.4.0" nearley "^2.7.10" +rsvp@^3.3.3: + version "3.6.2" + resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" + run-async@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" @@ -6784,10 +7282,39 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, s version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +safe-buffer@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + safe-buffer@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +sane@^2.0.0: + version "2.5.2" + resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa" + dependencies: + anymatch "^2.0.0" + capture-exit "^1.2.0" + exec-sh "^0.2.0" + fb-watchman "^2.0.0" + micromatch "^3.1.4" + minimist "^1.1.1" + walker "~1.0.5" + watch "~0.18.0" + optionalDependencies: + fsevents "^1.2.3" + sane@~1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/sane/-/sane-1.4.1.tgz#88f763d74040f5f0c256b6163db399bf110ac715" @@ -6811,7 +7338,7 @@ sane@~1.6.0: walker "~1.0.5" watch "~0.10.0" -sax@^1.2.1: +sax@^1.2.1, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -7108,6 +7635,13 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" +source-map-support@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -7132,7 +7666,7 @@ source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@~0.6.1: +source-map@^0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -7184,6 +7718,10 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" +stack-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" + stacktrace-parser@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.4.tgz#01397922e5f62ecf30845522c95c4fe1d25e7d4e" @@ -7211,6 +7749,10 @@ statuses@~1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" +stealthy-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + stream-buffers@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" @@ -7237,11 +7779,12 @@ string-hash@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" -string-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-1.0.1.tgz#56970fb1c38558e9e70b728bf3de269ac45adfac" +string-length@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed" dependencies: - strip-ansi "^3.0.0" + astral-regex "^1.0.0" + strip-ansi "^4.0.0" string-similarity@1.1.0: version "1.1.0" @@ -7373,7 +7916,7 @@ symbol-observable@^0.2.2: version "0.2.4" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" -symbol-tree@^3.2.1: +symbol-tree@^3.2.1, symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" @@ -7409,6 +7952,18 @@ tar@^2.2.1: fstream "^1.0.2" inherits "2" +tar@^4: + version "4.4.2" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.2.tgz#60685211ba46b38847b1ae7ee1a24d744a2cd462" + dependencies: + chownr "^1.0.1" + fs-minipass "^1.2.5" + minipass "^2.2.4" + minizlib "^1.1.0" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.2" + temp@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -7428,12 +7983,12 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -test-exclude@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.1.1.tgz#4d84964b0966b0087ecc334a2ce002d3d9341e26" +test-exclude@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.1.tgz#dfa222f03480bca69207ca728b37d74b45f724fa" dependencies: arrify "^1.0.1" - micromatch "^2.3.11" + micromatch "^3.1.8" object-assign "^4.1.0" read-pkg-up "^1.0.1" require-main-filename "^1.0.1" @@ -7446,6 +8001,10 @@ throat@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/throat/-/throat-3.2.0.tgz#50cb0670edbc40237b9e347d7e1f88e4620af836" +throat@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" + through2@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" @@ -7500,18 +8059,39 @@ to-regex@^3.0.1: extend-shallow "^2.0.1" regex-not "^1.0.0" +to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + touch@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" dependencies: nopt "~1.0.10" +tough-cookie@>=2.3.3, tough-cookie@^2.3.3: + version "2.3.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" + dependencies: + punycode "^1.4.1" + tough-cookie@^2.3.2, tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + dependencies: + punycode "^2.1.0" + tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -7750,6 +8330,13 @@ util-deprecate@1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +util.promisify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + utils-merge@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" @@ -7819,6 +8406,12 @@ voca@^1.3.1: version "1.4.0" resolved "https://registry.yarnpkg.com/voca/-/voca-1.4.0.tgz#e15ac58b38290b72acc0c330366b6cc7984924d7" +w3c-hr-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045" + dependencies: + browser-process-hrtime "^0.1.2" + walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" @@ -7829,15 +8422,22 @@ watch@~0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/watch/-/watch-0.10.0.tgz#77798b2da0f9910d595f1ace5b0c2258521f21dc" +watch@~0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986" + dependencies: + exec-sh "^0.2.0" + minimist "^1.2.0" + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" -webidl-conversions@^4.0.0: +webidl-conversions@^4.0.0, webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" -whatwg-encoding@^1.0.1: +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz#57c235bc8657e914d24e1a397d3c82daee0a6ba3" dependencies: @@ -7851,6 +8451,10 @@ whatwg-fetch@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-1.1.1.tgz#ac3c9d39f320c6dce5339969d054ef43dd333319" +whatwg-mimetype@^2.0.0, whatwg-mimetype@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz#f0f21d76cbba72362eb609dbed2a30cd17fcc7d4" + whatwg-url@^4.3.0: version "4.8.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-4.8.0.tgz#d2981aa9148c1e00a41c5a6131166ab4683bbcc0" @@ -7858,10 +8462,22 @@ whatwg-url@^4.3.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" +whatwg-url@^6.4.0: + version "6.4.1" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.4.1.tgz#fdb94b440fd4ad836202c16e9737d511f012fd67" + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + which@^1.2.10, which@^1.2.12, which@^1.2.8, which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" @@ -7932,7 +8548,7 @@ write-file-atomic@^1.2.0: imurmurhash "^0.1.4" slide "^1.1.5" -write-file-atomic@^2.0.0: +write-file-atomic@^2.0.0, write-file-atomic@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab" dependencies: @@ -7968,6 +8584,13 @@ ws@^3.0.0: safe-buffer "~5.1.0" ultron "~1.1.0" +ws@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-4.1.0.tgz#a979b5d7d4da68bf54efe0408967c324869a7289" + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + xcode@^0.9.1: version "0.9.3" resolved "https://registry.yarnpkg.com/xcode/-/xcode-0.9.3.tgz#910a89c16aee6cc0b42ca805a6d0b4cf87211cf3" @@ -7984,6 +8607,10 @@ xml-name-validator@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + xmlbuilder@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-4.0.0.tgz#98b8f651ca30aa624036f127d11cc66dc7b907a3" @@ -8020,6 +8647,10 @@ yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yallist@^3.0.0, yallist@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9" + yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -8033,11 +8664,28 @@ yargs-parser@^4.2.0: dependencies: camelcase "^3.0.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" +yargs-parser@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" dependencies: - camelcase "^3.0.0" + camelcase "^4.1.0" + +yargs@^10.0.3: + version "10.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^8.1.0" yargs@^4.8.0: version "4.8.1" @@ -8076,24 +8724,6 @@ yargs@^6.4.0: y18n "^3.2.1" yargs-parser "^4.2.0" -yargs@^7.0.2: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" From 1d2f06d6c27ef79b2df2bceafbf42b7b7bf961ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Tue, 15 May 2018 22:11:17 +0200 Subject: [PATCH 02/39] Set testURL to silence JSDOM relative url error --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index bb1f97612..32af308a5 100644 --- a/package.json +++ b/package.json @@ -155,6 +155,7 @@ "globals": { "__DEV__": true }, + "testURL": "http://localhost", "clearMocks": true, "roots": [ "/src/" From 2025ccbc6249ca7921496fe9fb1b4a43389463b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Tue, 15 May 2018 22:33:38 +0200 Subject: [PATCH 03/39] Fix flow --- src/test/warnTooManyClasses.test.js | 4 ++-- test-utils/setupTestFramework.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/warnTooManyClasses.test.js b/src/test/warnTooManyClasses.test.js index 71bdf0fd7..adb8e76f9 100644 --- a/src/test/warnTooManyClasses.test.js +++ b/src/test/warnTooManyClasses.test.js @@ -14,13 +14,13 @@ describe('warn too many classes', () => { * Make sure the setup is the same for every test */ beforeEach(() => { - console.warn = () => warnCallCount++ + (console: any).warn = () => warnCallCount++ warnCallCount = 0 styled = resetStyled() }) afterEach(() => { - console.warn = consoleWarn + (console: any).warn = consoleWarn }) it('should warn once', () => { diff --git a/test-utils/setupTestFramework.js b/test-utils/setupTestFramework.js index 6e68bc82b..a16f70bf1 100644 --- a/test-utils/setupTestFramework.js +++ b/test-utils/setupTestFramework.js @@ -5,7 +5,7 @@ beforeEach(() => { // Suppress errors from JSDOM CSS parser // See: https://github.com/jsdom/jsdom/issues/2177 // eslint-disable-next-line flowtype-errors/show-errors - console.error = message => { + ;(console: any).error = message => { if (!message.includes('Error: Could not parse CSS stylesheet')) { consoleError(message) } @@ -14,5 +14,5 @@ beforeEach(() => { afterEach(() => { // eslint-disable-next-line flowtype-errors/show-errors - console.error = consoleError + ;(console: any).error = consoleError }) From 87bf0d7acd644928337c63cdc0316df4bfdee4de Mon Sep 17 00:00:00 2001 From: halvves Date: Sun, 20 May 2018 21:37:39 -0400 Subject: [PATCH 04/39] chore: upgrade flow-bin to latest upgrades flow-bin along with other dependencies necessary to keep flow checks running properly. also corrects all new warning/errors surfaced by the upgrade (save for a few $flowFixMe TODOs) --- .flowconfig | 1 - flow-typed/webpack-hotmodule.js | 31 ++++++++++++++++++++++++ package.json | 6 ++--- src/hoc/withTheme.js | 10 ++++---- src/models/StyleSheet.js | 2 +- src/models/StyleSheetManager.js | 11 +++++---- src/models/StyleTags.js | 11 +++++---- src/models/StyledComponent.js | 12 +++++++--- src/models/StyledNativeComponent.js | 14 ++++++++--- src/models/ThemeProvider.js | 7 +++--- src/test/basic.test.js | 14 +++++------ src/test/theme.test.js | 8 +++---- src/types.js | 4 +++- src/utils/getComponentName.js | 4 ++-- src/utils/isStyledComponent.js | 1 + src/utils/styleNames.js | 6 ++--- yarn.lock | 37 ++++++++--------------------- 17 files changed, 105 insertions(+), 74 deletions(-) create mode 100644 flow-typed/webpack-hotmodule.js diff --git a/.flowconfig b/.flowconfig index 6699ccfb1..b3951bd22 100644 --- a/.flowconfig +++ b/.flowconfig @@ -22,4 +22,3 @@ [options] suppress_comment=.*\\$FlowFixMe suppress_comment=.*\\$FlowInvalidInputTest -unsafe.enable_getters_and_setters=true diff --git a/flow-typed/webpack-hotmodule.js b/flow-typed/webpack-hotmodule.js new file mode 100644 index 000000000..1fa99551d --- /dev/null +++ b/flow-typed/webpack-hotmodule.js @@ -0,0 +1,31 @@ +// see: https://github.com/flowtype/flow-typed/issues/165 + +declare type ModuleHotStatus = + | 'idle' // The process is waiting for a call to check (see below) + | 'check' // The process is checking for updates + | 'prepare' // The process is getting ready for the update (e.g. downloading the updated module) + | 'ready' // The update is prepared and available + | 'dispose' // The process is calling the dispose handlers on the modules that will be replaced + | 'apply' // The process is calling the accept handlers and re-executing self-accepted modules + | 'abort' // An update was aborted, but the system is still in it's previous state + | 'fail' // An update has thrown an exception and the system's state has been compromised + ; + +declare type ModuleHotStatusHandler = (status: ModuleHotStatus) => any + +declare interface ModuleHot { + data: any; + accept(paths?: string | Array, callback?: () => any): void; + decline(paths?: string | Array): void; + dispose(callback: (data?: mixed) => any): void; + addDisposeHandler(callback: (data: mixed) => any): void; + status(): ModuleHotStatus; + check(autoApply: boolean | Object): Promise; // TODO + apply(options: Object): Promise; // TODO + addStatusHandler(callback: ModuleHotStatusHandler): void; + removeStatusHandler(callback: ModuleHotStatusHandler): void; +}; + +declare var module: { + hot?: ModuleHot, +}; diff --git a/package.json b/package.json index b7b13711c..d394353d8 100644 --- a/package.json +++ b/package.json @@ -107,14 +107,14 @@ "eslint": "^3.15.0", "eslint-config-airbnb": "^13.0.0", "eslint-config-prettier": "^2.9.0", - "eslint-plugin-flowtype": "^2.40.1", - "eslint-plugin-flowtype-errors": "^2.0.1", + "eslint-plugin-flowtype": "^2.46.3", + "eslint-plugin-flowtype-errors": "^3.5.1", "eslint-plugin-import": "^2.2.0", "eslint-plugin-jsx-a11y": "^2.0.2", "eslint-plugin-prettier": "^2.4.0", "eslint-plugin-react": "^6.8.0", "express": "^4.14.1", - "flow-bin": "^0.47.0", + "flow-bin": "^0.72.0", "flow-watch": "^1.1.1", "husky": "^0.14.3", "jest": "^20.0.4", diff --git a/src/hoc/withTheme.js b/src/hoc/withTheme.js index 906cb1ca9..7eab8d959 100644 --- a/src/hoc/withTheme.js +++ b/src/hoc/withTheme.js @@ -1,7 +1,5 @@ // @flow -/* globals ReactClass */ - -import React from 'react' +import React, { type ComponentType } from 'react' import PropTypes from 'prop-types' import hoistStatics from 'hoist-non-react-statics' import { @@ -12,18 +10,20 @@ import { import _isStyledComponent from '../utils/isStyledComponent' import determineTheme from '../utils/determineTheme' -const wrapWithTheme = (Component: ReactClass) => { +const wrapWithTheme = (Component: ComponentType) => { const componentName = Component.displayName || Component.name || 'Component' const isStatelessFunctionalComponent = typeof Component === 'function' && + // $FlowFixMe TODO: flow for prototype !(Component.prototype && 'isReactComponent' in Component.prototype) // NOTE: We can't pass a ref to a stateless functional component const shouldSetInnerRef = _isStyledComponent(Component) || isStatelessFunctionalComponent - class WithTheme extends React.Component { + class WithTheme extends React.Component<*, *> { static displayName = `WithTheme(${componentName})` + static defaultProps: Object // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping static styledComponentId = 'withTheme' diff --git a/src/models/StyleSheet.js b/src/models/StyleSheet.js index debcb5fc6..c2c6e419a 100644 --- a/src/models/StyleSheet.js +++ b/src/models/StyleSheet.js @@ -309,7 +309,7 @@ class StyleSheet { return this.tags.map(tag => tag.toHTML()).join('') } - toReactElements() { + toReactElements(): Array<*> { const { id } = this return this.tags.map((tag, i) => { diff --git a/src/models/StyleSheetManager.js b/src/models/StyleSheetManager.js index 1edd03e24..3b9b90ded 100644 --- a/src/models/StyleSheetManager.js +++ b/src/models/StyleSheetManager.js @@ -15,12 +15,13 @@ The StyleSheetManager expects a valid target or sheet prop! `.trim() : '' -class StyleSheetManager extends Component { +type Props = { + sheet?: StyleSheet | null, + target?: HTMLElement | null, +} + +class StyleSheetManager extends Component { sheetInstance: StyleSheet - props: { - sheet?: StyleSheet | null, - target?: HTMLElement | null, - } getChildContext() { return { [CONTEXT_KEY]: this.sheetInstance } diff --git a/src/models/StyleTags.js b/src/models/StyleTags.js index 595b95e8e..95887ae6d 100644 --- a/src/models/StyleTags.js +++ b/src/models/StyleTags.js @@ -2,7 +2,7 @@ /* eslint-disable flowtype/object-type-delimiter */ /* eslint-disable react/prop-types */ -import React from 'react' +import React, { type Element } from 'react' import { IS_BROWSER, DISABLE_SPEEDY, SC_ATTR } from '../constants' import { type ExtractedComp } from '../utils/extractCompsFromCSS' import { splitByRules } from '../utils/stringifyRules' @@ -39,7 +39,7 @@ export interface Tag { removeRules(id: string): void; css(): string; toHTML(additionalAttrs: ?string): string; - toElement(): React.Element<*>; + toElement(): Element<*>; clone(): Tag; } @@ -151,7 +151,7 @@ const makeSpeedyTag = ( el: HTMLStyleElement, getImportRuleTag: ?() => Tag ): Tag => { - const names: Names = Object.create(null) + const names: Names = (Object.create(null): Object) const markers = Object.create(null) const sizes: number[] = [] @@ -257,7 +257,7 @@ const makeBrowserTag = ( el: HTMLStyleElement, getImportRuleTag: ?() => Tag ): Tag => { - const names = Object.create(null) + const names = (Object.create(null): Object) const markers = Object.create(null) const extractImport = getImportRuleTag !== undefined @@ -344,7 +344,8 @@ const makeBrowserTag = ( } const makeServerTagInternal = (namesArg, markersArg): Tag<[string]> => { - const names = namesArg === undefined ? Object.create(null) : namesArg + const names = + namesArg === undefined ? (Object.create(null): Object) : namesArg const markers = markersArg === undefined ? Object.create(null) : markersArg const insertMarker = id => { diff --git a/src/models/StyledComponent.js b/src/models/StyledComponent.js index 1dc02f010..ac92c2dc1 100644 --- a/src/models/StyledComponent.js +++ b/src/models/StyledComponent.js @@ -23,6 +23,11 @@ import ServerStyleSheet from './ServerStyleSheet' // an empty execution context every single time... const STATIC_EXECUTION_CONTEXT = {} +type BaseState = { + theme?: ?Theme, + generatedClassName?: string, +} + export default (ComponentStyle: Function, constructWithOptions: Function) => { const identifiers = {} @@ -53,11 +58,12 @@ export default (ComponentStyle: Function, constructWithOptions: Function) => { : componentId } - class BaseStyledComponent extends Component { + class BaseStyledComponent extends Component<*, BaseState> { static target: Target static styledComponentId: string static attrs: Object static componentStyle: Object + static defaultProps: Object static warnTooManyClasses: Function attrs = {} @@ -209,7 +215,7 @@ export default (ComponentStyle: Function, constructWithOptions: Function) => { .filter(Boolean) .join(' ') - const baseProps = { + const baseProps: any = { ...this.attrs, className, } @@ -284,7 +290,7 @@ export default (ComponentStyle: Function, constructWithOptions: Function) => { static componentStyle = componentStyle static target = target - static withComponent(tag) { + static withComponent(tag: Target) { const { componentId: previousComponentId, ...optionsToCopy } = options const newComponentId = diff --git a/src/models/StyledNativeComponent.js b/src/models/StyledNativeComponent.js index 798e9b73c..0ca0297fb 100644 --- a/src/models/StyledNativeComponent.js +++ b/src/models/StyledNativeComponent.js @@ -12,11 +12,17 @@ import type { RuleSet, Target } from '../types' import { CHANNEL, CHANNEL_NEXT, CONTEXT_CHANNEL_SHAPE } from './ThemeProvider' +type State = { + theme?: ?Theme, + generatedStyles: any, +} + export default (constructWithOptions: Function, InlineStyle: Function) => { - class BaseStyledNativeComponent extends Component { + class BaseStyledNativeComponent extends Component<*, State> { static target: Target static styledComponentId: string static attrs: Object + static defaultProps: Object static inlineStyle: Object root: ?Object @@ -118,7 +124,8 @@ export default (constructWithOptions: Function, InlineStyle: Function) => { console.warn( 'setNativeProps was called on a Styled Component wrapping a stateless functional component. ' + 'In this case no ref will be stored, and instead an innerRef prop will be passed on.\n' + - `Check whether the stateless functional component is passing on innerRef as a ref in ${displayName}.` + `Check whether the stateless functional component is passing on innerRef as a ref in ${displayName || + 'UnknownStyledNativeComponent'}.` ) } } @@ -155,6 +162,7 @@ export default (constructWithOptions: Function, InlineStyle: Function) => { !isStyledComponent(target) && // NOTE: We can't pass a ref to a stateless functional component (typeof target !== 'function' || + // $FlowFixMe TODO: flow for prototype (target.prototype && 'isReactComponent' in target.prototype)) ) { propsForElement.ref = this.onRef @@ -199,7 +207,7 @@ export default (constructWithOptions: Function, InlineStyle: Function) => { // NOTE: This is so that isStyledComponent passes for the innerRef unwrapping static styledComponentId = 'StyledNativeComponent' - static withComponent(tag) { + static withComponent(tag: Target) { const { displayName: _, componentId: __, ...optionsToCopy } = options const newOptions = { ...optionsToCopy, diff --git a/src/models/ThemeProvider.js b/src/models/ThemeProvider.js index 69bb0ed6d..37ddb92db 100644 --- a/src/models/ThemeProvider.js +++ b/src/models/ThemeProvider.js @@ -1,6 +1,5 @@ // @flow -/* globals React$Element */ -import React, { Component } from 'react' +import React, { Component, type Element } from 'react' import PropTypes from 'prop-types' import isPlainObject from 'is-plain-object' import createBroadcast from '../utils/create-broadcast' @@ -19,7 +18,7 @@ export const CONTEXT_CHANNEL_SHAPE = PropTypes.shape({ export type Theme = { [key: string]: mixed } type ThemeProviderProps = {| - children?: React$Element, + children?: Element, theme: Theme | ((outerTheme: Theme) => void), |} @@ -39,7 +38,7 @@ const isFunction = test => typeof test === 'function' * Provide a theme to an entire react component tree via context and event listeners (have to do * both context and event emitter as pure components block context updates) */ -class ThemeProvider extends Component { +class ThemeProvider extends Component { getTheme: (theme?: Theme | ((outerTheme: Theme) => void)) => Theme outerTheme: Theme unsubscribeToOuterId: string diff --git a/src/test/basic.test.js b/src/test/basic.test.js index 239a9c5d0..3702efa96 100644 --- a/src/test/basic.test.js +++ b/src/test/basic.test.js @@ -18,7 +18,7 @@ describe('basic', () => { expect(() => styled.div``).not.toThrowError() const FunctionalComponent = () =>
; - class ClassComponent extends React.Component{ + class ClassComponent extends Component<*, *> { render() { return
} @@ -34,7 +34,7 @@ describe('basic', () => { it('should throw a meaningful error when called with an invalid element', () => { const FunctionalComponent = () =>
; - class ClassComponent extends React.Component{ + class ClassComponent extends Component<*, *> { render() { return
} @@ -117,7 +117,7 @@ describe('basic', () => { it('should pass the ref to the component', () => { const Comp = styled.div`` - class Wrapper extends Component { + class Wrapper extends Component<*, *> { testRef: any; innerRef = (comp) => { this.testRef = comp } @@ -133,7 +133,7 @@ describe('basic', () => { expect(component.find('div').prop('innerRef')).toBeFalsy() }) - class InnerComponent extends Component { + class InnerComponent extends Component<*, *> { render() { return null } @@ -142,7 +142,7 @@ describe('basic', () => { it('should not leak the innerRef prop to the wrapped child', () => { const OuterComponent = styled(InnerComponent)`` - class Wrapper extends Component { + class Wrapper extends Component<*, *> { testRef: any; render() { @@ -160,7 +160,7 @@ describe('basic', () => { it('should pass the full className to the wrapped child', () => { const OuterComponent = styled(InnerComponent)`` - class Wrapper extends Component { + class Wrapper extends Component<*, *> { render() { return } @@ -175,7 +175,7 @@ describe('basic', () => { const InnerComponent = styled.div`` const OuterComponent = styled(InnerComponent)`` - class Wrapper extends Component { + class Wrapper extends Component<*, *> { testRef: any; innerRef = (comp) => { this.testRef = comp } diff --git a/src/test/theme.test.js b/src/test/theme.test.js index acbd17750..ad77ba5a8 100644 --- a/src/test/theme.test.js +++ b/src/test/theme.test.js @@ -1,5 +1,5 @@ // @flow -import React from 'react' +import React, { Component } from 'react' import { mount, render } from 'enzyme' import { resetStyled, expectCSSMatches } from './utils' @@ -375,7 +375,7 @@ describe('theming', () => { // https://github.com/styled-components/styled-components/issues/596 it('should hoist static properties when using withTheme', () => { - class MyComponent extends React.Component { + class MyComponent extends Component<*, *> { static myStaticProperty: boolean = true } @@ -385,7 +385,7 @@ describe('theming', () => { }) it('should only pass the theme prop', () => { - class Comp extends React.Component { + class Comp extends Component<*, *> { render() { return
} @@ -406,7 +406,7 @@ describe('theming', () => { }) it('should accept innerRef and pass it on as ref', () => { - class Comp extends React.Component { + class Comp extends Component<*, *> { render() { return
} diff --git a/src/types.js b/src/types.js index 9aa55595f..504410c48 100644 --- a/src/types.js +++ b/src/types.js @@ -1,4 +1,6 @@ // @flow +import type { ComponentType } from 'react' + export type Interpolation = | ((executionContext: Object) => Interpolation) | string @@ -10,7 +12,7 @@ export type RuleSet = Array export type Styles = Array | Object /* eslint-disable no-undef */ -export type Target = string | ReactClass<*> +export type Target = string | ComponentType<*> export type NameGenerator = (hash: number) => string diff --git a/src/utils/getComponentName.js b/src/utils/getComponentName.js index 50ebf169e..2a4410c8d 100644 --- a/src/utils/getComponentName.js +++ b/src/utils/getComponentName.js @@ -1,6 +1,6 @@ // @flow +import type { ComponentType } from 'react' -/* eslint-disable no-undef */ -export default function getComponentName(target: ReactClass<*>): string { +export default function getComponentName(target: ComponentType<*>): string { return target.displayName || target.name || 'Component' } diff --git a/src/utils/isStyledComponent.js b/src/utils/isStyledComponent.js index bf1d52c80..666586ff8 100644 --- a/src/utils/isStyledComponent.js +++ b/src/utils/isStyledComponent.js @@ -3,6 +3,7 @@ import type { Target } from '../types' export default function isStyledComponent(target: Target) /* : %checks */ { return ( + // $FlowFixMe TODO: flow for styledComponentId typeof target === 'function' && typeof target.styledComponentId === 'string' ) } diff --git a/src/utils/styleNames.js b/src/utils/styleNames.js index 9f9d01075..5dd2a98b6 100644 --- a/src/utils/styleNames.js +++ b/src/utils/styleNames.js @@ -11,7 +11,7 @@ export type Names = { [string]: { [string]: boolean } } export const addNameForId = (names: Names, id: string, name: ?string) => { if (name) { // eslint-disable-next-line no-param-reassign - const namesForId = names[id] || (names[id] = Object.create(null)) + const namesForId = names[id] || (names[id] = (Object.create(null): Object)) namesForId[name] = true } } @@ -19,7 +19,7 @@ export const addNameForId = (names: Names, id: string, name: ?string) => { /* resets an ID entirely by overwriting it in the dictionary */ export const resetIdNames = (names: Names, id: string) => { // eslint-disable-next-line no-param-reassign - names[id] = Object.create(null) + names[id] = (Object.create(null): Object) } /* factory for a names dictionary checking the existance of an ID:name pairing */ @@ -38,7 +38,7 @@ export const stringifyNames = (names: Names) => { /* clones the nested names dictionary */ export const cloneNames = (names: Names): Names => { - const clone = Object.create(null) + const clone = (Object.create(null): Object) // eslint-disable-next-line guard-for-in for (const id in names) { clone[id] = { ...names[id] } diff --git a/yarn.lock b/yarn.lock index ac08dac9e..4ebf94b12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -951,12 +951,6 @@ babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^ dependencies: regenerator-transform "^0.10.0" -babel-plugin-transform-runtime@^6.15.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz#88490d446502ea9b8e7efb0fe09ec4d99479b1ee" - dependencies: - babel-runtime "^6.22.0" - babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" @@ -2590,19 +2584,16 @@ eslint-module-utils@^2.1.1: debug "^2.6.8" pkg-dir "^1.0.0" -eslint-plugin-flowtype-errors@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype-errors/-/eslint-plugin-flowtype-errors-2.0.3.tgz#a2d9b02e2fd5d89482150f22f2f3074ae0ab2898" +eslint-plugin-flowtype-errors@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype-errors/-/eslint-plugin-flowtype-errors-3.5.1.tgz#ea69673407d51e6e9a9308cf56041bcd92d6756a" dependencies: - babel-plugin-transform-runtime "^6.15.0" - q "^1.4.1" - ramda "^0.22.1" - shelljs "^0.7.5" + babel-runtime "^6.26.0" slash "^1.0.0" -eslint-plugin-flowtype@^2.40.1: - version "2.41.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.41.0.tgz#fd5221c60ba917c059d7ef69686a99cca09fd871" +eslint-plugin-flowtype@^2.46.3: + version "2.46.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.46.3.tgz#7e84131d87ef18b496b1810448593374860b4e8e" dependencies: lodash "^4.15.0" @@ -3142,9 +3133,9 @@ flexibility@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flexibility/-/flexibility-2.0.1.tgz#ad323aafc40f469ce624286518fc4d7cd72b7c77" -flow-bin@^0.47.0: - version "0.47.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.47.0.tgz#a2a08ab3e0d1f1cb57d17e27b30b118b62fda367" +flow-bin@^0.72.0: + version "0.72.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.72.0.tgz#12051180fb2db7ccb728fefe67c77e955e92a44d" flow-remove-types@^1.1.0: version "1.2.3" @@ -6046,10 +6037,6 @@ puppeteer@^0.13.0: rimraf "^2.6.1" ws "^3.0.0" -q@^1.4.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - qs@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/qs/-/qs-4.0.0.tgz#c31d9b74ec27df75e543a86c78728ed8d4623607" @@ -6072,10 +6059,6 @@ railroad-diagrams@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" -ramda@^0.22.1: - version "0.22.1" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.22.1.tgz#031da0c3df417c5b33c96234757eb37033f36a0e" - randexp@^0.4.2: version "0.4.6" resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" From 134688178d20132bd185c8a6d7c42c7c32824c12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Tue, 22 May 2018 09:54:07 +0200 Subject: [PATCH 05/39] consoleWarn -> nativeWarn --- src/test/warnTooManyClasses.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/warnTooManyClasses.test.js b/src/test/warnTooManyClasses.test.js index adb8e76f9..43c82a6fd 100644 --- a/src/test/warnTooManyClasses.test.js +++ b/src/test/warnTooManyClasses.test.js @@ -8,7 +8,7 @@ import styleSheet from '../models/StyleSheet' let styled describe('warn too many classes', () => { - const consoleWarn = console.warn + const nativeWarn = console.warn let warnCallCount /** * Make sure the setup is the same for every test @@ -20,7 +20,7 @@ describe('warn too many classes', () => { }) afterEach(() => { - (console: any).warn = consoleWarn + (console: any).warn = nativeWarn }) it('should warn once', () => { From 80eebaf557da2729cd9cf166742da18bea5a8563 Mon Sep 17 00:00:00 2001 From: Valery Bugakov Date: Tue, 22 May 2018 18:56:15 +0400 Subject: [PATCH 06/39] Allow Class attr in styled-component --- src/models/StyledComponent.js | 4 +++- src/models/StyledNativeComponent.js | 4 +++- src/utils/isClass.js | 5 +++++ test-results.json | 2 +- typings/tests/attrs-test.tsx | 15 ++++++++------- 5 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 src/utils/isClass.js diff --git a/src/models/StyledComponent.js b/src/models/StyledComponent.js index 1dc02f010..9673a2179 100644 --- a/src/models/StyledComponent.js +++ b/src/models/StyledComponent.js @@ -12,6 +12,7 @@ import isStyledComponent from '../utils/isStyledComponent' import getComponentName from '../utils/getComponentName' import determineTheme from '../utils/determineTheme' import escape from '../utils/escape' +import isClass from '../utils/isClass' import type { RuleSet, Target } from '../types' import { CONTEXT_KEY } from '../constants' @@ -83,7 +84,8 @@ export default (ComponentStyle: Function, constructWithOptions: Function) => { this.attrs = Object.keys(attrs).reduce((acc, key) => { const attr = attrs[key] // eslint-disable-next-line no-param-reassign - acc[key] = typeof attr === 'function' ? attr(context) : attr + acc[key] = + typeof attr === 'function' && !isClass(attr) ? attr(context) : attr return acc }, {}) diff --git a/src/models/StyledNativeComponent.js b/src/models/StyledNativeComponent.js index 798e9b73c..4c7720911 100644 --- a/src/models/StyledNativeComponent.js +++ b/src/models/StyledNativeComponent.js @@ -5,6 +5,7 @@ import PropTypes from 'prop-types' import type { Theme } from './ThemeProvider' import isTag from '../utils/isTag' +import isClass from '../utils/isClass' import isStyledComponent from '../utils/isStyledComponent' import getComponentName from '../utils/getComponentName' import determineTheme from '../utils/determineTheme' @@ -44,7 +45,8 @@ export default (constructWithOptions: Function, InlineStyle: Function) => { this.attrs = Object.keys(attrs).reduce((acc, key) => { const attr = attrs[key] // eslint-disable-next-line no-param-reassign - acc[key] = typeof attr === 'function' ? attr(context) : attr + acc[key] = + typeof attr === 'function' && !isClass(attr) ? attr(context) : attr return acc }, {}) diff --git a/src/utils/isClass.js b/src/utils/isClass.js new file mode 100644 index 000000000..57e9ce4fe --- /dev/null +++ b/src/utils/isClass.js @@ -0,0 +1,5 @@ +// @flow + +export default function isClass(target: any) { + return typeof target === 'function' && /^\s*class\s+/.test(target.toString()) +} diff --git a/test-results.json b/test-results.json index 32d3b652c..c10d78766 100644 --- a/test-results.json +++ b/test-results.json @@ -1 +1 @@ -{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":20,"numPassedTests":156,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":20,"numTotalTests":156,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"unmatched":0,"updated":0},"startTime":1525942039890,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1525942040395,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/theme.test.js","startTime":1525942040176,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1525942040575,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/rehydration.test.js","startTime":1525942040476,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1525942040773,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/warnTooManyClasses.test.js","startTime":1525942040659,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1525942040866,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/styles.test.js","startTime":1525942040830,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should inject styles into two parallel contexts"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1525942040973,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1525942040922,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1525942041058,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/extending.test.js","startTime":1525942041024,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called with a valid element"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should allow you to pass in style objects"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"failureMessages":[],"status":"passed","title":"handle media at-rules inside style rules"}],"endTime":1525942041185,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/basic.test.js","startTime":1525942041146,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1525942041275,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/attrs.test.js","startTime":1525942041239,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1525942041356,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/expanded-api.test.js","startTime":1525942041327,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1525942041420,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/ssr.test.js","startTime":1525942041393,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work with default SC_ATTR"},{"failureMessages":[],"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1525942041507,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/constants.test.js","startTime":1525942041479,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1525942041586,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/constructors/test/styled.test.js","startTime":1525942041559,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"},{"failureMessages":[],"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1525942041658,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1525942041635,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1525942041734,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/css.test.js","startTime":1525942041709,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1525942041807,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/staticCaching.test.js","startTime":1525942041786,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1525942041920,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/constructors/test/keyframes.test.js","startTime":1525942041899,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1525942041991,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/no-parser/test/basic.test.js","startTime":1525942041970,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1525942042069,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/props.test.js","startTime":1525942042042,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1525942042138,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/test/overriding.test.js","startTime":1525942042119,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1525942042210,"message":"","name":"/Users/mxstbr/projects/github/styled-components/styled-components/src/no-parser/test/keyframes.test.js","startTime":1525942042190,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":31,"numPassedTests":226,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":31,"numTotalTests":226,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"unmatched":0,"updated":0},"startTime":1527000827956,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should allow all the reactProps"},{"failureMessages":[],"status":"passed","title":"should allow all the html props"},{"failureMessages":[],"status":"passed","title":"should handle all the SVG props"},{"failureMessages":[],"status":"passed","title":"should handle aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should handle uppercase aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should allow all the event handlers"},{"failureMessages":[],"status":"passed","title":"should not allow custom props"}],"endTime":1527000832728,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/validAttr.test.js","startTime":1527000830399,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527000833345,"message":"","name":"/Users/val/Desktop/styled-components/src/test/ssr.test.js","startTime":1527000830309,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called with a valid element"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should allow you to pass in style objects"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"failureMessages":[],"status":"passed","title":"handle media at-rules inside style rules"}],"endTime":1527000833365,"message":"","name":"/Users/val/Desktop/styled-components/src/test/basic.test.js","startTime":1527000830402,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527000833374,"message":"","name":"/Users/val/Desktop/styled-components/src/test/styles.test.js","startTime":1527000830425,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527000833478,"message":"","name":"/Users/val/Desktop/styled-components/src/test/rehydration.test.js","startTime":1527000830316,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527000833481,"message":"","name":"/Users/val/Desktop/styled-components/src/test/extending.test.js","startTime":1527000832999,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should inject styles into two parallel contexts"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527000833490,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527000830433,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527000833641,"message":"","name":"/Users/val/Desktop/styled-components/src/test/theme.test.js","startTime":1527000830403,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work for null or empty"},{"failureMessages":[],"status":"passed","title":"should ignore anything before the first SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC with multiple lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with single lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with multiple lines"},{"failureMessages":[],"status":"passed","title":"should include whitespace after a component"}],"endTime":1527000833817,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527000833702,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527000833852,"message":"","name":"/Users/val/Desktop/styled-components/src/test/expanded-api.test.js","startTime":1527000833604,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"handles nested objects"},{"failureMessages":[],"status":"passed","title":"toStrings class instances"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"passes values to function"},{"failureMessages":[],"status":"passed","title":"recursively calls functions"}],"endTime":1527000833859,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/flatten.test.js","startTime":1527000833692,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"merges strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"resolves rulesets after executing functions"},{"failureMessages":[],"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527000833902,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/flatten.test.js","startTime":1527000833712,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when no children are passed"},{"failureMessages":[],"status":"passed","title":"should accept a theme prop that's a plain object"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should merge its theme with an outer theme"},{"failureMessages":[],"status":"passed","title":"should merge its theme with multiple outer themes"},{"failureMessages":[],"status":"passed","title":"should be able to render two independent themes"},{"failureMessages":[],"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527000833902,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527000833594,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"},{"failureMessages":[],"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527000834030,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527000833843,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"adds an id and a name to a given dictionary"},{"failureMessages":[],"status":"passed","title":"removes all names for an ID"},{"failureMessages":[],"status":"passed","title":"checks the existance of a name for an id"},{"failureMessages":[],"status":"passed","title":"lists out all known names as a continuous string"},{"failureMessages":[],"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527000834141,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/styleNames.test.js","startTime":1527000834036,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527000834204,"message":"","name":"/Users/val/Desktop/styled-components/src/test/staticCaching.test.js","startTime":1527000834040,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1527000834226,"message":"","name":"/Users/val/Desktop/styled-components/src/test/css.test.js","startTime":1527000834061,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527000834247,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/basic.test.js","startTime":1527000834108,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1527000834379,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/keyframes.test.js","startTime":1527000834228,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527000834497,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527000834374,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527000834541,"message":"","name":"/Users/val/Desktop/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527000834108,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527000834586,"message":"","name":"/Users/val/Desktop/styled-components/src/test/props.test.js","startTime":1527000834423,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527000834609,"message":"","name":"/Users/val/Desktop/styled-components/src/test/overriding.test.js","startTime":1527000834479,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work with default SC_ATTR"},{"failureMessages":[],"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527000834618,"message":"","name":"/Users/val/Desktop/styled-components/src/test/constants.test.js","startTime":1527000834437,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"blindly interleave"},{"failureMessages":[],"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527000834687,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/interleave.test.js","startTime":1527000834588,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"defaults to reusing the component displayName"},{"failureMessages":[],"status":"passed","title":"falls back to the class name"},{"failureMessages":[],"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527000834808,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/getComponentName.test.js","startTime":1527000834707,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should take precedence over ThemeProvider"},{"failureMessages":[],"status":"passed","title":"should fallback to default theme"}],"endTime":1527000834826,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/determineTheme.test.js","startTime":1527000834751,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"failureMessages":[],"status":"passed","title":"replaces double hyphens with a single hyphen"},{"failureMessages":[],"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527000834857,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/escape.test.js","startTime":1527000834798,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should create alphabetic names for number input data"},{"failureMessages":[],"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527000834864,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527000834794,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1527000834944,"message":"","name":"/Users/val/Desktop/styled-components/src/test/attrs.test.js","startTime":1527000834633,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527000834978,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/styled.test.js","startTime":1527000834819,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file diff --git a/typings/tests/attrs-test.tsx b/typings/tests/attrs-test.tsx index b7d38a11b..c7c654d9a 100644 --- a/typings/tests/attrs-test.tsx +++ b/typings/tests/attrs-test.tsx @@ -3,17 +3,18 @@ import styled from "../.."; const Input = styled.input.attrs({ // we can define static props type: "password", + classAttr: class Text{}, // or we can define dynamic ones margin: (props: any) => props.size as string || "1em", padding: (props: any) => props.size as string || "1em" })` - color: palevioletred; - font-size: 1em; - border: 2px solid palevioletred; - border-radius: 3px; + color: palevioletred; + font-size: 1em; + border: 2px solid palevioletred; + border-radius: 3px; - /* here we use the dynamically computed props */ - margin: ${(props) => props.margin}; - padding: ${(props) => props.padding}; + /* here we use the dynamically computed props */ + margin: ${(props) => props.margin}; + padding: ${(props) => props.padding}; `; From ab849872586add0b31c17f79a098bc6cb9d2c21c Mon Sep 17 00:00:00 2001 From: Valery Bugakov Date: Tue, 22 May 2018 19:06:17 +0400 Subject: [PATCH 07/39] Added changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index da5946560..4b122b78f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ All notable changes to this project will be documented in this file. If a contri ## Unreleased +- Allow ES6 class attrs in styled-component, by [@valerybugakov](https://github.com/valerybugakov) (see [#1751](https://github.com/styled-components/styled-components/pull/1751)) + - Fix off-by-one error in insertRuleHelpers.js, by [@migueloller](https://github.com/migueloller) (see [#1749](https://github.com/styled-components/styled-components/pull/1749)) - Add first-class support for objects: From f6e817ead554b2a67133a237d9e8323ca89ba210 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Fri, 25 May 2018 01:08:27 -0400 Subject: [PATCH 08/39] v3.3.0 --- CHANGELOG.md | 19 ++++++++++++------- package.json | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a108daba..4a9b3b898 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,13 @@ _The format is based on [Keep a Changelog](http://keepachangelog.com/) and this ## Unreleased -* Fix off-by-one error in insertRuleHelpers.js, by [@migueloller](https://github.com/migueloller) (see [#1749](https://github.com/styled-components/styled-components/pull/1749)) +- n/a -* Add first-class support for objects: +## [v3.3.0] - 2018-05-25 + +* Fix off-by-one error in insertRuleHelpers.js, by @migueloller (see #1749) + +* Add first-class support for objects, by @mxstbr (see #1732) ```JS const Component = styled.div({ @@ -16,15 +20,15 @@ _The format is based on [Keep a Changelog](http://keepachangelog.com/) and this }) ``` -- Fix typo in console warning about multiple instances, by [@lucianbuzzo] (see [#1730](https://github.com/styled-components/styled-components/pull/1730)) +- Fix typo in console warning about multiple instances, by @lucianbuzzo (see #1730) -- Make the multiple instance warning criteria a little more strict to avoid badgering people running unit tests ([see #1693](https://github.com/styled-components/styled-components/pull/1693)) +- Make the multiple instance warning criteria a little more strict to avoid badgering people running unit tests, by @probablyup (see #1693) -- Fix `React.createRef()` values for `innerRef` being ignored in React Native, by @simonbuchan (see [#1718](https://github.com/styled-components/styled-components/pull/1718)) +- Fix `React.createRef()` values for `innerRef` being ignored in React Native, by @simonbuchan (see #1718) - Hoist non-react static properties on wrapped classes, by @probablyup (see #1750) -- Support attributes prefixed by `x-` (see [#1753](https://github.com/styled-components/styled-components/pull/1753)) +- Support attributes prefixed by `x-`, by @mlecoq (see #1753) ## [v3.2.6] - 2018-04-17 @@ -474,7 +478,8 @@ _The format is based on [Keep a Changelog](http://keepachangelog.com/) and this * Fixed compatibility with other react-broadcast-based systems (like `react-router` v4) -[unreleased]: https://github.com/styled-components/styled-components/compare/v3.2.6...master +[unreleased]: https://github.com/styled-components/styled-components/compare/v3.3.0...master +[v3.3.0]: https://github.com/styled-components/styled-components/compare/v3.2.6...v3.3.0 [v3.2.6]: https://github.com/styled-components/styled-components/compare/v3.2.5...v3.2.6 [v3.2.5]: https://github.com/styled-components/styled-components/compare/v3.2.3...v3.2.5 [v3.2.3]: https://github.com/styled-components/styled-components/compare/v3.2.2...v3.2.3 diff --git a/package.json b/package.json index b7b13711c..49fe7e022 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "styled-components", - "version": "3.2.6", + "version": "3.3.0", "description": "Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without stress 💅", "typings": "typings/styled-components.d.ts", "main": "dist/styled-components.cjs.js", From 6c021ff2fb699e196def9a4b7e6d09da099a8ef5 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Fri, 25 May 2018 01:37:43 -0400 Subject: [PATCH 09/39] jest 23 just was release, might as well --- package.json | 2 +- test-results.json | 2 +- yarn.lock | 393 ++++++++++++++++++++++------------------------ 3 files changed, 194 insertions(+), 203 deletions(-) diff --git a/package.json b/package.json index 32af308a5..011a3851d 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "flow-bin": "^0.47.0", "flow-watch": "^1.1.1", "husky": "^0.14.3", - "jest": "^22.4.3", + "jest": "^23.0.0", "jest-image-snapshot": "^2.4.1", "jest-styled-components": "^5.0.1", "jsdom": "^9.10.0", diff --git a/test-results.json b/test-results.json index 6052576ea..ffcc9bab0 100644 --- a/test-results.json +++ b/test-results.json @@ -1 +1 @@ -{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":31,"numPassedTests":226,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":31,"numTotalTests":226,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"uncheckedKeys":[],"unmatched":0,"updated":0},"startTime":1526410172305,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the reactProps","location":null,"status":"passed","title":"should allow all the reactProps"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the html props","location":null,"status":"passed","title":"should allow all the html props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle all the SVG props","location":null,"status":"passed","title":"should handle all the SVG props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle aria and data attributes","location":null,"status":"passed","title":"should handle aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle uppercase aria and data attributes","location":null,"status":"passed","title":"should handle uppercase aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the event handlers","location":null,"status":"passed","title":"should allow all the event handlers"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should not allow custom props","location":null,"status":"passed","title":"should not allow custom props"}],"endTime":1526410174520,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/validAttr.test.js","startTime":1526410174196,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate empty classes with no styles","location":null,"status":"passed","title":"should generate empty classes with no styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to both classes if only parent has styles","location":null,"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to child class if only child has styles","location":null,"status":"passed","title":"should attach styles to child class if only child has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate a class for the child with the rules of the parent","location":null,"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate different classes for both parent and child","location":null,"status":"passed","title":"should generate different classes for both parent and child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should copy nested rules to the child","location":null,"status":"passed","title":"should copy nested rules to the child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep default props from parent","location":null,"status":"passed","title":"should keep default props from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep prop types from parent","location":null,"status":"passed","title":"should keep prop types from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep custom static member from parent","location":null,"status":"passed","title":"should keep custom static member from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep static member in triple inheritance","location":null,"status":"passed","title":"should keep static member in triple inheritance"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep styles in >= 3 inheritances","location":null,"status":"passed","title":"should keep styles in >= 3 inheritances"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component","location":null,"status":"passed","title":"should allow changing component"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and extending","location":null,"status":"passed","title":"should allow changing component and extending"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and adding attributes","location":null,"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1526410174715,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/extending.test.js","startTime":1526410174232,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not throw an error when called with a valid element","location":null,"status":"passed","title":"should not throw an error when called with a valid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with an invalid element","location":null,"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not inject anything by default","location":null,"status":"passed","title":"should not inject anything by default"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject component class when rendered even if no styles are passed","location":null,"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject styles","location":null,"status":"passed","title":"should inject styles"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject only once for a styled component, no matter how often it's mounted","location":null,"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic Should have the correct styled(component) displayName","location":null,"status":"passed","title":"Should have the correct styled(component) displayName"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should allow you to pass in style objects","location":null,"status":"passed","title":"should allow you to pass in style objects"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the ref to the component","location":null,"status":"passed","title":"should pass the ref to the component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not leak the innerRef prop to the wrapped child","location":null,"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the full className to the wrapped child","location":null,"status":"passed","title":"should pass the full className to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the innerRef to the wrapped styled component","location":null,"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should respect the order of StyledComponent creation for CSS ordering","location":null,"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests handle media at-rules inside style rules","location":null,"status":"passed","title":"handle media at-rules inside style rules"}],"endTime":1526410174724,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/basic.test.js","startTime":1526410174232,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append a style","location":null,"status":"passed","title":"should append a style"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append multiple styles","location":null,"status":"passed","title":"should append multiple styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects","location":null,"status":"passed","title":"should handle inline style objects"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with media queries","location":null,"status":"passed","title":"should handle inline style objects with media queries"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with nesting","location":null,"status":"passed","title":"should handle inline style objects with nesting"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with contextual selectors","location":null,"status":"passed","title":"should handle inline style objects with contextual selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components","location":null,"status":"passed","title":"should inject styles of multiple components"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components based on creation, not rendering order","location":null,"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should strip a JS-style (invalid) comment in the styles","location":null,"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should respect removed rules","location":null,"status":"passed","title":"should respect removed rules"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should add a webpack nonce to the style tags if one is available in the global scope","location":null,"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1526410174728,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/styles.test.js","startTime":1526410174270,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should use given stylesheet instance","location":null,"status":"passed","title":"should use given stylesheet instance"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target","location":null,"status":"passed","title":"should append style to given target"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target in iframe","location":null,"status":"passed","title":"should append style to given target in iframe"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should apply styles to appropriate targets for nested StyleSheetManagers","location":null,"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should inject styles into two parallel contexts","location":null,"status":"passed","title":"should inject styles into two parallel contexts"},{"ancestorTitles":["StyleSheetManager","ssr"],"failureMessages":[],"fullName":"StyleSheetManager ssr should extract CSS outside the nested StyleSheetManager","location":null,"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1526410174764,"message":"","name":"/Users/thymikee/Projects/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1526410174238,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component","location":null,"status":"passed","title":"should inject props.theme into a styled component"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component multiple levels deep","location":null,"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to fallback to its default props when a theme is not provided","location":null,"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly set the theme with an empty object when no theme is provided and no defaults are set","location":null,"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only inject props.theme into styled components within its child component tree","location":null,"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into all styled components within the child component tree","location":null,"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject new CSS when the theme changes","location":null,"status":"passed","title":"should inject new CSS when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly render with the same theme from default props on re-render","location":null,"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if theme is changed","location":null,"status":"passed","title":"should properly update style if theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if props used in styles is changed","location":null,"status":"passed","title":"should properly update style if props used in styles is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should change the classnames when the theme changes","location":null,"status":"passed","title":"should change the classnames when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a component that uses withTheme hoc","location":null,"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update theme prop on hoc component when theme is changed","location":null,"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme after initial render","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should hoist static properties when using withTheme","location":null,"status":"passed","title":"should hoist static properties when using withTheme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only pass the theme prop","location":null,"status":"passed","title":"should only pass the theme prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on as ref","location":null,"status":"passed","title":"should accept innerRef and pass it on as ref"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for stateless function components","location":null,"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for styled components","location":null,"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should not break without a ThemeProvier if it has a defaultTheme","location":null,"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1526410174813,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/theme.test.js","startTime":1526410174198,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should append a new component like normal","location":null,"status":"passed","title":"should append a new component like normal"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId","location":null,"status":"passed","title":"should reuse a componentId"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and generated class","location":null,"status":"passed","title":"should reuse a componentId and generated class"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and inject new classes","location":null,"status":"passed","title":"should reuse a componentId and inject new classes"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should not inject new styles for a component already rendered","location":null,"status":"passed","title":"should not inject new styles for a component already rendered"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should inject new styles for a new computed style of a component","location":null,"status":"passed","title":"should inject new styles for a new computed style of a component"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should generate new classes, even if they have the same name","location":null,"status":"passed","title":"should generate new classes, even if they have the same name"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should inject new global styles at the end","location":null,"status":"passed","title":"should inject new global styles at the end"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should interleave global and local styles","location":null,"status":"passed","title":"should interleave global and local styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should replace stylesheets on-demand","location":null,"status":"passed","title":"should replace stylesheets on-demand"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not change styles if rendered in the same order they were created with","location":null,"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should still not change styles if rendered in a different order","location":null,"status":"passed","title":"should still not change styles if rendered in a different order"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not regenerate keyframes","location":null,"status":"passed","title":"should not regenerate keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should still inject new keyframes","location":null,"status":"passed","title":"should still inject new keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should pass the keyframes name along as well","location":null,"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1526410174829,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/rehydration.test.js","startTime":1526410174266,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styled"],"failureMessages":[],"fullName":"styled should have all valid HTML5 elements defined as properties","location":null,"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1526410175015,"message":"","name":"/Users/thymikee/Projects/styled-components/src/constructors/test/styled.test.js","startTime":1526410174928,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should not throw an error when no children are passed","location":null,"status":"passed","title":"should not throw an error when no children are passed"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should accept a theme prop that's a plain object","location":null,"status":"passed","title":"should accept a theme prop that's a plain object"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with an outer theme","location":null,"status":"passed","title":"should merge its theme with an outer theme"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with multiple outer themes","location":null,"status":"passed","title":"should merge its theme with multiple outer themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should be able to render two independent themes","location":null,"status":"passed","title":"should be able to render two independent themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider ThemeProvider propagates theme updates through nested ThemeProviders","location":null,"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1526410175041,"message":"","name":"/Users/thymikee/Projects/styled-components/src/models/test/ThemeProvider.test.js","startTime":1526410174935,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract the CSS in a simple case","location":null,"status":"passed","title":"should extract the CSS in a simple case"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract both global and local CSS","location":null,"status":"passed","title":"should extract both global and local CSS"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should not spill ServerStyleSheets into each other","location":null,"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should add a nonce to the stylesheet if webpack nonce is detected in the global scope","location":null,"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should render CSS in the order the components were defined, not rendered","location":null,"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should share global styles but keep renders separate","location":null,"status":"passed","title":"should share global styles but keep renders separate"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should allow global styles to be injected during rendering","location":null,"status":"passed","title":"should allow global styles to be injected during rendering"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should dispatch global styles to each ServerStyleSheet","location":null,"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element","location":null,"status":"passed","title":"should return a generated React style element"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element with nonce if webpack nonce is preset in the global scope","location":null,"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should interleave styles with rendered HTML when utilitizing streaming","location":null,"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1526410175049,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/ssr.test.js","startTime":1526410174934,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten handles nested objects","location":null,"status":"passed","title":"handles nested objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings class instances","location":null,"status":"passed","title":"toStrings class instances"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten passes values to function","location":null,"status":"passed","title":"passes values to function"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten recursively calls functions","location":null,"status":"passed","title":"recursively calls functions"}],"endTime":1526410175105,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/flatten.test.js","startTime":1526410175038,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs work fine with an empty object","location":null,"status":"passed","title":"work fine with an empty object"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass a simple attr","location":null,"status":"passed","title":"pass a simple attr"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs call an attr function","location":null,"status":"passed","title":"call an attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass props to the attr function","location":null,"status":"passed","title":"pass props to the attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should replace attrs with props","location":null,"status":"passed","title":"should replace attrs with props"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className","location":null,"status":"passed","title":"should merge className"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className even if its a function","location":null,"status":"passed","title":"should merge className even if its a function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should work with data and aria attributes","location":null,"status":"passed","title":"should work with data and aria attributes"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs","location":null,"status":"passed","title":"merge attrs"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs when inheriting SC","location":null,"status":"passed","title":"merge attrs when inheriting SC"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass attrs to style block","location":null,"status":"passed","title":"pass attrs to style block"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through children as a normal prop","location":null,"status":"passed","title":"should pass through children as a normal prop"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through complex children as well","location":null,"status":"passed","title":"should pass through complex children as well"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should override children of course","location":null,"status":"passed","title":"should override children of course"}],"endTime":1526410175144,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/attrs.test.js","startTime":1526410174993,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be auto-generated if none passed","location":null,"status":"passed","title":"should be auto-generated if none passed"},{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be attached if supplied","location":null,"status":"passed","title":"should be attached if supplied"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated as \"sc\" + hash","location":null,"status":"passed","title":"should be generated as \"sc\" + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated from displayName + hash","location":null,"status":"passed","title":"should be generated from displayName + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be attached if passed in","location":null,"status":"passed","title":"should be attached if passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be combined with displayName if both passed in","location":null,"status":"passed","title":"should be combined with displayName if both passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.extend`","location":null,"status":"passed","title":"should work with `.extend`"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.withComponent`","location":null,"status":"passed","title":"should work with `.withComponent`"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should merge the options strings","location":null,"status":"passed","title":"should merge the options strings"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should keep the last value passed in when merging","location":null,"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1526410175163,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/expanded-api.test.js","startTime":1526410175023,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext merges strings","location":null,"status":"passed","title":"merges strings"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves rulesets after executing functions","location":null,"status":"passed","title":"resolves rulesets after executing functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves double nested rulesets after executing functions","location":null,"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1526410175253,"message":"","name":"/Users/thymikee/Projects/styled-components/src/no-parser/test/flatten.test.js","startTime":1526410175187,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should inject rules into the head","location":null,"status":"passed","title":"should inject rules into the head"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called repeatedly","location":null,"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called after a component","location":null,"status":"passed","title":"should non-destructively inject styles when called after a component"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should extract @import rules into separate style tags","location":null,"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1526410175289,"message":"","name":"/Users/thymikee/Projects/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1526410175168,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes in the right order","location":null,"status":"passed","title":"should add vendor prefixes in the right order"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes for display","location":null,"status":"passed","title":"should add vendor prefixes for display"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should generate styles for nested media queries","location":null,"status":"passed","title":"should generate styles for nested media queries"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should pass through custom properties","location":null,"status":"passed","title":"should pass through custom properties"}],"endTime":1526410175310,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/css.test.js","startTime":1526410175217,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with default SC_ATTR","location":null,"status":"passed","title":"should work with default SC_ATTR"},{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with custom SC_ATTR","location":null,"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1526410175336,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/constants.test.js","startTime":1526410175255,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles without any functions as static","location":null,"status":"passed","title":"should mark styles without any functions as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a nested styled component as static","location":null,"status":"passed","title":"should mark styles with a nested styled component as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a dynamic style as not static","location":null,"status":"passed","title":"should mark styles with a dynamic style as not static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with numeric attriutes as static","location":null,"status":"passed","title":"should mark components with numeric attriutes as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with dynamic attributes as not static","location":null,"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1526410175346,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/staticCaching.test.js","startTime":1526410175277,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and fall back","location":null,"status":"passed","title":"should execute interpolations and fall back"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and inject props","location":null,"status":"passed","title":"should execute interpolations and inject props"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should ignore non-0 falsy object interpolations","location":null,"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1526410175352,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/props.test.js","startTime":1526410175294,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn once","location":null,"status":"passed","title":"should warn once"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn if number of classes is 200","location":null,"status":"passed","title":"should warn if number of classes is 200"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should not warn if number of classes is below 200","location":null,"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1526410175375,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/warnTooManyClasses.test.js","startTime":1526410174703,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1526410175424,"message":"","name":"/Users/thymikee/Projects/styled-components/src/no-parser/test/keyframes.test.js","startTime":1526410175375,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should return its name","location":null,"status":"passed","title":"should return its name"},{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should insert the correct styles","location":null,"status":"passed","title":"should insert the correct styles"}],"endTime":1526410175588,"message":"","name":"/Users/thymikee/Projects/styled-components/src/constructors/test/keyframes.test.js","startTime":1526410175551,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with null","location":null,"status":"passed","title":"should throw a meaningful error when called with null"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly execute passed functions and assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1526410175513,"message":"","name":"/Users/thymikee/Projects/styled-components/src/no-parser/test/basic.test.js","startTime":1526410175459,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styleNames","addNameForId"],"failureMessages":[],"fullName":"styleNames addNameForId adds an id and a name to a given dictionary","location":null,"status":"passed","title":"adds an id and a name to a given dictionary"},{"ancestorTitles":["styleNames","resetIdNames"],"failureMessages":[],"fullName":"styleNames resetIdNames removes all names for an ID","location":null,"status":"passed","title":"removes all names for an ID"},{"ancestorTitles":["styleNames","hasNameForId"],"failureMessages":[],"fullName":"styleNames hasNameForId checks the existance of a name for an id","location":null,"status":"passed","title":"checks the existance of a name for an id"},{"ancestorTitles":["styleNames","stringifyNames"],"failureMessages":[],"fullName":"styleNames stringifyNames lists out all known names as a continuous string","location":null,"status":"passed","title":"lists out all known names as a continuous string"},{"ancestorTitles":["styleNames","cloneNames"],"failureMessages":[],"fullName":"styleNames cloneNames creates a deep clone of the names dictionary","location":null,"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1526410175572,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/styleNames.test.js","startTime":1526410175536,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should let you use another component in a css rule","location":null,"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1526410175573,"message":"","name":"/Users/thymikee/Projects/styled-components/src/test/overriding.test.js","startTime":1526410175535,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces characters that could be part of CSS selectors","location":null,"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces double hyphens with a single hyphen","location":null,"status":"passed","title":"replaces double hyphens with a single hyphen"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape removes extraneous hyphens at the ends of the string","location":null,"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1526410175575,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/escape.test.js","startTime":1526410175546,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should take precedence over ThemeProvider","location":null,"status":"passed","title":"should take precedence over ThemeProvider"},{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should fallback to default theme","location":null,"status":"passed","title":"should fallback to default theme"}],"endTime":1526410175886,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/determineTheme.test.js","startTime":1526410175856,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should create alphabetic names for number input data","location":null,"status":"passed","title":"should create alphabetic names for number input data"},{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should not fail for numbers above int32 limit","location":null,"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1526410175887,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1526410175857,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName defaults to reusing the component displayName","location":null,"status":"passed","title":"defaults to reusing the component displayName"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName falls back to the class name","location":null,"status":"passed","title":"falls back to the class name"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName ultimately falls back to \"Component\"","location":null,"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1526410175889,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/getComponentName.test.js","startTime":1526410175851,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should work for null or empty","location":null,"status":"passed","title":"should work for null or empty"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should ignore anything before the first SC","location":null,"status":"passed","title":"should ignore anything before the first SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC","location":null,"status":"passed","title":"should return a single SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC with multiple lines","location":null,"status":"passed","title":"should return a single SC with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with single lines","location":null,"status":"passed","title":"should return multiple SCs with single lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with multiple lines","location":null,"status":"passed","title":"should return multiple SCs with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should include whitespace after a component","location":null,"status":"passed","title":"should include whitespace after a component"}],"endTime":1526410175893,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1526410175858,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave blindly interleave","location":null,"status":"passed","title":"blindly interleave"},{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave should be driven off the number of interpolations","location":null,"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1526410175894,"message":"","name":"/Users/thymikee/Projects/styled-components/src/utils/test/interleave.test.js","startTime":1526410175856,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":32,"numPassedTests":232,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":32,"numTotalTests":232,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1527226634448,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should use given stylesheet instance","location":null,"status":"passed","title":"should use given stylesheet instance"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target","location":null,"status":"passed","title":"should append style to given target"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target in iframe","location":null,"status":"passed","title":"should append style to given target in iframe"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should apply styles to appropriate targets for nested StyleSheetManagers","location":null,"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should inject styles into two parallel contexts","location":null,"status":"passed","title":"should inject styles into two parallel contexts"},{"ancestorTitles":["StyleSheetManager","ssr"],"failureMessages":[],"fullName":"StyleSheetManager ssr should extract CSS outside the nested StyleSheetManager","location":null,"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527226639630,"message":"","name":"/Users/bear/code/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527226636089,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append a style","location":null,"status":"passed","title":"should append a style"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append multiple styles","location":null,"status":"passed","title":"should append multiple styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects","location":null,"status":"passed","title":"should handle inline style objects"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with media queries","location":null,"status":"passed","title":"should handle inline style objects with media queries"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with nesting","location":null,"status":"passed","title":"should handle inline style objects with nesting"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with contextual selectors","location":null,"status":"passed","title":"should handle inline style objects with contextual selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components","location":null,"status":"passed","title":"should inject styles of multiple components"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components based on creation, not rendering order","location":null,"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should strip a JS-style (invalid) comment in the styles","location":null,"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should respect removed rules","location":null,"status":"passed","title":"should respect removed rules"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should add a webpack nonce to the style tags if one is available in the global scope","location":null,"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527226639633,"message":"","name":"/Users/bear/code/styled-components/src/test/styles.test.js","startTime":1527226636115,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not throw an error when called with a valid element","location":null,"status":"passed","title":"should not throw an error when called with a valid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with an invalid element","location":null,"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not inject anything by default","location":null,"status":"passed","title":"should not inject anything by default"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject component class when rendered even if no styles are passed","location":null,"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject styles","location":null,"status":"passed","title":"should inject styles"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject only once for a styled component, no matter how often it's mounted","location":null,"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic Should have the correct styled(component) displayName","location":null,"status":"passed","title":"Should have the correct styled(component) displayName"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should allow you to pass in style objects","location":null,"status":"passed","title":"should allow you to pass in style objects"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the ref to the component","location":null,"status":"passed","title":"should pass the ref to the component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not leak the innerRef prop to the wrapped child","location":null,"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the full className to the wrapped child","location":null,"status":"passed","title":"should pass the full className to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the innerRef to the wrapped styled component","location":null,"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should respect the order of StyledComponent creation for CSS ordering","location":null,"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests handle media at-rules inside style rules","location":null,"status":"passed","title":"handle media at-rules inside style rules"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should hoist non-react static properties","location":null,"status":"passed","title":"should hoist non-react static properties"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not hoist styled component statics","location":null,"status":"passed","title":"should not hoist styled component statics"}],"endTime":1527226639672,"message":"","name":"/Users/bear/code/styled-components/src/test/basic.test.js","startTime":1527226636127,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract the CSS in a simple case","location":null,"status":"passed","title":"should extract the CSS in a simple case"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract both global and local CSS","location":null,"status":"passed","title":"should extract both global and local CSS"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should not spill ServerStyleSheets into each other","location":null,"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should add a nonce to the stylesheet if webpack nonce is detected in the global scope","location":null,"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should render CSS in the order the components were defined, not rendered","location":null,"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should share global styles but keep renders separate","location":null,"status":"passed","title":"should share global styles but keep renders separate"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should allow global styles to be injected during rendering","location":null,"status":"passed","title":"should allow global styles to be injected during rendering"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should dispatch global styles to each ServerStyleSheet","location":null,"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element","location":null,"status":"passed","title":"should return a generated React style element"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element with nonce if webpack nonce is preset in the global scope","location":null,"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should interleave styles with rendered HTML when utilitizing streaming","location":null,"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527226639674,"message":"","name":"/Users/bear/code/styled-components/src/test/ssr.test.js","startTime":1527226635902,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should append a new component like normal","location":null,"status":"passed","title":"should append a new component like normal"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId","location":null,"status":"passed","title":"should reuse a componentId"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and generated class","location":null,"status":"passed","title":"should reuse a componentId and generated class"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and inject new classes","location":null,"status":"passed","title":"should reuse a componentId and inject new classes"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should not inject new styles for a component already rendered","location":null,"status":"passed","title":"should not inject new styles for a component already rendered"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should inject new styles for a new computed style of a component","location":null,"status":"passed","title":"should inject new styles for a new computed style of a component"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should generate new classes, even if they have the same name","location":null,"status":"passed","title":"should generate new classes, even if they have the same name"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should inject new global styles at the end","location":null,"status":"passed","title":"should inject new global styles at the end"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should interleave global and local styles","location":null,"status":"passed","title":"should interleave global and local styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should replace stylesheets on-demand","location":null,"status":"passed","title":"should replace stylesheets on-demand"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not change styles if rendered in the same order they were created with","location":null,"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should still not change styles if rendered in a different order","location":null,"status":"passed","title":"should still not change styles if rendered in a different order"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not regenerate keyframes","location":null,"status":"passed","title":"should not regenerate keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should still inject new keyframes","location":null,"status":"passed","title":"should still inject new keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should pass the keyframes name along as well","location":null,"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527226639830,"message":"","name":"/Users/bear/code/styled-components/src/test/rehydration.test.js","startTime":1527226636090,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component","location":null,"status":"passed","title":"should inject props.theme into a styled component"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component multiple levels deep","location":null,"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to fallback to its default props when a theme is not provided","location":null,"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly set the theme with an empty object when no theme is provided and no defaults are set","location":null,"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only inject props.theme into styled components within its child component tree","location":null,"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into all styled components within the child component tree","location":null,"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject new CSS when the theme changes","location":null,"status":"passed","title":"should inject new CSS when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly render with the same theme from default props on re-render","location":null,"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if theme is changed","location":null,"status":"passed","title":"should properly update style if theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if props used in styles is changed","location":null,"status":"passed","title":"should properly update style if props used in styles is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should change the classnames when the theme changes","location":null,"status":"passed","title":"should change the classnames when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a component that uses withTheme hoc","location":null,"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update theme prop on hoc component when theme is changed","location":null,"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme after initial render","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should hoist static properties when using withTheme","location":null,"status":"passed","title":"should hoist static properties when using withTheme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only pass the theme prop","location":null,"status":"passed","title":"should only pass the theme prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on as ref","location":null,"status":"passed","title":"should accept innerRef and pass it on as ref"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for stateless function components","location":null,"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for styled components","location":null,"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should not break without a ThemeProvier if it has a defaultTheme","location":null,"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527226639841,"message":"","name":"/Users/bear/code/styled-components/src/test/theme.test.js","startTime":1527226636106,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn once","location":null,"status":"passed","title":"should warn once"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn if number of classes is 200","location":null,"status":"passed","title":"should warn if number of classes is 200"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should not warn if number of classes is below 200","location":null,"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527226640003,"message":"","name":"/Users/bear/code/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527226636102,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs work fine with an empty object","location":null,"status":"passed","title":"work fine with an empty object"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass a simple attr","location":null,"status":"passed","title":"pass a simple attr"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs call an attr function","location":null,"status":"passed","title":"call an attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass props to the attr function","location":null,"status":"passed","title":"pass props to the attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should replace attrs with props","location":null,"status":"passed","title":"should replace attrs with props"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className","location":null,"status":"passed","title":"should merge className"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className even if its a function","location":null,"status":"passed","title":"should merge className even if its a function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should work with data and aria attributes","location":null,"status":"passed","title":"should work with data and aria attributes"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs","location":null,"status":"passed","title":"merge attrs"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs when inheriting SC","location":null,"status":"passed","title":"merge attrs when inheriting SC"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass attrs to style block","location":null,"status":"passed","title":"pass attrs to style block"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through children as a normal prop","location":null,"status":"passed","title":"should pass through children as a normal prop"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through complex children as well","location":null,"status":"passed","title":"should pass through complex children as well"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should override children of course","location":null,"status":"passed","title":"should override children of course"}],"endTime":1527226640077,"message":"","name":"/Users/bear/code/styled-components/src/test/attrs.test.js","startTime":1527226639851,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styled"],"failureMessages":[],"fullName":"styled should have all valid HTML5 elements defined as properties","location":null,"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527226640167,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/styled.test.js","startTime":1527226639806,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be auto-generated if none passed","location":null,"status":"passed","title":"should be auto-generated if none passed"},{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be attached if supplied","location":null,"status":"passed","title":"should be attached if supplied"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated as \"sc\" + hash","location":null,"status":"passed","title":"should be generated as \"sc\" + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated from displayName + hash","location":null,"status":"passed","title":"should be generated from displayName + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be attached if passed in","location":null,"status":"passed","title":"should be attached if passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be combined with displayName if both passed in","location":null,"status":"passed","title":"should be combined with displayName if both passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.extend`","location":null,"status":"passed","title":"should work with `.extend`"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.withComponent`","location":null,"status":"passed","title":"should work with `.withComponent`"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should merge the options strings","location":null,"status":"passed","title":"should merge the options strings"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should keep the last value passed in when merging","location":null,"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527226640267,"message":"","name":"/Users/bear/code/styled-components/src/test/expanded-api.test.js","startTime":1527226640029,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should not throw an error when no children are passed","location":null,"status":"passed","title":"should not throw an error when no children are passed"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should accept a theme prop that's a plain object","location":null,"status":"passed","title":"should accept a theme prop that's a plain object"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with an outer theme","location":null,"status":"passed","title":"should merge its theme with an outer theme"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with multiple outer themes","location":null,"status":"passed","title":"should merge its theme with multiple outer themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should be able to render two independent themes","location":null,"status":"passed","title":"should be able to render two independent themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider ThemeProvider propagates theme updates through nested ThemeProviders","location":null,"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527226640273,"message":"","name":"/Users/bear/code/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527226639995,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should inject rules into the head","location":null,"status":"passed","title":"should inject rules into the head"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called repeatedly","location":null,"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called after a component","location":null,"status":"passed","title":"should non-destructively inject styles when called after a component"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should extract @import rules into separate style tags","location":null,"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527226640319,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527226640161,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext merges strings","location":null,"status":"passed","title":"merges strings"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves rulesets after executing functions","location":null,"status":"passed","title":"resolves rulesets after executing functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves double nested rulesets after executing functions","location":null,"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527226640397,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/flatten.test.js","startTime":1527226640230,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and fall back","location":null,"status":"passed","title":"should execute interpolations and fall back"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and inject props","location":null,"status":"passed","title":"should execute interpolations and inject props"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should ignore non-0 falsy object interpolations","location":null,"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527226640452,"message":"","name":"/Users/bear/code/styled-components/src/test/props.test.js","startTime":1527226640302,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the reactProps","location":null,"status":"passed","title":"should allow all the reactProps"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the html props","location":null,"status":"passed","title":"should allow all the html props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle all the SVG props","location":null,"status":"passed","title":"should handle all the SVG props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle aria and data attributes","location":null,"status":"passed","title":"should handle aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle uppercase aria and data attributes","location":null,"status":"passed","title":"should handle uppercase aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the event handlers","location":null,"status":"passed","title":"should allow all the event handlers"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should not allow custom props","location":null,"status":"passed","title":"should not allow custom props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle x attributes","location":null,"status":"passed","title":"should handle x attributes"}],"endTime":1527226640472,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/validAttr.test.js","startTime":1527226639800,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten handles nested objects","location":null,"status":"passed","title":"handles nested objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings class instances","location":null,"status":"passed","title":"toStrings class instances"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten passes values to function","location":null,"status":"passed","title":"passes values to function"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten recursively calls functions","location":null,"status":"passed","title":"recursively calls functions"}],"endTime":1527226640602,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/flatten.test.js","startTime":1527226640428,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with default SC_ATTR","location":null,"status":"passed","title":"should work with default SC_ATTR"},{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with custom SC_ATTR","location":null,"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527226640614,"message":"","name":"/Users/bear/code/styled-components/src/test/constants.test.js","startTime":1527226640437,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles without any functions as static","location":null,"status":"passed","title":"should mark styles without any functions as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a nested styled component as static","location":null,"status":"passed","title":"should mark styles with a nested styled component as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a dynamic style as not static","location":null,"status":"passed","title":"should mark styles with a dynamic style as not static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with numeric attriutes as static","location":null,"status":"passed","title":"should mark components with numeric attriutes as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with dynamic attributes as not static","location":null,"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527226640634,"message":"","name":"/Users/bear/code/styled-components/src/test/staticCaching.test.js","startTime":1527226640471,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should return its name","location":null,"status":"passed","title":"should return its name"},{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should insert the correct styles","location":null,"status":"passed","title":"should insert the correct styles"}],"endTime":1527226640669,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/keyframes.test.js","startTime":1527226640550,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes in the right order","location":null,"status":"passed","title":"should add vendor prefixes in the right order"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes for display","location":null,"status":"passed","title":"should add vendor prefixes for display"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should generate styles for nested media queries","location":null,"status":"passed","title":"should generate styles for nested media queries"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should pass through custom properties","location":null,"status":"passed","title":"should pass through custom properties"}],"endTime":1527226640739,"message":"","name":"/Users/bear/code/styled-components/src/test/css.test.js","startTime":1527226640608,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should work for null or empty","location":null,"status":"passed","title":"should work for null or empty"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should ignore anything before the first SC","location":null,"status":"passed","title":"should ignore anything before the first SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC","location":null,"status":"passed","title":"should return a single SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC with multiple lines","location":null,"status":"passed","title":"should return a single SC with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with single lines","location":null,"status":"passed","title":"should return multiple SCs with single lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with multiple lines","location":null,"status":"passed","title":"should return multiple SCs with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should include whitespace after a component","location":null,"status":"passed","title":"should include whitespace after a component"}],"endTime":1527226640748,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527226640613,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate empty classes with no styles","location":null,"status":"passed","title":"should generate empty classes with no styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to both classes if only parent has styles","location":null,"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to child class if only child has styles","location":null,"status":"passed","title":"should attach styles to child class if only child has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate a class for the child with the rules of the parent","location":null,"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate different classes for both parent and child","location":null,"status":"passed","title":"should generate different classes for both parent and child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should copy nested rules to the child","location":null,"status":"passed","title":"should copy nested rules to the child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep default props from parent","location":null,"status":"passed","title":"should keep default props from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep prop types from parent","location":null,"status":"passed","title":"should keep prop types from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep custom static member from parent","location":null,"status":"passed","title":"should keep custom static member from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep static member in triple inheritance","location":null,"status":"passed","title":"should keep static member in triple inheritance"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep styles in >= 3 inheritances","location":null,"status":"passed","title":"should keep styles in >= 3 inheritances"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component","location":null,"status":"passed","title":"should allow changing component"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and extending","location":null,"status":"passed","title":"should allow changing component and extending"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and adding attributes","location":null,"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527226640907,"message":"","name":"/Users/bear/code/styled-components/src/test/extending.test.js","startTime":1527226640620,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave blindly interleave","location":null,"status":"passed","title":"blindly interleave"},{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave should be driven off the number of interpolations","location":null,"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527226640931,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/interleave.test.js","startTime":1527226640812,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styleNames","addNameForId"],"failureMessages":[],"fullName":"styleNames addNameForId adds an id and a name to a given dictionary","location":null,"status":"passed","title":"adds an id and a name to a given dictionary"},{"ancestorTitles":["styleNames","resetIdNames"],"failureMessages":[],"fullName":"styleNames resetIdNames removes all names for an ID","location":null,"status":"passed","title":"removes all names for an ID"},{"ancestorTitles":["styleNames","hasNameForId"],"failureMessages":[],"fullName":"styleNames hasNameForId checks the existance of a name for an id","location":null,"status":"passed","title":"checks the existance of a name for an id"},{"ancestorTitles":["styleNames","stringifyNames"],"failureMessages":[],"fullName":"styleNames stringifyNames lists out all known names as a continuous string","location":null,"status":"passed","title":"lists out all known names as a continuous string"},{"ancestorTitles":["styleNames","cloneNames"],"failureMessages":[],"fullName":"styleNames cloneNames creates a deep clone of the names dictionary","location":null,"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527226640932,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/styleNames.test.js","startTime":1527226640786,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should let you use another component in a css rule","location":null,"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527226640982,"message":"","name":"/Users/bear/code/styled-components/src/test/overriding.test.js","startTime":1527226640795,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527226640984,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527226640819,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a string type","location":null,"status":"passed","title":"handles a string type"},{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a React class type","location":null,"status":"passed","title":"handles a React class type"},{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a React class type with displayName","location":null,"status":"passed","title":"handles a React class type with displayName"}],"endTime":1527226641001,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/generateDisplayName.test.js","startTime":1527226640894,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with null","location":null,"status":"passed","title":"should throw a meaningful error when called with null"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly execute passed functions and assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527226641032,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/basic.test.js","startTime":1527226640897,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName defaults to reusing the component displayName","location":null,"status":"passed","title":"defaults to reusing the component displayName"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName falls back to the class name","location":null,"status":"passed","title":"falls back to the class name"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName ultimately falls back to \"Component\"","location":null,"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527226641128,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/getComponentName.test.js","startTime":1527226641056,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should take precedence over ThemeProvider","location":null,"status":"passed","title":"should take precedence over ThemeProvider"},{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should fallback to default theme","location":null,"status":"passed","title":"should fallback to default theme"}],"endTime":1527226641170,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/determineTheme.test.js","startTime":1527226641083,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces characters that could be part of CSS selectors","location":null,"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces double hyphens with a single hyphen","location":null,"status":"passed","title":"replaces double hyphens with a single hyphen"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape removes extraneous hyphens at the ends of the string","location":null,"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527226641170,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/escape.test.js","startTime":1527226641067,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should create alphabetic names for number input data","location":null,"status":"passed","title":"should create alphabetic names for number input data"},{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should not fail for numbers above int32 limit","location":null,"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527226641181,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527226641097,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 3cbce9c43..15ed147b7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -623,12 +623,12 @@ babel-helpers@^6.24.1: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-jest@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-22.4.3.tgz#4b7a0b6041691bbd422ab49b3b73654a49a6627a" +babel-jest@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-23.0.0.tgz#0e383a2aa6b3535e197db2929570a2182bd084e8" dependencies: - babel-plugin-istanbul "^4.1.5" - babel-preset-jest "^22.4.3" + babel-plugin-istanbul "^4.1.6" + babel-preset-jest "^23.0.0" babel-messages@^6.23.0: version "6.23.0" @@ -661,18 +661,18 @@ babel-plugin-flow-react-proptypes@^2.1.3: babel-traverse "^6.18.0" babel-types "^6.18.0" -babel-plugin-istanbul@^4.1.5: +babel-plugin-istanbul@^4.1.6: version "4.1.6" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45" dependencies: babel-plugin-syntax-object-rest-spread "^6.13.0" find-up "^2.1.0" istanbul-lib-instrument "^1.10.1" test-exclude "^4.2.1" -babel-plugin-jest-hoist@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-22.4.3.tgz#7d8bcccadc2667f96a0dcc6afe1891875ee6c14a" +babel-plugin-jest-hoist@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.0.0.tgz#e61e68799f743391a1e6306ee270477aacf946c8" babel-plugin-react-transform@2.0.2: version "2.0.2" @@ -1124,11 +1124,11 @@ babel-preset-flow@^6.23.0: dependencies: babel-plugin-transform-flow-strip-types "^6.22.0" -babel-preset-jest@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-22.4.3.tgz#e92eef9813b7026ab4ca675799f37419b5a44156" +babel-preset-jest@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.0.0.tgz#49de0303f1b6875dcad6163eaa7eb8330d54824d" dependencies: - babel-plugin-jest-hoist "^22.4.3" + babel-plugin-jest-hoist "^23.0.0" babel-plugin-syntax-object-rest-spread "^6.13.0" babel-preset-react-native@^1.9.1, babel-preset-react-native@^1.9.2: @@ -2956,16 +2956,16 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -expect@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/expect/-/expect-22.4.3.tgz#d5a29d0a0e1fb2153557caef2674d4547e914674" +expect@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/expect/-/expect-23.0.0.tgz#2c3ab0a44dae319e00a73e3561762768d03a2b27" dependencies: ansi-styles "^3.2.0" - jest-diff "^22.4.3" - jest-get-type "^22.4.3" - jest-matcher-utils "^22.4.3" - jest-message-util "^22.4.3" - jest-regex-util "^22.4.3" + jest-diff "^23.0.0" + jest-get-type "^22.1.0" + jest-matcher-utils "^23.0.0" + jest-message-util "^23.0.0" + jest-regex-util "^23.0.0" express-session@~1.11.3: version "1.11.3" @@ -4368,9 +4368,9 @@ isstream@0.1.2, isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" -istanbul-api@^1.1.14: +istanbul-api@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" + resolved "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.1.tgz#4c3b05d18c0016d1022e079b98dc82c40f488954" dependencies: async "^2.1.4" compare-versions "^3.1.0" @@ -4385,11 +4385,7 @@ istanbul-api@^1.1.14: mkdirp "^0.5.1" once "^1.4.0" -istanbul-lib-coverage@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz#73bfb998885299415c93d38a3e9adf784a77a9da" - -istanbul-lib-coverage@^1.1.2, istanbul-lib-coverage@^1.2.0: +istanbul-lib-coverage@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz#f7d8f2e42b97e37fe796114cb0f9d68b5e3a4341" @@ -4399,7 +4395,7 @@ istanbul-lib-hook@^1.2.0: dependencies: append-transform "^0.4.0" -istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.8.0: +istanbul-lib-instrument@^1.10.1: version "1.10.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz#724b4b6caceba8692d3f1f9d0727e279c401af7b" dependencies: @@ -4420,16 +4416,6 @@ istanbul-lib-report@^1.1.4: path-parse "^1.0.5" supports-color "^3.1.2" -istanbul-lib-source-maps@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.3.tgz#20fb54b14e14b3fb6edb6aca3571fd2143db44e6" - dependencies: - debug "^3.1.0" - istanbul-lib-coverage "^1.1.2" - mkdirp "^0.5.1" - rimraf "^2.6.1" - source-map "^0.5.3" - istanbul-lib-source-maps@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.4.tgz#cc7ccad61629f4efff8e2f78adb8c522c9976ec7" @@ -4446,15 +4432,15 @@ istanbul-reports@^1.3.0: dependencies: handlebars "^4.0.3" -jest-changed-files@^22.4.3: +jest-changed-files@^22.2.0: version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-22.4.3.tgz#8882181e022c38bd46a2e4d18d44d19d90a90fb2" dependencies: throat "^4.0.0" -jest-cli@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-22.4.3.tgz#bf16c4a5fb7edc3fa5b9bb7819e34139e88a72c7" +jest-cli@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-23.0.0.tgz#29287498c9d844dcda5aaf011a4c82f9a888836e" dependencies: ansi-escapes "^3.0.0" chalk "^2.0.1" @@ -4463,24 +4449,24 @@ jest-cli@^22.4.3: graceful-fs "^4.1.11" import-local "^1.0.0" is-ci "^1.0.10" - istanbul-api "^1.1.14" - istanbul-lib-coverage "^1.1.1" - istanbul-lib-instrument "^1.8.0" - istanbul-lib-source-maps "^1.2.1" - jest-changed-files "^22.4.3" - jest-config "^22.4.3" - jest-environment-jsdom "^22.4.3" - jest-get-type "^22.4.3" - jest-haste-map "^22.4.3" - jest-message-util "^22.4.3" - jest-regex-util "^22.4.3" - jest-resolve-dependencies "^22.4.3" - jest-runner "^22.4.3" - jest-runtime "^22.4.3" - jest-snapshot "^22.4.3" - jest-util "^22.4.3" - jest-validate "^22.4.3" - jest-worker "^22.4.3" + istanbul-api "^1.3.1" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-instrument "^1.10.1" + istanbul-lib-source-maps "^1.2.4" + jest-changed-files "^22.2.0" + jest-config "^23.0.0" + jest-environment-jsdom "^23.0.0" + jest-get-type "^22.1.0" + jest-haste-map "^23.0.0" + jest-message-util "^23.0.0" + jest-regex-util "^23.0.0" + jest-resolve-dependencies "^23.0.0" + jest-runner "^23.0.0" + jest-runtime "^23.0.0" + jest-snapshot "^23.0.0" + jest-util "^23.0.0" + jest-validate "^23.0.0" + jest-worker "^23.0.0" micromatch "^2.3.11" node-notifier "^5.2.1" realpath-native "^1.0.0" @@ -4489,32 +4475,34 @@ jest-cli@^22.4.3: string-length "^2.0.0" strip-ansi "^4.0.0" which "^1.2.12" - yargs "^10.0.3" + yargs "^11.0.0" -jest-config@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403" +jest-config@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-23.0.0.tgz#9444d858873ad567376f8cfe139fd8828e8d494b" dependencies: + babel-core "^6.0.0" + babel-jest "^23.0.0" chalk "^2.0.1" glob "^7.1.1" - jest-environment-jsdom "^22.4.3" - jest-environment-node "^22.4.3" - jest-get-type "^22.4.3" - jest-jasmine2 "^22.4.3" - jest-regex-util "^22.4.3" - jest-resolve "^22.4.3" - jest-util "^22.4.3" - jest-validate "^22.4.3" - pretty-format "^22.4.3" - -jest-diff@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-22.4.3.tgz#e18cc3feff0aeef159d02310f2686d4065378030" + jest-environment-jsdom "^23.0.0" + jest-environment-node "^23.0.0" + jest-get-type "^22.1.0" + jest-jasmine2 "^23.0.0" + jest-regex-util "^23.0.0" + jest-resolve "^23.0.0" + jest-util "^23.0.0" + jest-validate "^23.0.0" + pretty-format "^23.0.0" + +jest-diff@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-23.0.0.tgz#0a00b2157f518eec338121ccf8879c529269a88e" dependencies: chalk "^2.0.1" diff "^3.2.0" - jest-get-type "^22.4.3" - pretty-format "^22.4.3" + jest-get-type "^22.1.0" + pretty-format "^23.0.0" jest-docblock@^20.0.3: version "20.0.3" @@ -4524,34 +4512,34 @@ jest-docblock@^21.0.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" -jest-docblock@^22.4.3: +jest-docblock@^22.4.0: version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-22.4.3.tgz#50886f132b42b280c903c592373bb6e93bb68b19" dependencies: detect-newline "^2.1.0" -jest-environment-jsdom@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-22.4.3.tgz#d67daa4155e33516aecdd35afd82d4abf0fa8a1e" +jest-environment-jsdom@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.0.0.tgz#57b0f0dd263359a86d7952a4b712b3fabca1a625" dependencies: - jest-mock "^22.4.3" - jest-util "^22.4.3" + jest-mock "^23.0.0" + jest-util "^23.0.0" jsdom "^11.5.1" -jest-environment-node@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-22.4.3.tgz#54c4eaa374c83dd52a9da8759be14ebe1d0b9129" +jest-environment-node@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.0.0.tgz#ef93a414a612484cf585c8b32ccc5ae30ce6095c" dependencies: - jest-mock "^22.4.3" - jest-util "^22.4.3" + jest-mock "^23.0.0" + jest-util "^23.0.0" jest-get-type@^21.2.0: version "21.2.0" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" -jest-get-type@^22.4.3: +jest-get-type@^22.1.0: version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4" jest-haste-map@^20.0.4: version "20.0.5" @@ -4564,15 +4552,15 @@ jest-haste-map@^20.0.4: sane "~1.6.0" worker-farm "^1.3.1" -jest-haste-map@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-22.4.3.tgz#25842fa2ba350200767ac27f658d58b9d5c2e20b" +jest-haste-map@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.0.0.tgz#09be1c9a37c16b2e2f25398864eb2806d309ca96" dependencies: fb-watchman "^2.0.0" graceful-fs "^4.1.11" - jest-docblock "^22.4.3" - jest-serializer "^22.4.3" - jest-worker "^22.4.3" + jest-docblock "^22.4.0" + jest-serializer "^23.0.0" + jest-worker "^23.0.0" micromatch "^2.3.11" sane "^2.0.0" @@ -4588,39 +4576,38 @@ jest-image-snapshot@^2.4.1: pngjs "^3.3.3" rimraf "^2.6.2" -jest-jasmine2@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-22.4.3.tgz#4daf64cd14c793da9db34a7c7b8dcfe52a745965" +jest-jasmine2@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.0.0.tgz#ea26f87b5c223e1a70985032f0727d8f855e59df" dependencies: chalk "^2.0.1" co "^4.6.0" - expect "^22.4.3" - graceful-fs "^4.1.11" + expect "^23.0.0" is-generator-fn "^1.0.0" - jest-diff "^22.4.3" - jest-matcher-utils "^22.4.3" - jest-message-util "^22.4.3" - jest-snapshot "^22.4.3" - jest-util "^22.4.3" - source-map-support "^0.5.0" - -jest-leak-detector@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-22.4.3.tgz#2b7b263103afae8c52b6b91241a2de40117e5b35" + jest-diff "^23.0.0" + jest-matcher-utils "^23.0.0" + jest-message-util "^23.0.0" + jest-snapshot "^23.0.0" + jest-util "^23.0.0" + pretty-format "^23.0.0" + +jest-leak-detector@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.0.0.tgz#ec93d755b21e8b2c4c4e59b8cccab1805a704ab3" dependencies: - pretty-format "^22.4.3" + pretty-format "^23.0.0" -jest-matcher-utils@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-22.4.3.tgz#4632fe428ebc73ebc194d3c7b65d37b161f710ff" +jest-matcher-utils@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.0.0.tgz#ca2168fe5a7a416c0d7f2916e969e89dcce9d92a" dependencies: chalk "^2.0.1" - jest-get-type "^22.4.3" - pretty-format "^22.4.3" + jest-get-type "^22.1.0" + pretty-format "^23.0.0" -jest-message-util@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-22.4.3.tgz#cf3d38aafe4befddbfc455e57d65d5239e399eb7" +jest-message-util@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.0.0.tgz#073f3d76c701f7c718a4b9af1eb7f138792c4796" dependencies: "@babel/code-frame" "^7.0.0-beta.35" chalk "^2.0.1" @@ -4628,82 +4615,87 @@ jest-message-util@^22.4.3: slash "^1.0.0" stack-utils "^1.0.1" -jest-mock@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-22.4.3.tgz#f63ba2f07a1511772cdc7979733397df770aabc7" +jest-mock@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-23.0.0.tgz#d9d897a1b74dc05c66a737213931496215897dd8" -jest-regex-util@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-22.4.3.tgz#a826eb191cdf22502198c5401a1fc04de9cef5af" +jest-regex-util@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.0.0.tgz#dd5c1fde0c46f4371314cf10f7a751a23f4e8f76" -jest-resolve-dependencies@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-22.4.3.tgz#e2256a5a846732dc3969cb72f3c9ad7725a8195e" +jest-resolve-dependencies@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.0.0.tgz#c3e1cfee0e543dee10e6ec0628df69cd239244c9" dependencies: - jest-regex-util "^22.4.3" + jest-regex-util "^23.0.0" + jest-snapshot "^23.0.0" -jest-resolve@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-22.4.3.tgz#0ce9d438c8438229aa9b916968ec6b05c1abb4ea" +jest-resolve@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.0.0.tgz#f04362fd0531b4546399df76c55c3214a9f45e02" dependencies: browser-resolve "^1.11.2" chalk "^2.0.1" + realpath-native "^1.0.0" -jest-runner@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-22.4.3.tgz#298ddd6a22b992c64401b4667702b325e50610c3" +jest-runner@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-23.0.0.tgz#b198a2dd78d57a2c0f3f8d7c7f97b62673922020" dependencies: exit "^0.1.2" - jest-config "^22.4.3" - jest-docblock "^22.4.3" - jest-haste-map "^22.4.3" - jest-jasmine2 "^22.4.3" - jest-leak-detector "^22.4.3" - jest-message-util "^22.4.3" - jest-runtime "^22.4.3" - jest-util "^22.4.3" - jest-worker "^22.4.3" + graceful-fs "^4.1.11" + jest-config "^23.0.0" + jest-docblock "^22.4.0" + jest-haste-map "^23.0.0" + jest-jasmine2 "^23.0.0" + jest-leak-detector "^23.0.0" + jest-message-util "^23.0.0" + jest-runtime "^23.0.0" + jest-util "^23.0.0" + jest-worker "^23.0.0" + source-map-support "^0.5.6" throat "^4.0.0" -jest-runtime@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-22.4.3.tgz#b69926c34b851b920f666c93e86ba2912087e3d0" +jest-runtime@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.0.0.tgz#8619227fe2e01603d542b9101dd3e64ef4593f66" dependencies: babel-core "^6.0.0" - babel-jest "^22.4.3" - babel-plugin-istanbul "^4.1.5" + babel-plugin-istanbul "^4.1.6" chalk "^2.0.1" convert-source-map "^1.4.0" exit "^0.1.2" graceful-fs "^4.1.11" - jest-config "^22.4.3" - jest-haste-map "^22.4.3" - jest-regex-util "^22.4.3" - jest-resolve "^22.4.3" - jest-util "^22.4.3" - jest-validate "^22.4.3" + jest-config "^23.0.0" + jest-haste-map "^23.0.0" + jest-message-util "^23.0.0" + jest-regex-util "^23.0.0" + jest-resolve "^23.0.0" + jest-snapshot "^23.0.0" + jest-util "^23.0.0" + jest-validate "^23.0.0" json-stable-stringify "^1.0.1" micromatch "^2.3.11" realpath-native "^1.0.0" slash "^1.0.0" strip-bom "3.0.0" write-file-atomic "^2.1.0" - yargs "^10.0.3" + yargs "^11.0.0" -jest-serializer@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-22.4.3.tgz#a679b81a7f111e4766235f4f0c46d230ee0f7436" +jest-serializer@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.0.tgz#263411ac92e1e3dde243858642bb04e8a986e8ca" -jest-snapshot@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-22.4.3.tgz#b5c9b42846ffb9faccb76b841315ba67887362d2" +jest-snapshot@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.0.0.tgz#49cdb92a69b9999dbf92e0634d5ba1e8a8586803" dependencies: chalk "^2.0.1" - jest-diff "^22.4.3" - jest-matcher-utils "^22.4.3" + jest-diff "^23.0.0" + jest-matcher-utils "^23.0.0" mkdirp "^0.5.1" natural-compare "^1.4.0" - pretty-format "^22.4.3" + pretty-format "^23.0.0" jest-styled-components@^5.0.1: version "5.0.1" @@ -4711,15 +4703,15 @@ jest-styled-components@^5.0.1: dependencies: css "^2.2.1" -jest-util@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-22.4.3.tgz#c70fec8eec487c37b10b0809dc064a7ecf6aafac" +jest-util@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-23.0.0.tgz#86386800ffbe3fe17a06320e0cf9ca9b7868263b" dependencies: callsites "^2.0.0" chalk "^2.0.1" graceful-fs "^4.1.11" is-ci "^1.0.10" - jest-message-util "^22.4.3" + jest-message-util "^23.0.0" mkdirp "^0.5.1" source-map "^0.6.0" @@ -4732,28 +4724,27 @@ jest-validate@^21.1.0: leven "^2.1.0" pretty-format "^21.2.1" -jest-validate@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-22.4.3.tgz#0780954a5a7daaeec8d3c10834b9280865976b30" +jest-validate@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-23.0.0.tgz#f88bc897b6cc376979aff0262d1025df1302d520" dependencies: chalk "^2.0.1" - jest-config "^22.4.3" - jest-get-type "^22.4.3" + jest-get-type "^22.1.0" leven "^2.1.0" - pretty-format "^22.4.3" + pretty-format "^23.0.0" -jest-worker@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-22.4.3.tgz#5c421417cba1c0abf64bf56bd5fb7968d79dd40b" +jest-worker@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-23.0.0.tgz#e6b1378b81f8e6a108f3be33a1faa830c22ea450" dependencies: merge-stream "^1.0.1" -jest@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/jest/-/jest-22.4.3.tgz#2261f4b117dc46d9a4a1a673d2150958dee92f16" +jest@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/jest/-/jest-23.0.0.tgz#9282980309f5cde27aadc59ae583f1117c0e4430" dependencies: import-local "^1.0.0" - jest-cli "^22.4.3" + jest-cli "^23.0.0" js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" @@ -6374,9 +6365,9 @@ pretty-format@^21.2.1: ansi-regex "^3.0.0" ansi-styles "^3.2.0" -pretty-format@^22.4.3: - version "22.4.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-22.4.3.tgz#f873d780839a9c02e9664c8a082e9ee79eaac16f" +pretty-format@^23.0.0: + version "23.0.0" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-23.0.0.tgz#b66dc584a0907b1969783c4c20e4d1180b18ac75" dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -7635,9 +7626,9 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.0: +source-map-support@^0.5.6: version "0.5.6" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz#4435cee46b1aab62b8e8610ce60f788091c51c13" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -8664,15 +8655,15 @@ yargs-parser@^4.2.0: dependencies: camelcase "^3.0.0" -yargs-parser@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.1.0.tgz#f1376a33b6629a5d063782944da732631e966950" +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" dependencies: camelcase "^4.1.0" -yargs@^10.0.3: - version "10.1.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.1.2.tgz#454d074c2b16a51a43e2fb7807e4f9de69ccb5c5" +yargs@^11.0.0: + version "11.0.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-11.0.0.tgz#c052931006c5eee74610e5fc0354bedfd08a201b" dependencies: cliui "^4.0.0" decamelize "^1.1.1" @@ -8685,7 +8676,7 @@ yargs@^10.0.3: string-width "^2.0.0" which-module "^2.0.0" y18n "^3.2.1" - yargs-parser "^8.1.0" + yargs-parser "^9.0.2" yargs@^4.8.0: version "4.8.1" From cd6df7740c07d65581bb9a2febca8e0b85f281ea Mon Sep 17 00:00:00 2001 From: Valery Bugakov Date: Fri, 25 May 2018 12:21:55 +0400 Subject: [PATCH 10/39] Check if React.Component is in prototype chain of attr --- src/models/StyledComponent.js | 7 +++++-- src/models/StyledNativeComponent.js | 7 +++++-- src/test/attrs.test.js | 22 +++++++++++++++++++++- src/utils/hasInInheritanceChain.js | 15 +++++++++++++++ src/utils/isClass.js | 5 ----- test-results.json | 2 +- typings/tests/attrs-test.tsx | 1 - 7 files changed, 47 insertions(+), 12 deletions(-) create mode 100644 src/utils/hasInInheritanceChain.js delete mode 100644 src/utils/isClass.js diff --git a/src/models/StyledComponent.js b/src/models/StyledComponent.js index 9673a2179..75f8dc0ca 100644 --- a/src/models/StyledComponent.js +++ b/src/models/StyledComponent.js @@ -12,7 +12,7 @@ import isStyledComponent from '../utils/isStyledComponent' import getComponentName from '../utils/getComponentName' import determineTheme from '../utils/determineTheme' import escape from '../utils/escape' -import isClass from '../utils/isClass' +import hasInInheritanceChain from '../utils/hasInInheritanceChain' import type { RuleSet, Target } from '../types' import { CONTEXT_KEY } from '../constants' @@ -83,9 +83,12 @@ export default (ComponentStyle: Function, constructWithOptions: Function) => { this.attrs = Object.keys(attrs).reduce((acc, key) => { const attr = attrs[key] + const extendsReactComponent = hasInInheritanceChain(attr, Component) // eslint-disable-next-line no-param-reassign acc[key] = - typeof attr === 'function' && !isClass(attr) ? attr(context) : attr + typeof attr === 'function' && !extendsReactComponent + ? attr(context) + : attr return acc }, {}) diff --git a/src/models/StyledNativeComponent.js b/src/models/StyledNativeComponent.js index 4c7720911..a5cd0624f 100644 --- a/src/models/StyledNativeComponent.js +++ b/src/models/StyledNativeComponent.js @@ -5,10 +5,10 @@ import PropTypes from 'prop-types' import type { Theme } from './ThemeProvider' import isTag from '../utils/isTag' -import isClass from '../utils/isClass' import isStyledComponent from '../utils/isStyledComponent' import getComponentName from '../utils/getComponentName' import determineTheme from '../utils/determineTheme' +import hasInInheritanceChain from '../utils/hasInInheritanceChain' import type { RuleSet, Target } from '../types' import { CHANNEL, CHANNEL_NEXT, CONTEXT_CHANNEL_SHAPE } from './ThemeProvider' @@ -44,9 +44,12 @@ export default (constructWithOptions: Function, InlineStyle: Function) => { this.attrs = Object.keys(attrs).reduce((acc, key) => { const attr = attrs[key] + const extendsReactComponent = hasInInheritanceChain(attr, Component) // eslint-disable-next-line no-param-reassign acc[key] = - typeof attr === 'function' && !isClass(attr) ? attr(context) : attr + typeof attr === 'function' && !extendsReactComponent + ? attr(context) + : attr return acc }, {}) diff --git a/src/test/attrs.test.js b/src/test/attrs.test.js index d89698794..4591f4597 100644 --- a/src/test/attrs.test.js +++ b/src/test/attrs.test.js @@ -1,5 +1,5 @@ // @flow -import React from 'react' +import React, { Component } from 'react' import { shallow } from 'enzyme' import { resetStyled, expectCSSMatches } from './utils' @@ -23,6 +23,26 @@ describe('attrs', () => { expect(shallow().html()).toEqual('') }) + it('pass a React component', () => { + class ReactComponent extends Component { + render() { + return ( +

React Component

+ ) + } + } + + const Button = ({ component: ChildComponent }) => ( + + ) + + const Comp = styled(Button).attrs({ + component: ReactComponent, + })`` + + expect(shallow().html()).toEqual('') + }) + it('call an attr function', () => { const Comp = styled.button.attrs({ type: () => 'button' diff --git a/src/utils/hasInInheritanceChain.js b/src/utils/hasInInheritanceChain.js new file mode 100644 index 000000000..2d86ce702 --- /dev/null +++ b/src/utils/hasInInheritanceChain.js @@ -0,0 +1,15 @@ +// @flow + +export default function hasInInheritanceChain(child: any, parent: Function) { + let target = child + + while (target) { + target = Object.getPrototypeOf(target) + + if (target && target === parent) { + return true + } + } + + return false +} diff --git a/src/utils/isClass.js b/src/utils/isClass.js deleted file mode 100644 index 57e9ce4fe..000000000 --- a/src/utils/isClass.js +++ /dev/null @@ -1,5 +0,0 @@ -// @flow - -export default function isClass(target: any) { - return typeof target === 'function' && /^\s*class\s+/.test(target.toString()) -} diff --git a/test-results.json b/test-results.json index c10d78766..937ad8cd5 100644 --- a/test-results.json +++ b/test-results.json @@ -1 +1 @@ -{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":31,"numPassedTests":226,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":31,"numTotalTests":226,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"unmatched":0,"updated":0},"startTime":1527000827956,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should allow all the reactProps"},{"failureMessages":[],"status":"passed","title":"should allow all the html props"},{"failureMessages":[],"status":"passed","title":"should handle all the SVG props"},{"failureMessages":[],"status":"passed","title":"should handle aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should handle uppercase aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should allow all the event handlers"},{"failureMessages":[],"status":"passed","title":"should not allow custom props"}],"endTime":1527000832728,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/validAttr.test.js","startTime":1527000830399,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527000833345,"message":"","name":"/Users/val/Desktop/styled-components/src/test/ssr.test.js","startTime":1527000830309,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called with a valid element"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should allow you to pass in style objects"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"failureMessages":[],"status":"passed","title":"handle media at-rules inside style rules"}],"endTime":1527000833365,"message":"","name":"/Users/val/Desktop/styled-components/src/test/basic.test.js","startTime":1527000830402,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527000833374,"message":"","name":"/Users/val/Desktop/styled-components/src/test/styles.test.js","startTime":1527000830425,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527000833478,"message":"","name":"/Users/val/Desktop/styled-components/src/test/rehydration.test.js","startTime":1527000830316,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527000833481,"message":"","name":"/Users/val/Desktop/styled-components/src/test/extending.test.js","startTime":1527000832999,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should inject styles into two parallel contexts"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527000833490,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527000830433,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527000833641,"message":"","name":"/Users/val/Desktop/styled-components/src/test/theme.test.js","startTime":1527000830403,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work for null or empty"},{"failureMessages":[],"status":"passed","title":"should ignore anything before the first SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC with multiple lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with single lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with multiple lines"},{"failureMessages":[],"status":"passed","title":"should include whitespace after a component"}],"endTime":1527000833817,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527000833702,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527000833852,"message":"","name":"/Users/val/Desktop/styled-components/src/test/expanded-api.test.js","startTime":1527000833604,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"handles nested objects"},{"failureMessages":[],"status":"passed","title":"toStrings class instances"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"passes values to function"},{"failureMessages":[],"status":"passed","title":"recursively calls functions"}],"endTime":1527000833859,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/flatten.test.js","startTime":1527000833692,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"merges strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"resolves rulesets after executing functions"},{"failureMessages":[],"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527000833902,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/flatten.test.js","startTime":1527000833712,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when no children are passed"},{"failureMessages":[],"status":"passed","title":"should accept a theme prop that's a plain object"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should merge its theme with an outer theme"},{"failureMessages":[],"status":"passed","title":"should merge its theme with multiple outer themes"},{"failureMessages":[],"status":"passed","title":"should be able to render two independent themes"},{"failureMessages":[],"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527000833902,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527000833594,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"},{"failureMessages":[],"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527000834030,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527000833843,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"adds an id and a name to a given dictionary"},{"failureMessages":[],"status":"passed","title":"removes all names for an ID"},{"failureMessages":[],"status":"passed","title":"checks the existance of a name for an id"},{"failureMessages":[],"status":"passed","title":"lists out all known names as a continuous string"},{"failureMessages":[],"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527000834141,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/styleNames.test.js","startTime":1527000834036,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527000834204,"message":"","name":"/Users/val/Desktop/styled-components/src/test/staticCaching.test.js","startTime":1527000834040,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1527000834226,"message":"","name":"/Users/val/Desktop/styled-components/src/test/css.test.js","startTime":1527000834061,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527000834247,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/basic.test.js","startTime":1527000834108,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1527000834379,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/keyframes.test.js","startTime":1527000834228,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527000834497,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527000834374,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527000834541,"message":"","name":"/Users/val/Desktop/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527000834108,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527000834586,"message":"","name":"/Users/val/Desktop/styled-components/src/test/props.test.js","startTime":1527000834423,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527000834609,"message":"","name":"/Users/val/Desktop/styled-components/src/test/overriding.test.js","startTime":1527000834479,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work with default SC_ATTR"},{"failureMessages":[],"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527000834618,"message":"","name":"/Users/val/Desktop/styled-components/src/test/constants.test.js","startTime":1527000834437,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"blindly interleave"},{"failureMessages":[],"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527000834687,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/interleave.test.js","startTime":1527000834588,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"defaults to reusing the component displayName"},{"failureMessages":[],"status":"passed","title":"falls back to the class name"},{"failureMessages":[],"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527000834808,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/getComponentName.test.js","startTime":1527000834707,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should take precedence over ThemeProvider"},{"failureMessages":[],"status":"passed","title":"should fallback to default theme"}],"endTime":1527000834826,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/determineTheme.test.js","startTime":1527000834751,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"failureMessages":[],"status":"passed","title":"replaces double hyphens with a single hyphen"},{"failureMessages":[],"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527000834857,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/escape.test.js","startTime":1527000834798,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should create alphabetic names for number input data"},{"failureMessages":[],"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527000834864,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527000834794,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1527000834944,"message":"","name":"/Users/val/Desktop/styled-components/src/test/attrs.test.js","startTime":1527000834633,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527000834978,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/styled.test.js","startTime":1527000834819,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":31,"numPassedTests":227,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":31,"numTotalTests":227,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"unmatched":0,"updated":0},"startTime":1527236401957,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527236403503,"message":"","name":"/Users/val/Desktop/styled-components/src/test/ssr.test.js","startTime":1527236403104,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527236404319,"message":"","name":"/Users/val/Desktop/styled-components/src/test/styles.test.js","startTime":1527236403866,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"pass a React component"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1527236404340,"message":"","name":"/Users/val/Desktop/styled-components/src/test/attrs.test.js","startTime":1527236403883,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527236404374,"message":"","name":"/Users/val/Desktop/styled-components/src/test/rehydration.test.js","startTime":1527236403855,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called with a valid element"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should allow you to pass in style objects"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"failureMessages":[],"status":"passed","title":"handle media at-rules inside style rules"}],"endTime":1527236404394,"message":"","name":"/Users/val/Desktop/styled-components/src/test/basic.test.js","startTime":1527236403897,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527236404412,"message":"","name":"/Users/val/Desktop/styled-components/src/test/theme.test.js","startTime":1527236403825,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should inject styles into two parallel contexts"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527236404427,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527236403863,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527236404644,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/basic.test.js","startTime":1527236404572,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should allow all the reactProps"},{"failureMessages":[],"status":"passed","title":"should allow all the html props"},{"failureMessages":[],"status":"passed","title":"should handle all the SVG props"},{"failureMessages":[],"status":"passed","title":"should handle aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should handle uppercase aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should allow all the event handlers"},{"failureMessages":[],"status":"passed","title":"should not allow custom props"}],"endTime":1527236404657,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/validAttr.test.js","startTime":1527236404540,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527236404659,"message":"","name":"/Users/val/Desktop/styled-components/src/test/extending.test.js","startTime":1527236404535,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when no children are passed"},{"failureMessages":[],"status":"passed","title":"should accept a theme prop that's a plain object"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should merge its theme with an outer theme"},{"failureMessages":[],"status":"passed","title":"should merge its theme with multiple outer themes"},{"failureMessages":[],"status":"passed","title":"should be able to render two independent themes"},{"failureMessages":[],"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527236404676,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527236404593,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527236404682,"message":"","name":"/Users/val/Desktop/styled-components/src/test/expanded-api.test.js","startTime":1527236404577,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527236404684,"message":"","name":"/Users/val/Desktop/styled-components/src/test/props.test.js","startTime":1527236404600,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527236404877,"message":"","name":"/Users/val/Desktop/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527236404574,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1527236404949,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/keyframes.test.js","startTime":1527236404883,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1527236404974,"message":"","name":"/Users/val/Desktop/styled-components/src/test/css.test.js","startTime":1527236404884,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"},{"failureMessages":[],"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527236404975,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527236404881,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527236404998,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/styled.test.js","startTime":1527236404916,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527236405024,"message":"","name":"/Users/val/Desktop/styled-components/src/test/staticCaching.test.js","startTime":1527236404924,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work with default SC_ATTR"},{"failureMessages":[],"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527236404981,"message":"","name":"/Users/val/Desktop/styled-components/src/test/constants.test.js","startTime":1527236404860,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"merges strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"resolves rulesets after executing functions"},{"failureMessages":[],"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527236405102,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/flatten.test.js","startTime":1527236405024,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527236405168,"message":"","name":"/Users/val/Desktop/styled-components/src/test/overriding.test.js","startTime":1527236405112,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"handles nested objects"},{"failureMessages":[],"status":"passed","title":"toStrings class instances"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"passes values to function"},{"failureMessages":[],"status":"passed","title":"recursively calls functions"}],"endTime":1527236405215,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/flatten.test.js","startTime":1527236405153,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"adds an id and a name to a given dictionary"},{"failureMessages":[],"status":"passed","title":"removes all names for an ID"},{"failureMessages":[],"status":"passed","title":"checks the existance of a name for an id"},{"failureMessages":[],"status":"passed","title":"lists out all known names as a continuous string"},{"failureMessages":[],"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527236405232,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/styleNames.test.js","startTime":1527236405171,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527236405237,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527236405162,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"failureMessages":[],"status":"passed","title":"replaces double hyphens with a single hyphen"},{"failureMessages":[],"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527236405256,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/escape.test.js","startTime":1527236405214,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"blindly interleave"},{"failureMessages":[],"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527236405293,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/interleave.test.js","startTime":1527236405239,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"defaults to reusing the component displayName"},{"failureMessages":[],"status":"passed","title":"falls back to the class name"},{"failureMessages":[],"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527236405328,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/getComponentName.test.js","startTime":1527236405266,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should take precedence over ThemeProvider"},{"failureMessages":[],"status":"passed","title":"should fallback to default theme"}],"endTime":1527236405357,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/determineTheme.test.js","startTime":1527236405330,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should create alphabetic names for number input data"},{"failureMessages":[],"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527236405386,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527236405346,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work for null or empty"},{"failureMessages":[],"status":"passed","title":"should ignore anything before the first SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC with multiple lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with single lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with multiple lines"},{"failureMessages":[],"status":"passed","title":"should include whitespace after a component"}],"endTime":1527236405406,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527236405374,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file diff --git a/typings/tests/attrs-test.tsx b/typings/tests/attrs-test.tsx index c7c654d9a..0d3664d63 100644 --- a/typings/tests/attrs-test.tsx +++ b/typings/tests/attrs-test.tsx @@ -3,7 +3,6 @@ import styled from "../.."; const Input = styled.input.attrs({ // we can define static props type: "password", - classAttr: class Text{}, // or we can define dynamic ones margin: (props: any) => props.size as string || "1em", From 7bf1dd0c6e9d16a85b43acaae472bb7a7c53af51 Mon Sep 17 00:00:00 2001 From: Rasmus Eneman Date: Fri, 25 May 2018 14:19:16 +0200 Subject: [PATCH 11/39] Update styled-components.d.ts Fixes #1758 Partial rollback of change in #1711 See issue for explanation of why it is necessary --- typings/styled-components.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/typings/styled-components.d.ts b/typings/styled-components.d.ts index ce50bc2a9..150631bc3 100644 --- a/typings/styled-components.d.ts +++ b/typings/styled-components.d.ts @@ -12,7 +12,7 @@ export type StyledProps

= ThemedStyledProps; export type ThemedOuterStyledProps = P & { theme?: T; - innerRef?: ((instance: object) => void) | RefObject + innerRef?: ((instance: any) => void) | RefObject }; export type OuterStyledProps

= ThemedOuterStyledProps; From a59a9d05614a5bc76b7f8ca31cc8f2d1bd401914 Mon Sep 17 00:00:00 2001 From: halvves Date: Fri, 25 May 2018 14:43:07 -0400 Subject: [PATCH 12/39] remove lodash flow-typed defs it appears as though lodash was removed in favor of smaller utils. this manually edited flow-typed defs was failing flow checks. --- flow-typed/lodash_v4.x.x.js | 499 ------------------------------------ 1 file changed, 499 deletions(-) delete mode 100644 flow-typed/lodash_v4.x.x.js diff --git a/flow-typed/lodash_v4.x.x.js b/flow-typed/lodash_v4.x.x.js deleted file mode 100644 index 90715876b..000000000 --- a/flow-typed/lodash_v4.x.x.js +++ /dev/null @@ -1,499 +0,0 @@ -// Manually modified version of flow-typed/lodash - -declare module 'lodash' { - declare type TemplateSettings = { - escape?: RegExp, - evaluate?: RegExp, - imports?: Object, - interpolate?: RegExp, - variable?: string, - }; - - declare type TruncateOptions = { - length?: number, - omission?: string, - separator?: RegExp|string, - }; - - declare type DebounceOptions = { - leading?: bool, - maxWait?: number, - trailing?: bool, - }; - - declare type ThrottleOptions = { - leading?: bool, - trailing?: bool, - }; - - declare type NestedArray = Array>; - - declare type OPredicate = - | ((value: A, key: string, object: O) => any) - | Object - | string; - declare type OIterateeWithResult = Object|string|((value: V, key: string, object: O) => R); - declare type OIteratee = OIterateeWithResult; - - declare type Predicate = - | ((value: T, index: number, array: Array) => any) - | Object - | string; - declare type _Iteratee = (item: T, index: number, array: ?Array) => mixed; - declare type Iteratee = _Iteratee|Object|string; - declare type Iteratee2 = ((item: T, index: number, array: ?Array) => U)|Object|string; - declare type FlatMapIteratee = ((item: T, index: number, array: ?Array) => Array)|Object|string; - declare type Comparator = (item: T, item2: T) => bool; - - declare type MapIterator1 = (item: T) => U; - declare type MapIterator2 = (item: T, index: number) => U; - declare type MapIterator3 = (item: T, index: number, array: Array) => U; - declare type MapIterator = MapIterator1|MapIterator2|MapIterator3; - - declare class Lodash { - // Array - chunk(array: ?Array, size?: number): Array>; - compact(array: Array): Array; - concat(base: Array, ...elements: Array): Array; - difference(array: ?Array, values?: Array): Array; - differenceBy(array: ?Array, values: Array, iteratee: Iteratee): T[]; - differenceWith(array: T[], values: T[], comparator?: Comparator): T[]; - drop(array: ?Array, n?: number): Array; - dropRight(array: ?Array, n?: number): Array; - dropRightWhile(array: ?Array, predicate?: Predicate): Array; - dropWhile(array: ?Array, predicate?: Predicate): Array; - fill(array: ?Array, value: U, start?: number, end?: number): Array; - findIndex(array: ?Array, predicate?: Predicate): number; - findLastIndex(array: ?Array, predicate?: Predicate): number; - // alias of _.head - first(array: ?Array): T; - flatten(array: Array|X>): Array; - flattenDeep(array: any[]): Array; - flattenDepth(array: any[], depth?: number): any[]; - fromPairs(pairs: Array): Object; - head(array: ?Array): T; - indexOf(array: ?Array, value: T, fromIndex?: number): number; - initial(array: ?Array): Array; - intersection(...arrays: Array>): Array; - //Workaround until (...parameter: T, parameter2: U) works - intersectionBy(a1: Array, iteratee?: Iteratee): Array; - intersectionBy(a1: Array, a2: Array, iteratee?: Iteratee): Array; - intersectionBy(a1: Array, a2: Array, a3: Array, iteratee?: Iteratee): Array; - intersectionBy(a1: Array, a2: Array, a3: Array, a4: Array, iteratee?: Iteratee): Array; - //Workaround until (...parameter: T, parameter2: U) works - intersectionWith(a1: Array, comparator: Comparator): Array; - intersectionWith(a1: Array, a2: Array, comparator: Comparator): Array; - intersectionWith(a1: Array, a2: Array, a3: Array, comparator: Comparator): Array; - intersectionWith(a1: Array, a2: Array, a3: Array, a4: Array, comparator: Comparator): Array; - join(array: ?Array, separator?: string): string; - last(array: ?Array): T; - lastIndexOf(array: ?Array, value: T, fromIndex?: number): number; - nth(array: T[], n?: number): T; - pull(array: ?Array, ...values?: Array): Array; - pullAll(array: ?Array, values: Array): Array; - pullAllBy(array: ?Array, values: Array, iteratee?: Iteratee): Array; - pullAllWith(array?: T[], values: T[], comparator?: Function): T[]; - pullAt(array: ?Array, ...indexed?: Array): Array; - pullAt(array: ?Array, indexed?: Array): Array; - remove(array: ?Array, predicate?: Predicate): Array; - reverse(array: ?Array): Array; - slice(array: ?Array, start?: number, end?: number): Array; - sortedIndex(array: ?Array, value: T): number; - sortedIndexBy(array: ?Array, value: T, iteratee?: Iteratee): number; - sortedIndexOf(array: ?Array, value: T): number; - sortedLastIndex(array: ?Array, value: T): number; - sortedLastIndexBy(array: ?Array, value: T, iteratee?: Iteratee): number; - sortedLastIndexOf(array: ?Array, value: T): number; - sortedUniq(array: ?Array): Array; - sortedUniqBy(array: ?Array, iteratee?: (value: T) => mixed): Array; - tail(array: ?Array): Array; - take(array: ?Array, n?: number): Array; - takeRight(array: ?Array, n?: number): Array; - takeRightWhile(array: ?Array, predicate?: Predicate): Array; - takeWhile(array: ?Array, predicate?: Predicate): Array; - union(array?: Array): Array; - unionBy(array?: Array, iteratee?: Iteratee): Array; - //Workaround until (...parameter: T, parameter2: U) works - unionWith(a1: Array, comparator?: Comparator): Array; - unionWith(a1: Array, a2: Array, comparator?: Comparator): Array; - unionWith(a1: Array, a2: Array, a3: Array, comparator?: Comparator): Array; - unionWith(a1: Array, a2: Array, a3: Array, a4: Array, comparator?: Comparator): Array; - uniq(array: ?Array): Array; - uniqBy(array: ?Array, iteratee?: Iteratee): Array; - uniqWith(array: ?Array, comparator?: Comparator): Array; - unzip(array: ?Array): Array; - unzipWith(array: ?Array, iteratee?: Iteratee): Array; - without(array: ?Array, ...values?: Array): Array; - xor(...array: Array>): Array; - //Workaround until (...parameter: T, parameter2: U) works - xorBy(a1: Array, iteratee?: Iteratee): Array; - xorBy(a1: Array, a2: Array, iteratee?: Iteratee): Array; - xorBy(a1: Array, a2: Array, a3: Array, iteratee?: Iteratee): Array; - xorBy(a1: Array, a2: Array, a3: Array, a4: Array, iteratee?: Iteratee): Array; - //Workaround until (...parameter: T, parameter2: U) works - xorWith(a1: Array, comparator?: Comparator): Array; - xorWith(a1: Array, a2: Array, comparator?: Comparator): Array; - xorWith(a1: Array, a2: Array, a3: Array, comparator?: Comparator): Array; - xorWith(a1: Array, a2: Array, a3: Array, a4: Array, comparator?: Comparator): Array; - zip(a1: A[], a2: B[]): Array<[A, B]>; - zip(a1: A[], a2: B[], a3: C[]): Array<[A, B, C]>; - zip(a1: A[], a2: B[], a3: C[], a4: D[]): Array<[A, B, C, D]>; - zip(a1: A[], a2: B[], a3: C[], a4: D[], a5: E[]): Array<[A, B, C, D, E]>; - - zipObject(props?: Array, values?: Array): Object; - zipObjectDeep(props?: any[], values?: any): Object; - //Workaround until (...parameter: T, parameter2: U) works - zipWith(a1: NestedArray, iteratee?: Iteratee): Array; - zipWith(a1: NestedArray, a2: NestedArray, iteratee?: Iteratee): Array; - zipWith(a1: NestedArray, a2: NestedArray, a3: NestedArray, iteratee?: Iteratee): Array; - zipWith(a1: NestedArray, a2: NestedArray, a3: NestedArray, a4: NestedArray, iteratee?: Iteratee): Array; - - // Collection - countBy(array: ?Array, iteratee?: Iteratee): Object; - countBy(object: T, iteratee?: OIteratee): Object; - // alias of _.forEach - each(array: ?Array, iteratee?: Iteratee): Array; - each(object: T, iteratee?: OIteratee): T; - // alias of _.forEachRight - eachRight(array: ?Array, iteratee?: Iteratee): Array; - eachRight(object: T, iteratee?: OIteratee): T; - every(array: ?Array, iteratee?: Iteratee): bool; - every(object: T, iteratee?: OIteratee): bool; - filter(array: ?Array, predicate?: Predicate): Array; - filter(object: T, predicate?: OPredicate): Array; - find(array: ?Array, predicate?: Predicate): T; - find(object: T, predicate?: OPredicate): V; - findLast(array: ?Array, predicate?: Predicate): T; - findLast(object: T, predicate?: OPredicate): V; - flatMap(array: ?Array, iteratee?: FlatMapIteratee): Array; - flatMapDeep(array: ?Array, iteratee?: FlatMapIteratee): Array; - flatMapDepth(array: ?Array, iteratee?: FlatMapIteratee, depth?: number): Array; - forEach(array: ?Array, iteratee?: Iteratee): Array; - forEach(object: T, iteratee?: OIteratee): T; - forEachRight(array: ?Array, iteratee?: Iteratee): Array; - forEachRight(object: T, iteratee?: OIteratee): T; - groupBy(array: ?Array, iteratee?: Iteratee): Object; - groupBy(object: T, iteratee?: OIteratee): Object; - includes(array: ?Array, value: T, fromIndex?: number): bool; - includes(object: T, value: any, fromIndex?: number): bool; - includes(str: string, value: string, fromIndex?: number): bool; - invokeMap(array: ?Array, path: ((value: T) => Array|string)|Array|string, ...args?: Array): Array; - invokeMap(object: T, path: ((value: any) => Array|string)|Array|string, ...args?: Array): Array; - keyBy(array: ?Array, iteratee?: Iteratee2): {[key: V]: T}; - keyBy(object: T, iteratee?: OIteratee): Object; - map(array: ?Array, iteratee?: MapIterator): Array; - map(object: ?T, iteratee?: OIterateeWithResult): Array; - map(str: ?string, iteratee?: (char: string, index: number, str: string) => any): string; - orderBy(array: ?Array, iteratees?: Array>|string, orders?: Array<'asc'|'desc'>|string): Array; - orderBy(object: T, iteratees?: Array>|string, orders?: Array<'asc'|'desc'>|string): Array; - partition(array: ?Array, predicate?: Predicate): NestedArray; - partition(object: T, predicate?: OPredicate): NestedArray; - reduce(array: ?Array, iteratee?: (accumulator: U, value: T, index: number, array: ?Array) => U, accumulator?: U): U; - reduce(object: T, iteratee?: (accumulator: U, value: any, key: string, object: T) => U, accumulator?: U): U; - reduceRight(array: ?Array, iteratee?: (accumulator: U, value: T, index: number, array: ?Array) => U, accumulator?: U): U; - reduceRight(object: T, iteratee?: (accumulator: U, value: any, key: string, object: T) => U, accumulator?: U): U; - reject(array: ?Array, predicate?: Predicate): Array; - reject(object: T, predicate?: OPredicate): Array; - sample(array: ?Array): T; - sample(object: T): V; - sampleSize(array: ?Array, n?: number): Array; - sampleSize(object: T, n?: number): Array; - shuffle(array: ?Array): Array; - shuffle(object: T): Array; - size(collection: Array|Object): number; - some(array: ?Array, predicate?: Predicate): bool; - some(object?: ?T, predicate?: OPredicate): bool; - sortBy(array: ?Array, ...iteratees?: Array>): Array; - sortBy(array: ?Array, iteratees?: Array>): Array; - sortBy(object: T, ...iteratees?: Array>): Array; - sortBy(object: T, iteratees?: Array>): Array; - - // Date - now(): number; - - // Function - after(n: number, fn: Function): Function; - ary(func: Function, n?: number): Function; - before(n: number, fn: Function): Function; - bind(func: Function, thisArg: any, ...partials: Array): Function; - bindKey(obj: Object, key: string, ...partials: Array): Function; - curry(func: Function, arity?: number): Function; - curryRight(func: Function, arity?: number): Function; - debounce(func: Function, wait?: number, options?: DebounceOptions): Function; - defer(func: Function, ...args?: Array): number; - delay(func: Function, wait: number, ...args?: Array): number; - flip(func: Function): Function; - memoize(func: Function, resolver?: Function): Function; - negate(predicate: Function): Function; - once(func: Function): Function; - overArgs(func: Function, ...transforms: Array): Function; - overArgs(func: Function, transforms: Array): Function; - partial(func: Function, ...partials: any[]): Function; - partialRight(func: Function, ...partials: Array): Function; - partialRight(func: Function, partials: Array): Function; - rearg(func: Function, ...indexes: Array): Function; - rearg(func: Function, indexes: Array): Function; - rest(func: Function, start?: number): Function; - spread(func: Function): Function; - throttle(func: Function, wait?: number, options?: ThrottleOptions): Function; - unary(func: Function): Function; - wrap(value: any, wrapper: Function): Function; - - // Lang - castArray(value: *): any[]; - clone(value: T): T; - cloneDeep(value: T): T; - cloneDeepWith(value: T, customizer?: ?(value: T, key: number|string, object: T, stack: any) => U): U; - cloneWith(value: T, customizer?: ?(value: T, key: number|string, object: T, stack: any) => U): U; - conformsTo(source: T, predicates: T&{[key:string]:(x:any)=>boolean}): boolean; - eq(value: any, other: any): bool; - gt(value: any, other: any): bool; - gte(value: any, other: any): bool; - isArguments(value: any): bool; - isArray(value: any): bool; - isArrayBuffer(value: any): bool; - isArrayLike(value: any): bool; - isArrayLikeObject(value: any): bool; - isBoolean(value: any): bool; - isBuffer(value: any): bool; - isDate(value: any): bool; - isElement(value: any): bool; - isEmpty(value: any): bool; - isEqual(value: any, other: any): bool; - isEqualWith(value: T, other: U, customizer?: (objValue: any, otherValue: any, key: number|string, object: T, other: U, stack: any) => bool|void): bool; - isError(value: any): bool; - isFinite(value: any): bool; - isFunction(value: Function): true; - isFunction(value: number|string|void|null|Object): false; - isInteger(value: any): bool; - isLength(value: any): bool; - isMap(value: any): bool; - isMatch(object?: ?Object, source: Object): bool; - isMatchWith(object: T, source: U, customizer?: (objValue: any, srcValue: any, key: number|string, object: T, source: U) => bool|void): bool; - isNaN(value: any): bool; - isNative(value: any): bool; - isNil(value: any): bool; - isNull(value: any): bool; - isNumber(value: any): bool; - isObject(value: any): bool; - isObjectLike(value: any): bool; - isPlainObject(value: any): bool; - isRegExp(value: any): bool; - isSafeInteger(value: any): bool; - isSet(value: any): bool; - isString(value: any): bool; - isSymbol(value: any): bool; - isTypedArray(value: any): bool; - isUndefined(value: any): bool; - isWeakMap(value: any): bool; - isWeakSet(value: any): bool; - lt(value: any, other: any): bool; - lte(value: any, other: any): bool; - toArray(value: any): Array; - toFinite(value: any): number; - toInteger(value: any): number; - toLength(value: any): number; - toNumber(value: any): number; - toPlainObject(value: any): Object; - toSafeInteger(value: any): number; - toString(value: any): string; - - // Math - add(augend: number, addend: number): number; - ceil(number: number, precision?: number): number; - divide(dividend: number, divisor: number): number; - floor(number: number, precision?: number): number; - max(array: ?Array): T; - maxBy(array: ?Array, iteratee?: Iteratee): T; - mean(array: Array<*>): number; - meanBy(array: Array, iteratee?: Iteratee): number; - min(array: ?Array): T; - minBy(array: ?Array, iteratee?: Iteratee): T; - multiply(multiplier: number, multiplicand: number): number; - round(number: number, precision?: number): number; - subtract(minuend: number, subtrahend: number): number; - sum(array: Array<*>): number; - sumBy(array: Array, iteratee?: Iteratee): number; - - // number - clamp(number: number, lower?: number, upper: number): number; - inRange(number: number, start?: number, end: number): bool; - random(lower?: number, upper?: number, floating?: bool): number; - - // Object - assign(object?: ?Object, ...sources?: Array): Object; - assignIn(a: A, b: B): A & B; - assignIn(a: A, b: B, c: C): A & B & C; - assignIn(a: A, b: B, c: C, d: D): A & B & C & D; - assignIn(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; - assignInWith(object: T, s1: A, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A) => any|void): Object; - assignInWith(object: T, s1: A, s2: B, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B) => any|void): Object; - assignInWith(object: T, s1: A, s2: B, s3: C, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C) => any|void): Object; - assignInWith(object: T, s1: A, s2: B, s3: C, s4: D, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C|D) => any|void): Object; - assignWith(object: T, s1: A, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A) => any|void): Object; - assignWith(object: T, s1: A, s2: B, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B) => any|void): Object; - assignWith(object: T, s1: A, s2: B, s3: C, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C) => any|void): Object; - assignWith(object: T, s1: A, s2: B, s3: C, s4: D, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C|D) => any|void): Object; - at(object?: ?Object, ...paths: Array): Array; - at(object?: ?Object, paths: Array): Array; - create(prototype: T, properties?: Object): $Supertype; - defaults(object?: ?Object, ...sources?: Array): Object; - defaultsDeep(object?: ?Object, ...sources?: Array): Object; - // alias for _.toPairs - entries(object?: ?Object): NestedArray; - // alias for _.toPairsIn - entriesIn(object?: ?Object): NestedArray; - // alias for _.assignIn - extend(a: A, b: B): A & B; - extend(a: A, b: B, c: C): A & B & C; - extend(a: A, b: B, c: C, d: D): A & B & C & D; - extend(a: A, b: B, c: C, d: D, e: E): A & B & C & D & E; - // alias for _.assignInWith - extendWith(object: T, s1: A, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A) => any|void): Object; - extendWith(object: T, s1: A, s2: B, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B) => any|void): Object; - extendWith(object: T, s1: A, s2: B, s3: C, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C) => any|void): Object; - extendWith(object: T, s1: A, s2: B, s3: C, s4: D, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C|D) => any|void): Object; - findKey(object?: ?T, predicate?: OPredicate): string|void; - findLastKey(object?: ?T, predicate?: OPredicate): string|void; - forIn(object?: ?Object, iteratee?: OIteratee<*>): Object; - forInRight(object?: ?Object, iteratee?: OIteratee<*>): Object; - forOwn(object?: ?Object, iteratee?: OIteratee<*>): Object; - forOwnRight(object?: ?Object, iteratee?: OIteratee<*>): Object; - functions(object?: ?Object): Array; - functionsIn(object?: ?Object): Array; - get(object?: ?Object, path?: ?Array|string, defaultValue?: any): any; - has(object?: ?Object, path?: ?Array|string): bool; - hasIn(object?: ?Object, path?: ?Array|string): bool; - invert(object?: ?Object, multiVal?: bool): Object; - invertBy(object: ?Object, iteratee?: Function): Object; - invoke(object?: ?Object, path?: ?Array|string, ...args?: Array): any; - keys(object?: ?Object): Array; - keysIn(object?: ?Object): Array; - mapKeys(object?: ?Object, iteratee?: OIteratee<*>): Object; - mapValues(object?: ?Object, iteratee?: OIteratee<*>): Object; - merge(object?: ?Object, ...sources?: Array): Object; - mergeWith(object: T, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A) => any|void): Object; - mergeWith(object: T, s1: A, s2: B, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B) => any|void): Object; - mergeWith(object: T, s1: A, s2: B, s3: C, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C) => any|void): Object; - mergeWith(object: T, s1: A, s2: B, s3: C, s4: D, customizer?: (objValue: any, srcValue: any, key: string, object: T, source: A|B|C|D) => any|void): Object; - omit(object?: ?Object, ...props: Array): Object; - omit(object?: ?Object, props: Array): Object; - omitBy(object?: ?T, predicate?: OPredicate): Object; - pick(object?: ?Object, ...props: Array): Object; - pick(object?: ?Object, props: Array): Object; - pickBy(object?: ?T, predicate?: OPredicate): Object; - result(object?: ?Object, path?: ?Array|string, defaultValue?: any): any; - set(object?: ?Object, path?: ?Array|string, value: any): Object; - setWith(object: T, path?: ?Array|string, value: any, customizer?: (nsValue: any, key: string, nsObject: T) => any): Object; - toPairs(object?: ?Object|Array<*>): NestedArray; - toPairsIn(object?: ?Object): NestedArray; - transform(collection: Object|Array, iteratee?: OIteratee<*>, accumulator?: any): any; - unset(object?: ?Object, path?: ?Array|string): bool; - update(object: Object, path: string[]|string, updater: Function): Object; - updateWith(object: Object, path: string[]|string, updater: Function, customizer?: Function): Object; - values(object?: ?Object): Array; - valuesIn(object?: ?Object): Array; - - // Seq - // harder to read, but this is _() - (value: any): any; - chain(value: T): any; - tap(value: T, interceptor: (value:T)=>any): T; - thru(value: T1, interceptor: (value:T1)=>T2): T2; - // TODO: _.prototype.* - - // String - camelCase(string?: ?string): string; - capitalize(string?: string): string; - deburr(string?: string): string; - endsWith(string?: string, target?: string, position?: number): bool; - escape(string?: string): string; - escapeRegExp(string?: string): string; - kebabCase(string?: string): string; - lowerCase(string?: string): string; - lowerFirst(string?: string): string; - pad(string?: string, length?: number, chars?: string): string; - padEnd(string?: string, length?: number, chars?: string): string; - padStart(string?: string, length?: number, chars?: string): string; - parseInt(string: string, radix?: number): number; - repeat(string?: string, n?: number): string; - replace(string?: string, pattern: RegExp|string, replacement: ((string: string) => string)|string): string; - snakeCase(string?: string): string; - split(string?: string, separator: RegExp|string, limit?: number): Array; - startCase(string?: string): string; - startsWith(string?: string, target?: string, position?: number): bool; - template(string?: string, options?: TemplateSettings): Function; - toLower(string?: string): string; - toUpper(string?: string): string; - trim(string?: string, chars?: string): string; - trimEnd(string?: string, chars?: string): string; - trimStart(string?: string, chars?: string): string; - truncate(string?: string, options?: TruncateOptions): string; - unescape(string?: string): string; - upperCase(string?: string): string; - upperFirst(string?: string): string; - words(string?: string, pattern?: RegExp|string): Array; - - // Util - attempt(func: Function): any; - bindAll(object?: ?Object, methodNames: Array): Object; - bindAll(object?: ?Object, ...methodNames: Array): Object; - cond(pairs: NestedArray): Function; - conforms(source: Object): Function; - constant(value: T): () => T; - defaultTo(value: T1, default: T2): T1; - // NaN is a number instead of its own type, otherwise it would behave like null/void - defaultTo(value: T1, default: T2): T1|T2; - defaultTo(value: T1, default: T2): T2; - flow(...funcs?: Array): Function; - flow(funcs?: Array): Function; - flowRight(...funcs?: Array): Function; - flowRight(funcs?: Array): Function; - identity(value: T): T; - iteratee(func?: any): Function; - matches(source: Object): Function; - matchesProperty(path?: ?Array|string, srcValue: any): Function; - method(path?: ?Array|string, ...args?: Array): Function; - methodOf(object?: ?Object, ...args?: Array): Function; - mixin(object?: T, source: Object, options?: { chain: bool }): T; - noConflict(): Lodash; - noop(): void; - nthArg(n?: number): Function; - over(...iteratees: Array): Function; - over(iteratees: Array): Function; - overEvery(...predicates: Array): Function; - overEvery(predicates: Array): Function; - overSome(...predicates: Array): Function; - overSome(predicates: Array): Function; - property(path?: ?Array|string): Function; - propertyOf(object?: ?Object): Function; - range(start: number, end: number, step?: number): Array; - range(end: number, step?: number): Array; - rangeRight(start: number, end: number, step?: number): Array; - rangeRight(end: number, step?: number): Array; - runInContext(context?: Object): Function; - - stubArray(): Array<*>; - stubFalse(): false; - stubObject(): {}; - stubString(): ''; - stubTrue(): true; - times(n: number, iteratee?: Function): Function; - toPath(value: any): Array; - uniqueId(prefix?: string): string; - - // Properties - VERSION: string; - templateSettings: TemplateSettings; - } - - declare var exports: Lodash; -} - -declare module 'lodash/isPlainObject' { - declare module.exports: (value: any) => bool; -} - -declare module 'lodash/isFunction' { - declare module.exports: (value: Function) => boolean; -} From c1826f0246b912f626301cb9e7cc60bef15a8161 Mon Sep 17 00:00:00 2001 From: halvves Date: Fri, 25 May 2018 15:40:47 -0400 Subject: [PATCH 13/39] add changelog entry for #1748 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a9b3b898..0313c9e88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ _The format is based on [Keep a Changelog](http://keepachangelog.com/) and this ## Unreleased -- n/a +- Upgrade flow-bin to latest, by @halvves (see #1748) ## [v3.3.0] - 2018-05-25 From a21722e198015520f459278db3589b2970b2f6cd Mon Sep 17 00:00:00 2001 From: halvves Date: Mon, 28 May 2018 23:43:20 -0400 Subject: [PATCH 14/39] bump flow-bin version to 0.73.0 --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 20d400b16..b7570bcf3 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "eslint-plugin-prettier": "^2.4.0", "eslint-plugin-react": "^6.8.0", "express": "^4.14.1", - "flow-bin": "^0.72.0", + "flow-bin": "^0.73.0", "flow-watch": "^1.1.1", "husky": "^0.14.3", "jest": "^23.0.0", diff --git a/yarn.lock b/yarn.lock index 88b044ec8..cfdc2edc4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3258,9 +3258,9 @@ flexibility@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flexibility/-/flexibility-2.0.1.tgz#ad323aafc40f469ce624286518fc4d7cd72b7c77" -flow-bin@^0.72.0: - version "0.72.0" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.72.0.tgz#12051180fb2db7ccb728fefe67c77e955e92a44d" +flow-bin@^0.73.0: + version "0.73.0" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.73.0.tgz#da1b90a02b0ef9c439f068c2fc14968db83be425" flow-remove-types@^1.1.0: version "1.2.3" From 0e18d00df54a5e75d9c3eb6dba5abceaf36b018d Mon Sep 17 00:00:00 2001 From: Valery Bugakov Date: Tue, 29 May 2018 09:35:30 +0400 Subject: [PATCH 15/39] Inline inheritance check --- src/models/StyledComponent.js | 3 +-- src/models/StyledNativeComponent.js | 3 +-- test-results.json | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/models/StyledComponent.js b/src/models/StyledComponent.js index 1e6acc33b..07af8bce7 100644 --- a/src/models/StyledComponent.js +++ b/src/models/StyledComponent.js @@ -83,10 +83,9 @@ export default (ComponentStyle: Function, constructWithOptions: Function) => { this.attrs = Object.keys(attrs).reduce((acc, key) => { const attr = attrs[key] - const extendsReactComponent = hasInInheritanceChain(attr, Component) // eslint-disable-next-line no-param-reassign acc[key] = - typeof attr === 'function' && !extendsReactComponent + typeof attr === 'function' && !hasInInheritanceChain(attr, Component) ? attr(context) : attr return acc diff --git a/src/models/StyledNativeComponent.js b/src/models/StyledNativeComponent.js index f1b6322c2..39172b8eb 100644 --- a/src/models/StyledNativeComponent.js +++ b/src/models/StyledNativeComponent.js @@ -43,10 +43,9 @@ export default (constructWithOptions: Function, InlineStyle: Function) => { this.attrs = Object.keys(attrs).reduce((acc, key) => { const attr = attrs[key] - const extendsReactComponent = hasInInheritanceChain(attr, Component) // eslint-disable-next-line no-param-reassign acc[key] = - typeof attr === 'function' && !extendsReactComponent + typeof attr === 'function' && !hasInInheritanceChain(attr, Component) ? attr(context) : attr return acc diff --git a/test-results.json b/test-results.json index 0c5f51fcd..5c80447eb 100644 --- a/test-results.json +++ b/test-results.json @@ -1 +1 @@ -{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":32,"numPassedTests":233,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":32,"numTotalTests":233,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"unmatched":0,"updated":0},"startTime":1527322404775,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527322406301,"message":"","name":"/Users/val/Desktop/styled-components/src/test/ssr.test.js","startTime":1527322405881,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527322407072,"message":"","name":"/Users/val/Desktop/styled-components/src/test/styles.test.js","startTime":1527322406564,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527322407163,"message":"","name":"/Users/val/Desktop/styled-components/src/test/rehydration.test.js","startTime":1527322406585,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called with a valid element"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should allow you to pass in style objects"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"failureMessages":[],"status":"passed","title":"handle media at-rules inside style rules"},{"failureMessages":[],"status":"passed","title":"should hoist non-react static properties"},{"failureMessages":[],"status":"passed","title":"should not hoist styled component statics"}],"endTime":1527322407166,"message":"","name":"/Users/val/Desktop/styled-components/src/test/basic.test.js","startTime":1527322406605,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should inject styles into two parallel contexts"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527322407186,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527322406601,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527322407198,"message":"","name":"/Users/val/Desktop/styled-components/src/test/theme.test.js","startTime":1527322406565,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"pass a React component"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1527322407224,"message":"","name":"/Users/val/Desktop/styled-components/src/test/attrs.test.js","startTime":1527322406688,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"handles a string type"},{"failureMessages":[],"status":"passed","title":"handles a React class type"},{"failureMessages":[],"status":"passed","title":"handles a React class type with displayName"}],"endTime":1527322407323,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/generateDisplayName.test.js","startTime":1527322407269,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should allow all the reactProps"},{"failureMessages":[],"status":"passed","title":"should allow all the html props"},{"failureMessages":[],"status":"passed","title":"should handle all the SVG props"},{"failureMessages":[],"status":"passed","title":"should handle aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should handle uppercase aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should allow all the event handlers"},{"failureMessages":[],"status":"passed","title":"should not allow custom props"},{"failureMessages":[],"status":"passed","title":"should handle x attributes"}],"endTime":1527322407404,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/validAttr.test.js","startTime":1527322407261,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when no children are passed"},{"failureMessages":[],"status":"passed","title":"should accept a theme prop that's a plain object"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should merge its theme with an outer theme"},{"failureMessages":[],"status":"passed","title":"should merge its theme with multiple outer themes"},{"failureMessages":[],"status":"passed","title":"should be able to render two independent themes"},{"failureMessages":[],"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527322407445,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527322407347,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527322407468,"message":"","name":"/Users/val/Desktop/styled-components/src/test/expanded-api.test.js","startTime":1527322407359,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527322407476,"message":"","name":"/Users/val/Desktop/styled-components/src/test/extending.test.js","startTime":1527322407339,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527322407517,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/styled.test.js","startTime":1527322407420,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527322407634,"message":"","name":"/Users/val/Desktop/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527322407349,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work with default SC_ATTR"},{"failureMessages":[],"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527322407638,"message":"","name":"/Users/val/Desktop/styled-components/src/test/constants.test.js","startTime":1527322407537,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"merges strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"resolves rulesets after executing functions"},{"failureMessages":[],"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527322407647,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/flatten.test.js","startTime":1527322407572,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527322407747,"message":"","name":"/Users/val/Desktop/styled-components/src/test/props.test.js","startTime":1527322407668,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527322407770,"message":"","name":"/Users/val/Desktop/styled-components/src/test/staticCaching.test.js","startTime":1527322407683,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"handles nested objects"},{"failureMessages":[],"status":"passed","title":"toStrings class instances"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"passes values to function"},{"failureMessages":[],"status":"passed","title":"recursively calls functions"}],"endTime":1527322407772,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/flatten.test.js","startTime":1527322407696,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"},{"failureMessages":[],"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527322407840,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527322407736,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527322407889,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/basic.test.js","startTime":1527322407807,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527322407916,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527322407806,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1527322407945,"message":"","name":"/Users/val/Desktop/styled-components/src/test/css.test.js","startTime":1527322407862,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"adds an id and a name to a given dictionary"},{"failureMessages":[],"status":"passed","title":"removes all names for an ID"},{"failureMessages":[],"status":"passed","title":"checks the existance of a name for an id"},{"failureMessages":[],"status":"passed","title":"lists out all known names as a continuous string"},{"failureMessages":[],"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527322407973,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/styleNames.test.js","startTime":1527322407927,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"defaults to reusing the component displayName"},{"failureMessages":[],"status":"passed","title":"falls back to the class name"},{"failureMessages":[],"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527322407986,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/getComponentName.test.js","startTime":1527322407941,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1527322408026,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/keyframes.test.js","startTime":1527322407925,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527322408050,"message":"","name":"/Users/val/Desktop/styled-components/src/test/overriding.test.js","startTime":1527322407996,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"blindly interleave"},{"failureMessages":[],"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527322408099,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/interleave.test.js","startTime":1527322408044,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should create alphabetic names for number input data"},{"failureMessages":[],"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527322408140,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527322408102,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"failureMessages":[],"status":"passed","title":"replaces double hyphens with a single hyphen"},{"failureMessages":[],"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527322408145,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/escape.test.js","startTime":1527322408097,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work for null or empty"},{"failureMessages":[],"status":"passed","title":"should ignore anything before the first SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC with multiple lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with single lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with multiple lines"},{"failureMessages":[],"status":"passed","title":"should include whitespace after a component"}],"endTime":1527322408146,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527322408108,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should take precedence over ThemeProvider"},{"failureMessages":[],"status":"passed","title":"should fallback to default theme"}],"endTime":1527322408156,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/determineTheme.test.js","startTime":1527322408127,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":32,"numPassedTests":233,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":32,"numTotalTests":233,"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"unmatched":0,"updated":0},"startTime":1527572082853,"success":true,"testResults":[{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should extract the CSS in a simple case"},{"failureMessages":[],"status":"passed","title":"should extract both global and local CSS"},{"failureMessages":[],"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"failureMessages":[],"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"failureMessages":[],"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"failureMessages":[],"status":"passed","title":"should share global styles but keep renders separate"},{"failureMessages":[],"status":"passed","title":"should allow global styles to be injected during rendering"},{"failureMessages":[],"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element"},{"failureMessages":[],"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"failureMessages":[],"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527572086051,"message":"","name":"/Users/val/Desktop/styled-components/src/test/ssr.test.js","startTime":1527572084200,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should append a style"},{"failureMessages":[],"status":"passed","title":"should append multiple styles"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with media queries"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with nesting"},{"failureMessages":[],"status":"passed","title":"should handle inline style objects with contextual selectors"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components"},{"failureMessages":[],"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"failureMessages":[],"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"failureMessages":[],"status":"passed","title":"should respect removed rules"},{"failureMessages":[],"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527572087028,"message":"","name":"/Users/val/Desktop/styled-components/src/test/styles.test.js","startTime":1527572085100,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when called with a valid element"},{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"failureMessages":[],"status":"passed","title":"should not inject anything by default"},{"failureMessages":[],"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"failureMessages":[],"status":"passed","title":"should inject styles"},{"failureMessages":[],"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"failureMessages":[],"status":"passed","title":"Should have the correct styled(component) displayName"},{"failureMessages":[],"status":"passed","title":"should allow you to pass in style objects"},{"failureMessages":[],"status":"passed","title":"should pass the ref to the component"},{"failureMessages":[],"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the full className to the wrapped child"},{"failureMessages":[],"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"failureMessages":[],"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"failureMessages":[],"status":"passed","title":"handle media at-rules inside style rules"},{"failureMessages":[],"status":"passed","title":"should hoist non-react static properties"},{"failureMessages":[],"status":"passed","title":"should not hoist styled component statics"}],"endTime":1527572087056,"message":"","name":"/Users/val/Desktop/styled-components/src/test/basic.test.js","startTime":1527572085065,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"work fine with an empty object"},{"failureMessages":[],"status":"passed","title":"pass a simple attr"},{"failureMessages":[],"status":"passed","title":"pass a React component"},{"failureMessages":[],"status":"passed","title":"call an attr function"},{"failureMessages":[],"status":"passed","title":"pass props to the attr function"},{"failureMessages":[],"status":"passed","title":"should replace attrs with props"},{"failureMessages":[],"status":"passed","title":"should merge className"},{"failureMessages":[],"status":"passed","title":"should merge className even if its a function"},{"failureMessages":[],"status":"passed","title":"should work with data and aria attributes"},{"failureMessages":[],"status":"passed","title":"merge attrs"},{"failureMessages":[],"status":"passed","title":"merge attrs when inheriting SC"},{"failureMessages":[],"status":"passed","title":"pass attrs to style block"},{"failureMessages":[],"status":"passed","title":"should pass through children as a normal prop"},{"failureMessages":[],"status":"passed","title":"should pass through complex children as well"},{"failureMessages":[],"status":"passed","title":"should override children of course"}],"endTime":1527572087079,"message":"","name":"/Users/val/Desktop/styled-components/src/test/attrs.test.js","startTime":1527572085132,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should use given stylesheet instance"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should append style to given target"},{"failureMessages":[],"status":"passed","title":"should append style to given target in iframe"},{"failureMessages":[],"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"failureMessages":[],"status":"passed","title":"should inject styles into two parallel contexts"},{"failureMessages":[],"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527572087169,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527572085086,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should append a new component like normal"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and generated class"},{"failureMessages":[],"status":"passed","title":"should reuse a componentId and inject new classes"},{"failureMessages":[],"status":"passed","title":"should preserve the styles"},{"failureMessages":[],"status":"passed","title":"should not inject new styles for a component already rendered"},{"failureMessages":[],"status":"passed","title":"should inject new styles for a new computed style of a component"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should generate new classes, even if they have the same name"},{"failureMessages":[],"status":"passed","title":"should leave the existing styles there"},{"failureMessages":[],"status":"passed","title":"should inject new global styles at the end"},{"failureMessages":[],"status":"passed","title":"should interleave global and local styles"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should replace stylesheets on-demand"},{"failureMessages":[],"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"failureMessages":[],"status":"passed","title":"should still not change styles if rendered in a different order"},{"failureMessages":[],"status":"passed","title":"should not touch existing styles"},{"failureMessages":[],"status":"passed","title":"should not regenerate keyframes"},{"failureMessages":[],"status":"passed","title":"should still inject new keyframes"},{"failureMessages":[],"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527572087189,"message":"","name":"/Users/val/Desktop/styled-components/src/test/rehydration.test.js","startTime":1527572085133,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"failureMessages":[],"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"failureMessages":[],"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"failureMessages":[],"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"failureMessages":[],"status":"passed","title":"should inject new CSS when the theme changes"},{"failureMessages":[],"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"failureMessages":[],"status":"passed","title":"should properly update style if theme is changed"},{"failureMessages":[],"status":"passed","title":"should properly update style if props used in styles is changed"},{"failureMessages":[],"status":"passed","title":"should change the classnames when the theme changes"},{"failureMessages":[],"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"failureMessages":[],"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"failureMessages":[],"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"failureMessages":[],"status":"passed","title":"should hoist static properties when using withTheme"},{"failureMessages":[],"status":"passed","title":"should only pass the theme prop"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on as ref"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"failureMessages":[],"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"failureMessages":[],"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527572087201,"message":"","name":"/Users/val/Desktop/styled-components/src/test/theme.test.js","startTime":1527572085070,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527572087483,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527572087398,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should allow all the reactProps"},{"failureMessages":[],"status":"passed","title":"should allow all the html props"},{"failureMessages":[],"status":"passed","title":"should handle all the SVG props"},{"failureMessages":[],"status":"passed","title":"should handle aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should handle uppercase aria and data attributes"},{"failureMessages":[],"status":"passed","title":"should allow all the event handlers"},{"failureMessages":[],"status":"passed","title":"should not allow custom props"},{"failureMessages":[],"status":"passed","title":"should handle x attributes"}],"endTime":1527572087489,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/validAttr.test.js","startTime":1527572087345,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should generate empty classes with no styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"failureMessages":[],"status":"passed","title":"should attach styles to child class if only child has styles"},{"failureMessages":[],"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"failureMessages":[],"status":"passed","title":"should generate different classes for both parent and child"},{"failureMessages":[],"status":"passed","title":"should copy nested rules to the child"},{"failureMessages":[],"status":"passed","title":"should keep default props from parent"},{"failureMessages":[],"status":"passed","title":"should keep prop types from parent"},{"failureMessages":[],"status":"passed","title":"should keep custom static member from parent"},{"failureMessages":[],"status":"passed","title":"should keep static member in triple inheritance"},{"failureMessages":[],"status":"passed","title":"should keep styles in >= 3 inheritances"},{"failureMessages":[],"status":"passed","title":"should allow changing component"},{"failureMessages":[],"status":"passed","title":"should allow changing component and extending"},{"failureMessages":[],"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527572087533,"message":"","name":"/Users/val/Desktop/styled-components/src/test/extending.test.js","startTime":1527572087371,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should inject rules into the head"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"failureMessages":[],"status":"passed","title":"should non-destructively inject styles when called after a component"},{"failureMessages":[],"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527572087606,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527572087475,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should be auto-generated if none passed"},{"failureMessages":[],"status":"passed","title":"should be attached if supplied"},{"failureMessages":[],"status":"passed","title":"should be generated as \"sc\" + hash"},{"failureMessages":[],"status":"passed","title":"should be generated from displayName + hash"},{"failureMessages":[],"status":"passed","title":"should be attached if passed in"},{"failureMessages":[],"status":"passed","title":"should be combined with displayName if both passed in"},{"failureMessages":[],"status":"passed","title":"should work with `.extend`"},{"failureMessages":[],"status":"passed","title":"should work with `.withComponent`"},{"failureMessages":[],"status":"passed","title":"should merge the options strings"},{"failureMessages":[],"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527572087639,"message":"","name":"/Users/val/Desktop/styled-components/src/test/expanded-api.test.js","startTime":1527572087464,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work with default SC_ATTR"},{"failureMessages":[],"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527572087650,"message":"","name":"/Users/val/Desktop/styled-components/src/test/constants.test.js","startTime":1527572087496,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should warn once"},{"failureMessages":[],"status":"passed","title":"should warn if number of classes is 200"},{"failureMessages":[],"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527572087765,"message":"","name":"/Users/val/Desktop/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527572087385,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should return its name"},{"failureMessages":[],"status":"passed","title":"should insert the correct styles"}],"endTime":1527572087782,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/keyframes.test.js","startTime":1527572087700,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should not throw an error when no children are passed"},{"failureMessages":[],"status":"passed","title":"should accept a theme prop that's a plain object"},{"failureMessages":[],"status":"passed","title":"should render its child"},{"failureMessages":[],"status":"passed","title":"should merge its theme with an outer theme"},{"failureMessages":[],"status":"passed","title":"should merge its theme with multiple outer themes"},{"failureMessages":[],"status":"passed","title":"should be able to render two independent themes"},{"failureMessages":[],"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527572087846,"message":"","name":"/Users/val/Desktop/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527572087707,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527572087894,"message":"","name":"/Users/val/Desktop/styled-components/src/constructors/test/styled.test.js","startTime":1527572087774,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should mark styles without any functions as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a nested styled component as static"},{"failureMessages":[],"status":"passed","title":"should mark styles with a dynamic style as not static"},{"failureMessages":[],"status":"passed","title":"should mark components with numeric attriutes as static"},{"failureMessages":[],"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527572087912,"message":"","name":"/Users/val/Desktop/styled-components/src/test/staticCaching.test.js","startTime":1527572087817,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should add vendor prefixes in the right order"},{"failureMessages":[],"status":"passed","title":"should add vendor prefixes for display"},{"failureMessages":[],"status":"passed","title":"should generate styles for nested media queries"},{"failureMessages":[],"status":"passed","title":"should pass through custom properties"}],"endTime":1527572087922,"message":"","name":"/Users/val/Desktop/styled-components/src/test/css.test.js","startTime":1527572087836,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should throw a meaningful error when called with null"},{"failureMessages":[],"status":"passed","title":"should correctly assemble preprocessed CSS"},{"failureMessages":[],"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527572087943,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/basic.test.js","startTime":1527572087833,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"handles nested objects"},{"failureMessages":[],"status":"passed","title":"toStrings class instances"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"passes values to function"},{"failureMessages":[],"status":"passed","title":"recursively calls functions"}],"endTime":1527572088073,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/flatten.test.js","startTime":1527572087983,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"doesnt merge strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"defers functions"},{"failureMessages":[],"status":"passed","title":"merges strings"},{"failureMessages":[],"status":"passed","title":"drops nulls"},{"failureMessages":[],"status":"passed","title":"doesnt drop any numbers"},{"failureMessages":[],"status":"passed","title":"toStrings everything"},{"failureMessages":[],"status":"passed","title":"hypenates objects"},{"failureMessages":[],"status":"passed","title":"flattens nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens double nested rulesets"},{"failureMessages":[],"status":"passed","title":"flattens subarrays"},{"failureMessages":[],"status":"passed","title":"executes functions"},{"failureMessages":[],"status":"passed","title":"resolves rulesets after executing functions"},{"failureMessages":[],"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527572088116,"message":"","name":"/Users/val/Desktop/styled-components/src/no-parser/test/flatten.test.js","startTime":1527572088043,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"blindly interleave"},{"failureMessages":[],"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527572088139,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/interleave.test.js","startTime":1527572088087,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should execute interpolations and fall back"},{"failureMessages":[],"status":"passed","title":"should execute interpolations and inject props"},{"failureMessages":[],"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527572088183,"message":"","name":"/Users/val/Desktop/styled-components/src/test/props.test.js","startTime":1527572088063,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"handles a string type"},{"failureMessages":[],"status":"passed","title":"handles a React class type"},{"failureMessages":[],"status":"passed","title":"handles a React class type with displayName"}],"endTime":1527572088197,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/generateDisplayName.test.js","startTime":1527572088123,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527572088205,"message":"","name":"/Users/val/Desktop/styled-components/src/test/overriding.test.js","startTime":1527572088110,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"failureMessages":[],"status":"passed","title":"replaces double hyphens with a single hyphen"},{"failureMessages":[],"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527572088219,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/escape.test.js","startTime":1527572088130,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"adds an id and a name to a given dictionary"},{"failureMessages":[],"status":"passed","title":"removes all names for an ID"},{"failureMessages":[],"status":"passed","title":"checks the existance of a name for an id"},{"failureMessages":[],"status":"passed","title":"lists out all known names as a continuous string"},{"failureMessages":[],"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527572088326,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/styleNames.test.js","startTime":1527572088264,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"defaults to reusing the component displayName"},{"failureMessages":[],"status":"passed","title":"falls back to the class name"},{"failureMessages":[],"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527572088377,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/getComponentName.test.js","startTime":1527572088312,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should create alphabetic names for number input data"},{"failureMessages":[],"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527572088392,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527572088334,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should work for null or empty"},{"failureMessages":[],"status":"passed","title":"should ignore anything before the first SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC"},{"failureMessages":[],"status":"passed","title":"should return a single SC with multiple lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with single lines"},{"failureMessages":[],"status":"passed","title":"should return multiple SCs with multiple lines"},{"failureMessages":[],"status":"passed","title":"should include whitespace after a component"}],"endTime":1527572088408,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527572088363,"status":"passed","summary":""},{"assertionResults":[{"failureMessages":[],"status":"passed","title":"should take precedence over ThemeProvider"},{"failureMessages":[],"status":"passed","title":"should fallback to default theme"}],"endTime":1527572088410,"message":"","name":"/Users/val/Desktop/styled-components/src/utils/test/determineTheme.test.js","startTime":1527572088355,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file From dc56a94d544e6f257b2b44107e938c7f440aede7 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Tue, 29 May 2018 20:30:10 -0400 Subject: [PATCH 16/39] use a newer node on appveyor --- appveyor.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 8dce4d446..6879bf748 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: "{build}" +version: '{build}' skip_tags: true build: off clone_depth: 1 @@ -7,12 +7,11 @@ matrix: fast_finish: true environment: matrix: - - nodejs_version: 7 - - nodejs_version: 6 + - nodejs_version: 8 init: - git config --global core.autocrlf input install: - - ps: Install-Product node $env:nodejs_version x64 + - ps: 'Install-Product node $env:nodejs_version x64' - set CI=true - yarn cache: From 157f196e4b2c637f695ecd45f17ba983296759cd Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Tue, 29 May 2018 20:41:29 -0400 Subject: [PATCH 17/39] update eslint and fix new linting errors hopefully eslint 4 has better windows compat --- .eslintrc | 20 +- package.json | 18 +- src/models/StyleSheet.js | 3 +- src/models/StyleTags.js | 12 +- src/models/StyledComponent.js | 4 +- src/models/StyledNativeComponent.js | 4 +- src/no-parser/index.js | 1 + src/utils/validAttr.js | 2 +- test-results.json | 2 +- yarn.lock | 612 ++++++++++++++-------------- 10 files changed, 343 insertions(+), 335 deletions(-) diff --git a/.eslintrc b/.eslintrc index a552b8009..998f15edd 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,20 +1,12 @@ { "parser": "babel-eslint", - "extends": [ - "airbnb", - "prettier", - "prettier/flowtype" - ], + "extends": ["airbnb", "prettier", "prettier/flowtype"], "globals": { "__SERVER__": true }, "plugins": ["flowtype", "flowtype-errors", "prettier"], "rules": { - "semi": 0, - "quotes": 0, - "comma-dangle": 0, "curly": [2, "multi-line"], - "arrow-parens": 0, "class-methods-use-this": 0, "symbol-description": 0, "no-unused-vars": [2, { "varsIgnorePattern": "^_+$" }], @@ -23,10 +15,15 @@ "no-else-return": 0, "react/sort-comp": 0, "react/jsx-filename-extension": 0, + "react/require-default-props": 0, "flowtype-errors/show-errors": 2, "no-prototype-builtins": 0, "no-duplicate-imports": 0, - "flowtype/require-valid-file-annotation": [2, "always", {"annotationStyle": "line"}], + "flowtype/require-valid-file-annotation": [ + 2, + "always", + { "annotationStyle": "line" } + ], "flowtype/boolean-style": [2, "boolean"], "flowtype/no-dupe-keys": 2, "flowtype/union-intersection-spacing": [2, "always"], @@ -37,7 +34,8 @@ "ForOfStatement", "LabeledStatement", "WithStatement" - ] + ], + "no-return-assign": 0 }, "env": { "jest": true, diff --git a/package.json b/package.json index b7570bcf3..477970028 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@types/react-native": "^0.55.7", "babel-cli": "^6.22.2", "babel-core": "^6.17.0", - "babel-eslint": "^7.1.1", + "babel-eslint": "^8.2.3", "babel-plugin-add-module-exports": "^0.2.1", "babel-plugin-external-helpers": "^6.22.0", "babel-plugin-flow-react-proptypes": "^2.1.3", @@ -104,15 +104,15 @@ "danger-plugin-jest": "^1.1.0", "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", - "eslint": "^3.15.0", - "eslint-config-airbnb": "^13.0.0", + "eslint": "^4.19.1", + "eslint-config-airbnb": "^16.1.0", "eslint-config-prettier": "^2.9.0", - "eslint-plugin-flowtype": "^2.46.3", - "eslint-plugin-flowtype-errors": "^3.5.1", - "eslint-plugin-import": "^2.2.0", - "eslint-plugin-jsx-a11y": "^2.0.2", - "eslint-plugin-prettier": "^2.4.0", - "eslint-plugin-react": "^6.8.0", + "eslint-plugin-flowtype": "^2.48.0", + "eslint-plugin-flowtype-errors": "^3.6.0", + "eslint-plugin-import": "^2.12.0", + "eslint-plugin-jsx-a11y": "^6.0.3", + "eslint-plugin-prettier": "^2.6.0", + "eslint-plugin-react": "^7.8.2", "express": "^4.14.1", "flow-bin": "^0.73.0", "flow-watch": "^1.1.1", diff --git a/src/models/StyleSheet.js b/src/models/StyleSheet.js index c2c6e419a..4d9977b02 100644 --- a/src/models/StyleSheet.js +++ b/src/models/StyleSheet.js @@ -49,7 +49,8 @@ class StyleSheet { target: ?HTMLElement = IS_BROWSER ? document.head : null, forceServer?: boolean = false ) { - this.id = sheetRunningId += 1 + sheetRunningId += 1 + this.id = sheetRunningId this.sealed = false this.forceServer = forceServer this.target = forceServer ? null : target diff --git a/src/models/StyleTags.js b/src/models/StyleTags.js index 95887ae6d..06b463a4b 100644 --- a/src/models/StyleTags.js +++ b/src/models/StyleTags.js @@ -165,10 +165,11 @@ const makeSpeedyTag = ( return prev } - const marker = (markers[id] = sizes.length) + markers[id] = sizes.length sizes.push(0) resetIdNames(names, id) - return marker + + return markers[id] } const insertRules = (id, cssRules, name) => { @@ -272,10 +273,11 @@ const makeBrowserTag = ( return prev } - const marker = (markers[id] = makeTextNode(id)) - el.appendChild(marker) + markers[id] = makeTextNode(id) + el.appendChild(markers[id]) names[id] = Object.create(null) - return marker + + return markers[id] } const insertRules = (id, cssRules, name) => { diff --git a/src/models/StyledComponent.js b/src/models/StyledComponent.js index dabead70d..745dbafe6 100644 --- a/src/models/StyledComponent.js +++ b/src/models/StyledComponent.js @@ -178,10 +178,10 @@ export default (ComponentStyle: Function, constructWithOptions: Function) => { return } - this.setState(oldState => { + this.setState(prevState => { const theme = determineTheme( nextProps, - oldState.theme, + prevState.theme, this.constructor.defaultProps ) const generatedClassName = this.generateAndInjectStyles( diff --git a/src/models/StyledNativeComponent.js b/src/models/StyledNativeComponent.js index a09cf65cd..2ba922f2f 100644 --- a/src/models/StyledNativeComponent.js +++ b/src/models/StyledNativeComponent.js @@ -96,10 +96,10 @@ export default (constructWithOptions: Function, InlineStyle: Function) => { theme?: Theme, [key: string]: any, }) { - this.setState(oldState => { + this.setState(prevState => { const theme = determineTheme( nextProps, - oldState.theme, + prevState.theme, this.constructor.defaultProps ) const generatedStyles = this.generateAndInjectStyles(theme, nextProps) diff --git a/src/no-parser/index.js b/src/no-parser/index.js index a54c159ad..60b67d841 100644 --- a/src/no-parser/index.js +++ b/src/no-parser/index.js @@ -43,6 +43,7 @@ const injectGlobal = _injectGlobal(stringifyRules, css) const styled = _styled(StyledComponent, constructWithOptions) if (process.env.NODE_ENV !== 'production') { + // eslint-disable-next-line no-console console.warn( 'Usage of the preprocessing plugin is deprecated. The no-parser bundle will be removed in the next major release. \nPlease disable the preprocess option in your Babel config and upgrade to a newer version of our plugin which removes this option entirely.' ) diff --git a/src/utils/validAttr.js b/src/utils/validAttr.js index 46824bed9..cf8d60e01 100644 --- a/src/utils/validAttr.js +++ b/src/utils/validAttr.js @@ -10,7 +10,7 @@ * 2. Run `regexgen` with the list of space-separated words below as input * 3. Surround the emitted regex with this: `/^(GENERATED_REGEX)$/` -- this will ensure a full string match * and no false positives from partials - **/ + * */ /* children dangerouslySetInnerHTML key ref autoFocus defaultValue valueLink defaultChecked checkedLink innerHTML suppressContentEditableWarning onFocusIn onFocusOut className onCopy onCut onPaste onCompositionEnd onCompositionStart onCompositionUpdate onKeyDown onKeyPress onKeyUp onFocus onBlur onChange onInput onInvalid onSubmit onReset onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave onMouseMove onMouseOut onMouseOver onMouseUp onSelect onTouchCancel onTouchEnd onTouchMove onTouchStart onScroll onWheel onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting onLoad onAnimationStart onAnimationEnd onAnimationIteration onTransitionEnd onCopyCapture onCutCapture onPasteCapture onCompositionEndCapture onCompositionStartCapture onCompositionUpdateCapture onKeyDownCapture onKeyPressCapture onKeyUpCapture onFocusCapture onBlurCapture onChangeCapture onInputCapture onSubmitCapture onResetCapture onClickCapture onContextMenuCapture onDoubleClickCapture onDragCapture onDragEndCapture onDragEnterCapture onDragExitCapture onDragLeaveCapture onDragOverCapture onDragStartCapture onDropCapture onMouseDownCapture onMouseEnterCapture onMouseLeaveCapture onMouseMoveCapture onMouseOutCapture onMouseOverCapture onMouseUpCapture onSelectCapture onTouchCancelCapture onTouchEndCapture onTouchMoveCapture onTouchStartCapture onScrollCapture onWheelCapture onAbortCapture onCanPlayCapture onCanPlayThroughCapture onDurationChangeCapture onEmptiedCapture onEncryptedCapture onEndedCapture onErrorCapture onLoadedDataCapture onLoadedMetadataCapture onLoadStartCapture onPauseCapture onPlayCapture onPlayingCapture onProgressCapture onRateChangeCapture onSeekedCapture onSeekingCapture onStalledCapture onSuspendCapture onTimeUpdateCapture onVolumeChangeCapture onWaitingCapture onLoadCapture onAnimationStartCapture onAnimationEndCapture onAnimationIterationCapture onTransitionEndCapture accept acceptCharset accessKey action allowFullScreen allowTransparency alt as async autoComplete autoPlay capture cellPadding cellSpacing charSet challenge checked cite classID className cols colSpan content contentEditable contextMenu controlsList controls coords crossOrigin data dateTime default defer dir disabled download draggable encType form formAction formEncType formMethod formNoValidate formTarget frameBorder headers height hidden high href hrefLang htmlFor httpEquiv icon id inputMode integrity is keyParams keyType kind label lang list loop low manifest marginHeight marginWidth max maxLength media mediaGroup method min minLength multiple muted name nonce noValidate open optimum pattern placeholder playsInline poster preload profile radioGroup readOnly referrerPolicy rel required reversed role rows rowSpan sandbox scope scoped scrolling seamless selected shape size sizes span spellCheck src srcDoc srcLang srcSet start step style summary tabIndex target title type useMap value width wmode wrap about datatype inlist prefix property resource typeof vocab autoCapitalize autoCorrect autoSave color itemProp itemScope itemType itemID itemRef results security unselectable accentHeight accumulate additive alignmentBaseline allowReorder alphabetic amplitude arabicForm ascent attributeName attributeType autoReverse azimuth baseFrequency baseProfile baselineShift bbox begin bias by calcMode capHeight clip clipPath clipRule clipPathUnits colorInterpolation colorInterpolationFilters colorProfile colorRendering contentScriptType contentStyleType cursor cx cy d decelerate descent diffuseConstant direction display divisor dominantBaseline dur dx dy edgeMode elevation enableBackground end exponent externalResourcesRequired fill fillOpacity fillRule filter filterRes filterUnits floodColor floodOpacity focusable fontFamily fontSize fontSizeAdjust fontStretch fontStyle fontVariant fontWeight format from fx fy g1 g2 glyphName glyphOrientationHorizontal glyphOrientationVertical glyphRef gradientTransform gradientUnits hanging horizAdvX horizOriginX ideographic imageRendering in in2 intercept k k1 k2 k3 k4 kernelMatrix kernelUnitLength kerning keyPoints keySplines keyTimes lengthAdjust letterSpacing lightingColor limitingConeAngle local markerEnd markerMid markerStart markerHeight markerUnits markerWidth mask maskContentUnits maskUnits mathematical mode numOctaves offset opacity operator order orient orientation origin overflow overlinePosition overlineThickness paintOrder panose1 pathLength patternContentUnits patternTransform patternUnits pointerEvents points pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits r radius refX refY renderingIntent repeatCount repeatDur requiredExtensions requiredFeatures restart result rotate rx ry scale seed shapeRendering slope spacing specularConstant specularExponent speed spreadMethod startOffset stdDeviation stemh stemv stitchTiles stopColor stopOpacity strikethroughPosition strikethroughThickness string stroke strokeDasharray strokeDashoffset strokeLinecap strokeLinejoin strokeMiterlimit strokeOpacity strokeWidth surfaceScale systemLanguage tableValues targetX targetY textAnchor textDecoration textRendering textLength to transform u1 u2 underlinePosition underlineThickness unicode unicodeBidi unicodeRange unitsPerEm vAlphabetic vHanging vIdeographic vMathematical values vectorEffect version vertAdvY vertOriginX vertOriginY viewBox viewTarget visibility widths wordSpacing writingMode x xHeight x1 x2 xChannelSelector xlinkActuate xlinkArcrole xlinkHref xlinkRole xlinkShow xlinkTitle xlinkType xmlBase xmlns xmlnsXlink xmlLang xmlSpace y y1 y2 yChannelSelector z zoomAndPan */ diff --git a/test-results.json b/test-results.json index ffcc9bab0..a8396e652 100644 --- a/test-results.json +++ b/test-results.json @@ -1 +1 @@ -{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":32,"numPassedTests":232,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":32,"numTotalTests":232,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1527226634448,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should use given stylesheet instance","location":null,"status":"passed","title":"should use given stylesheet instance"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target","location":null,"status":"passed","title":"should append style to given target"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target in iframe","location":null,"status":"passed","title":"should append style to given target in iframe"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should apply styles to appropriate targets for nested StyleSheetManagers","location":null,"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should inject styles into two parallel contexts","location":null,"status":"passed","title":"should inject styles into two parallel contexts"},{"ancestorTitles":["StyleSheetManager","ssr"],"failureMessages":[],"fullName":"StyleSheetManager ssr should extract CSS outside the nested StyleSheetManager","location":null,"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527226639630,"message":"","name":"/Users/bear/code/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527226636089,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append a style","location":null,"status":"passed","title":"should append a style"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append multiple styles","location":null,"status":"passed","title":"should append multiple styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects","location":null,"status":"passed","title":"should handle inline style objects"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with media queries","location":null,"status":"passed","title":"should handle inline style objects with media queries"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with nesting","location":null,"status":"passed","title":"should handle inline style objects with nesting"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with contextual selectors","location":null,"status":"passed","title":"should handle inline style objects with contextual selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components","location":null,"status":"passed","title":"should inject styles of multiple components"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components based on creation, not rendering order","location":null,"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should strip a JS-style (invalid) comment in the styles","location":null,"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should respect removed rules","location":null,"status":"passed","title":"should respect removed rules"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should add a webpack nonce to the style tags if one is available in the global scope","location":null,"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527226639633,"message":"","name":"/Users/bear/code/styled-components/src/test/styles.test.js","startTime":1527226636115,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not throw an error when called with a valid element","location":null,"status":"passed","title":"should not throw an error when called with a valid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with an invalid element","location":null,"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not inject anything by default","location":null,"status":"passed","title":"should not inject anything by default"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject component class when rendered even if no styles are passed","location":null,"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject styles","location":null,"status":"passed","title":"should inject styles"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject only once for a styled component, no matter how often it's mounted","location":null,"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic Should have the correct styled(component) displayName","location":null,"status":"passed","title":"Should have the correct styled(component) displayName"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should allow you to pass in style objects","location":null,"status":"passed","title":"should allow you to pass in style objects"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the ref to the component","location":null,"status":"passed","title":"should pass the ref to the component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not leak the innerRef prop to the wrapped child","location":null,"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the full className to the wrapped child","location":null,"status":"passed","title":"should pass the full className to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the innerRef to the wrapped styled component","location":null,"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should respect the order of StyledComponent creation for CSS ordering","location":null,"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests handle media at-rules inside style rules","location":null,"status":"passed","title":"handle media at-rules inside style rules"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should hoist non-react static properties","location":null,"status":"passed","title":"should hoist non-react static properties"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not hoist styled component statics","location":null,"status":"passed","title":"should not hoist styled component statics"}],"endTime":1527226639672,"message":"","name":"/Users/bear/code/styled-components/src/test/basic.test.js","startTime":1527226636127,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract the CSS in a simple case","location":null,"status":"passed","title":"should extract the CSS in a simple case"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract both global and local CSS","location":null,"status":"passed","title":"should extract both global and local CSS"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should not spill ServerStyleSheets into each other","location":null,"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should add a nonce to the stylesheet if webpack nonce is detected in the global scope","location":null,"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should render CSS in the order the components were defined, not rendered","location":null,"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should share global styles but keep renders separate","location":null,"status":"passed","title":"should share global styles but keep renders separate"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should allow global styles to be injected during rendering","location":null,"status":"passed","title":"should allow global styles to be injected during rendering"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should dispatch global styles to each ServerStyleSheet","location":null,"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element","location":null,"status":"passed","title":"should return a generated React style element"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element with nonce if webpack nonce is preset in the global scope","location":null,"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should interleave styles with rendered HTML when utilitizing streaming","location":null,"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527226639674,"message":"","name":"/Users/bear/code/styled-components/src/test/ssr.test.js","startTime":1527226635902,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should append a new component like normal","location":null,"status":"passed","title":"should append a new component like normal"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId","location":null,"status":"passed","title":"should reuse a componentId"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and generated class","location":null,"status":"passed","title":"should reuse a componentId and generated class"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and inject new classes","location":null,"status":"passed","title":"should reuse a componentId and inject new classes"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should not inject new styles for a component already rendered","location":null,"status":"passed","title":"should not inject new styles for a component already rendered"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should inject new styles for a new computed style of a component","location":null,"status":"passed","title":"should inject new styles for a new computed style of a component"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should generate new classes, even if they have the same name","location":null,"status":"passed","title":"should generate new classes, even if they have the same name"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should inject new global styles at the end","location":null,"status":"passed","title":"should inject new global styles at the end"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should interleave global and local styles","location":null,"status":"passed","title":"should interleave global and local styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should replace stylesheets on-demand","location":null,"status":"passed","title":"should replace stylesheets on-demand"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not change styles if rendered in the same order they were created with","location":null,"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should still not change styles if rendered in a different order","location":null,"status":"passed","title":"should still not change styles if rendered in a different order"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not regenerate keyframes","location":null,"status":"passed","title":"should not regenerate keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should still inject new keyframes","location":null,"status":"passed","title":"should still inject new keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should pass the keyframes name along as well","location":null,"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527226639830,"message":"","name":"/Users/bear/code/styled-components/src/test/rehydration.test.js","startTime":1527226636090,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component","location":null,"status":"passed","title":"should inject props.theme into a styled component"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component multiple levels deep","location":null,"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to fallback to its default props when a theme is not provided","location":null,"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly set the theme with an empty object when no theme is provided and no defaults are set","location":null,"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only inject props.theme into styled components within its child component tree","location":null,"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into all styled components within the child component tree","location":null,"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject new CSS when the theme changes","location":null,"status":"passed","title":"should inject new CSS when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly render with the same theme from default props on re-render","location":null,"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if theme is changed","location":null,"status":"passed","title":"should properly update style if theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if props used in styles is changed","location":null,"status":"passed","title":"should properly update style if props used in styles is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should change the classnames when the theme changes","location":null,"status":"passed","title":"should change the classnames when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a component that uses withTheme hoc","location":null,"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update theme prop on hoc component when theme is changed","location":null,"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme after initial render","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should hoist static properties when using withTheme","location":null,"status":"passed","title":"should hoist static properties when using withTheme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only pass the theme prop","location":null,"status":"passed","title":"should only pass the theme prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on as ref","location":null,"status":"passed","title":"should accept innerRef and pass it on as ref"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for stateless function components","location":null,"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for styled components","location":null,"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should not break without a ThemeProvier if it has a defaultTheme","location":null,"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527226639841,"message":"","name":"/Users/bear/code/styled-components/src/test/theme.test.js","startTime":1527226636106,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn once","location":null,"status":"passed","title":"should warn once"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn if number of classes is 200","location":null,"status":"passed","title":"should warn if number of classes is 200"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should not warn if number of classes is below 200","location":null,"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527226640003,"message":"","name":"/Users/bear/code/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527226636102,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs work fine with an empty object","location":null,"status":"passed","title":"work fine with an empty object"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass a simple attr","location":null,"status":"passed","title":"pass a simple attr"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs call an attr function","location":null,"status":"passed","title":"call an attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass props to the attr function","location":null,"status":"passed","title":"pass props to the attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should replace attrs with props","location":null,"status":"passed","title":"should replace attrs with props"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className","location":null,"status":"passed","title":"should merge className"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className even if its a function","location":null,"status":"passed","title":"should merge className even if its a function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should work with data and aria attributes","location":null,"status":"passed","title":"should work with data and aria attributes"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs","location":null,"status":"passed","title":"merge attrs"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs when inheriting SC","location":null,"status":"passed","title":"merge attrs when inheriting SC"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass attrs to style block","location":null,"status":"passed","title":"pass attrs to style block"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through children as a normal prop","location":null,"status":"passed","title":"should pass through children as a normal prop"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through complex children as well","location":null,"status":"passed","title":"should pass through complex children as well"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should override children of course","location":null,"status":"passed","title":"should override children of course"}],"endTime":1527226640077,"message":"","name":"/Users/bear/code/styled-components/src/test/attrs.test.js","startTime":1527226639851,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styled"],"failureMessages":[],"fullName":"styled should have all valid HTML5 elements defined as properties","location":null,"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527226640167,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/styled.test.js","startTime":1527226639806,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be auto-generated if none passed","location":null,"status":"passed","title":"should be auto-generated if none passed"},{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be attached if supplied","location":null,"status":"passed","title":"should be attached if supplied"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated as \"sc\" + hash","location":null,"status":"passed","title":"should be generated as \"sc\" + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated from displayName + hash","location":null,"status":"passed","title":"should be generated from displayName + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be attached if passed in","location":null,"status":"passed","title":"should be attached if passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be combined with displayName if both passed in","location":null,"status":"passed","title":"should be combined with displayName if both passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.extend`","location":null,"status":"passed","title":"should work with `.extend`"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.withComponent`","location":null,"status":"passed","title":"should work with `.withComponent`"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should merge the options strings","location":null,"status":"passed","title":"should merge the options strings"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should keep the last value passed in when merging","location":null,"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527226640267,"message":"","name":"/Users/bear/code/styled-components/src/test/expanded-api.test.js","startTime":1527226640029,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should not throw an error when no children are passed","location":null,"status":"passed","title":"should not throw an error when no children are passed"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should accept a theme prop that's a plain object","location":null,"status":"passed","title":"should accept a theme prop that's a plain object"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with an outer theme","location":null,"status":"passed","title":"should merge its theme with an outer theme"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with multiple outer themes","location":null,"status":"passed","title":"should merge its theme with multiple outer themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should be able to render two independent themes","location":null,"status":"passed","title":"should be able to render two independent themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider ThemeProvider propagates theme updates through nested ThemeProviders","location":null,"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527226640273,"message":"","name":"/Users/bear/code/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527226639995,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should inject rules into the head","location":null,"status":"passed","title":"should inject rules into the head"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called repeatedly","location":null,"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called after a component","location":null,"status":"passed","title":"should non-destructively inject styles when called after a component"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should extract @import rules into separate style tags","location":null,"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527226640319,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527226640161,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext merges strings","location":null,"status":"passed","title":"merges strings"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves rulesets after executing functions","location":null,"status":"passed","title":"resolves rulesets after executing functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves double nested rulesets after executing functions","location":null,"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527226640397,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/flatten.test.js","startTime":1527226640230,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and fall back","location":null,"status":"passed","title":"should execute interpolations and fall back"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and inject props","location":null,"status":"passed","title":"should execute interpolations and inject props"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should ignore non-0 falsy object interpolations","location":null,"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527226640452,"message":"","name":"/Users/bear/code/styled-components/src/test/props.test.js","startTime":1527226640302,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the reactProps","location":null,"status":"passed","title":"should allow all the reactProps"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the html props","location":null,"status":"passed","title":"should allow all the html props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle all the SVG props","location":null,"status":"passed","title":"should handle all the SVG props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle aria and data attributes","location":null,"status":"passed","title":"should handle aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle uppercase aria and data attributes","location":null,"status":"passed","title":"should handle uppercase aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the event handlers","location":null,"status":"passed","title":"should allow all the event handlers"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should not allow custom props","location":null,"status":"passed","title":"should not allow custom props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle x attributes","location":null,"status":"passed","title":"should handle x attributes"}],"endTime":1527226640472,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/validAttr.test.js","startTime":1527226639800,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten handles nested objects","location":null,"status":"passed","title":"handles nested objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings class instances","location":null,"status":"passed","title":"toStrings class instances"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten passes values to function","location":null,"status":"passed","title":"passes values to function"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten recursively calls functions","location":null,"status":"passed","title":"recursively calls functions"}],"endTime":1527226640602,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/flatten.test.js","startTime":1527226640428,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with default SC_ATTR","location":null,"status":"passed","title":"should work with default SC_ATTR"},{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with custom SC_ATTR","location":null,"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527226640614,"message":"","name":"/Users/bear/code/styled-components/src/test/constants.test.js","startTime":1527226640437,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles without any functions as static","location":null,"status":"passed","title":"should mark styles without any functions as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a nested styled component as static","location":null,"status":"passed","title":"should mark styles with a nested styled component as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a dynamic style as not static","location":null,"status":"passed","title":"should mark styles with a dynamic style as not static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with numeric attriutes as static","location":null,"status":"passed","title":"should mark components with numeric attriutes as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with dynamic attributes as not static","location":null,"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527226640634,"message":"","name":"/Users/bear/code/styled-components/src/test/staticCaching.test.js","startTime":1527226640471,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should return its name","location":null,"status":"passed","title":"should return its name"},{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should insert the correct styles","location":null,"status":"passed","title":"should insert the correct styles"}],"endTime":1527226640669,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/keyframes.test.js","startTime":1527226640550,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes in the right order","location":null,"status":"passed","title":"should add vendor prefixes in the right order"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes for display","location":null,"status":"passed","title":"should add vendor prefixes for display"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should generate styles for nested media queries","location":null,"status":"passed","title":"should generate styles for nested media queries"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should pass through custom properties","location":null,"status":"passed","title":"should pass through custom properties"}],"endTime":1527226640739,"message":"","name":"/Users/bear/code/styled-components/src/test/css.test.js","startTime":1527226640608,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should work for null or empty","location":null,"status":"passed","title":"should work for null or empty"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should ignore anything before the first SC","location":null,"status":"passed","title":"should ignore anything before the first SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC","location":null,"status":"passed","title":"should return a single SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC with multiple lines","location":null,"status":"passed","title":"should return a single SC with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with single lines","location":null,"status":"passed","title":"should return multiple SCs with single lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with multiple lines","location":null,"status":"passed","title":"should return multiple SCs with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should include whitespace after a component","location":null,"status":"passed","title":"should include whitespace after a component"}],"endTime":1527226640748,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527226640613,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate empty classes with no styles","location":null,"status":"passed","title":"should generate empty classes with no styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to both classes if only parent has styles","location":null,"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to child class if only child has styles","location":null,"status":"passed","title":"should attach styles to child class if only child has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate a class for the child with the rules of the parent","location":null,"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate different classes for both parent and child","location":null,"status":"passed","title":"should generate different classes for both parent and child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should copy nested rules to the child","location":null,"status":"passed","title":"should copy nested rules to the child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep default props from parent","location":null,"status":"passed","title":"should keep default props from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep prop types from parent","location":null,"status":"passed","title":"should keep prop types from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep custom static member from parent","location":null,"status":"passed","title":"should keep custom static member from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep static member in triple inheritance","location":null,"status":"passed","title":"should keep static member in triple inheritance"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep styles in >= 3 inheritances","location":null,"status":"passed","title":"should keep styles in >= 3 inheritances"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component","location":null,"status":"passed","title":"should allow changing component"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and extending","location":null,"status":"passed","title":"should allow changing component and extending"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and adding attributes","location":null,"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527226640907,"message":"","name":"/Users/bear/code/styled-components/src/test/extending.test.js","startTime":1527226640620,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave blindly interleave","location":null,"status":"passed","title":"blindly interleave"},{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave should be driven off the number of interpolations","location":null,"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527226640931,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/interleave.test.js","startTime":1527226640812,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styleNames","addNameForId"],"failureMessages":[],"fullName":"styleNames addNameForId adds an id and a name to a given dictionary","location":null,"status":"passed","title":"adds an id and a name to a given dictionary"},{"ancestorTitles":["styleNames","resetIdNames"],"failureMessages":[],"fullName":"styleNames resetIdNames removes all names for an ID","location":null,"status":"passed","title":"removes all names for an ID"},{"ancestorTitles":["styleNames","hasNameForId"],"failureMessages":[],"fullName":"styleNames hasNameForId checks the existance of a name for an id","location":null,"status":"passed","title":"checks the existance of a name for an id"},{"ancestorTitles":["styleNames","stringifyNames"],"failureMessages":[],"fullName":"styleNames stringifyNames lists out all known names as a continuous string","location":null,"status":"passed","title":"lists out all known names as a continuous string"},{"ancestorTitles":["styleNames","cloneNames"],"failureMessages":[],"fullName":"styleNames cloneNames creates a deep clone of the names dictionary","location":null,"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527226640932,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/styleNames.test.js","startTime":1527226640786,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should let you use another component in a css rule","location":null,"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527226640982,"message":"","name":"/Users/bear/code/styled-components/src/test/overriding.test.js","startTime":1527226640795,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527226640984,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527226640819,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a string type","location":null,"status":"passed","title":"handles a string type"},{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a React class type","location":null,"status":"passed","title":"handles a React class type"},{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a React class type with displayName","location":null,"status":"passed","title":"handles a React class type with displayName"}],"endTime":1527226641001,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/generateDisplayName.test.js","startTime":1527226640894,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with null","location":null,"status":"passed","title":"should throw a meaningful error when called with null"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly execute passed functions and assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527226641032,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/basic.test.js","startTime":1527226640897,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName defaults to reusing the component displayName","location":null,"status":"passed","title":"defaults to reusing the component displayName"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName falls back to the class name","location":null,"status":"passed","title":"falls back to the class name"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName ultimately falls back to \"Component\"","location":null,"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527226641128,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/getComponentName.test.js","startTime":1527226641056,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should take precedence over ThemeProvider","location":null,"status":"passed","title":"should take precedence over ThemeProvider"},{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should fallback to default theme","location":null,"status":"passed","title":"should fallback to default theme"}],"endTime":1527226641170,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/determineTheme.test.js","startTime":1527226641083,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces characters that could be part of CSS selectors","location":null,"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces double hyphens with a single hyphen","location":null,"status":"passed","title":"replaces double hyphens with a single hyphen"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape removes extraneous hyphens at the ends of the string","location":null,"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527226641170,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/escape.test.js","startTime":1527226641067,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should create alphabetic names for number input data","location":null,"status":"passed","title":"should create alphabetic names for number input data"},{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should not fail for numbers above int32 limit","location":null,"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527226641181,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527226641097,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file +{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":32,"numPassedTests":232,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":32,"numTotalTests":232,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1527640847625,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the reactProps","location":null,"status":"passed","title":"should allow all the reactProps"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the html props","location":null,"status":"passed","title":"should allow all the html props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle all the SVG props","location":null,"status":"passed","title":"should handle all the SVG props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle aria and data attributes","location":null,"status":"passed","title":"should handle aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle uppercase aria and data attributes","location":null,"status":"passed","title":"should handle uppercase aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the event handlers","location":null,"status":"passed","title":"should allow all the event handlers"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should not allow custom props","location":null,"status":"passed","title":"should not allow custom props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle x attributes","location":null,"status":"passed","title":"should handle x attributes"}],"endTime":1527640850986,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/validAttr.test.js","startTime":1527640849785,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate empty classes with no styles","location":null,"status":"passed","title":"should generate empty classes with no styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to both classes if only parent has styles","location":null,"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to child class if only child has styles","location":null,"status":"passed","title":"should attach styles to child class if only child has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate a class for the child with the rules of the parent","location":null,"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate different classes for both parent and child","location":null,"status":"passed","title":"should generate different classes for both parent and child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should copy nested rules to the child","location":null,"status":"passed","title":"should copy nested rules to the child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep default props from parent","location":null,"status":"passed","title":"should keep default props from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep prop types from parent","location":null,"status":"passed","title":"should keep prop types from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep custom static member from parent","location":null,"status":"passed","title":"should keep custom static member from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep static member in triple inheritance","location":null,"status":"passed","title":"should keep static member in triple inheritance"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep styles in >= 3 inheritances","location":null,"status":"passed","title":"should keep styles in >= 3 inheritances"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component","location":null,"status":"passed","title":"should allow changing component"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and extending","location":null,"status":"passed","title":"should allow changing component and extending"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and adding attributes","location":null,"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527640852612,"message":"","name":"/Users/bear/code/styled-components/src/test/extending.test.js","startTime":1527640851063,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not throw an error when called with a valid element","location":null,"status":"passed","title":"should not throw an error when called with a valid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with an invalid element","location":null,"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not inject anything by default","location":null,"status":"passed","title":"should not inject anything by default"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject component class when rendered even if no styles are passed","location":null,"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject styles","location":null,"status":"passed","title":"should inject styles"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject only once for a styled component, no matter how often it's mounted","location":null,"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic Should have the correct styled(component) displayName","location":null,"status":"passed","title":"Should have the correct styled(component) displayName"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should allow you to pass in style objects","location":null,"status":"passed","title":"should allow you to pass in style objects"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the ref to the component","location":null,"status":"passed","title":"should pass the ref to the component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not leak the innerRef prop to the wrapped child","location":null,"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the full className to the wrapped child","location":null,"status":"passed","title":"should pass the full className to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the innerRef to the wrapped styled component","location":null,"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should respect the order of StyledComponent creation for CSS ordering","location":null,"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests handle media at-rules inside style rules","location":null,"status":"passed","title":"handle media at-rules inside style rules"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should hoist non-react static properties","location":null,"status":"passed","title":"should hoist non-react static properties"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not hoist styled component statics","location":null,"status":"passed","title":"should not hoist styled component statics"}],"endTime":1527640852637,"message":"","name":"/Users/bear/code/styled-components/src/test/basic.test.js","startTime":1527640849358,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should use given stylesheet instance","location":null,"status":"passed","title":"should use given stylesheet instance"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target","location":null,"status":"passed","title":"should append style to given target"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target in iframe","location":null,"status":"passed","title":"should append style to given target in iframe"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should apply styles to appropriate targets for nested StyleSheetManagers","location":null,"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should inject styles into two parallel contexts","location":null,"status":"passed","title":"should inject styles into two parallel contexts"},{"ancestorTitles":["StyleSheetManager","ssr"],"failureMessages":[],"fullName":"StyleSheetManager ssr should extract CSS outside the nested StyleSheetManager","location":null,"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527640852732,"message":"","name":"/Users/bear/code/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527640849335,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract the CSS in a simple case","location":null,"status":"passed","title":"should extract the CSS in a simple case"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract both global and local CSS","location":null,"status":"passed","title":"should extract both global and local CSS"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should not spill ServerStyleSheets into each other","location":null,"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should add a nonce to the stylesheet if webpack nonce is detected in the global scope","location":null,"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should render CSS in the order the components were defined, not rendered","location":null,"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should share global styles but keep renders separate","location":null,"status":"passed","title":"should share global styles but keep renders separate"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should allow global styles to be injected during rendering","location":null,"status":"passed","title":"should allow global styles to be injected during rendering"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should dispatch global styles to each ServerStyleSheet","location":null,"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element","location":null,"status":"passed","title":"should return a generated React style element"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element with nonce if webpack nonce is preset in the global scope","location":null,"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should interleave styles with rendered HTML when utilitizing streaming","location":null,"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527640852740,"message":"","name":"/Users/bear/code/styled-components/src/test/ssr.test.js","startTime":1527640849334,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append a style","location":null,"status":"passed","title":"should append a style"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append multiple styles","location":null,"status":"passed","title":"should append multiple styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects","location":null,"status":"passed","title":"should handle inline style objects"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with media queries","location":null,"status":"passed","title":"should handle inline style objects with media queries"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with nesting","location":null,"status":"passed","title":"should handle inline style objects with nesting"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with contextual selectors","location":null,"status":"passed","title":"should handle inline style objects with contextual selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components","location":null,"status":"passed","title":"should inject styles of multiple components"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components based on creation, not rendering order","location":null,"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should strip a JS-style (invalid) comment in the styles","location":null,"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should respect removed rules","location":null,"status":"passed","title":"should respect removed rules"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should add a webpack nonce to the style tags if one is available in the global scope","location":null,"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527640852786,"message":"","name":"/Users/bear/code/styled-components/src/test/styles.test.js","startTime":1527640849355,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs work fine with an empty object","location":null,"status":"passed","title":"work fine with an empty object"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass a simple attr","location":null,"status":"passed","title":"pass a simple attr"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs call an attr function","location":null,"status":"passed","title":"call an attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass props to the attr function","location":null,"status":"passed","title":"pass props to the attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should replace attrs with props","location":null,"status":"passed","title":"should replace attrs with props"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className","location":null,"status":"passed","title":"should merge className"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className even if its a function","location":null,"status":"passed","title":"should merge className even if its a function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should work with data and aria attributes","location":null,"status":"passed","title":"should work with data and aria attributes"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs","location":null,"status":"passed","title":"merge attrs"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs when inheriting SC","location":null,"status":"passed","title":"merge attrs when inheriting SC"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass attrs to style block","location":null,"status":"passed","title":"pass attrs to style block"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through children as a normal prop","location":null,"status":"passed","title":"should pass through children as a normal prop"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through complex children as well","location":null,"status":"passed","title":"should pass through complex children as well"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should override children of course","location":null,"status":"passed","title":"should override children of course"}],"endTime":1527640852893,"message":"","name":"/Users/bear/code/styled-components/src/test/attrs.test.js","startTime":1527640852685,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should append a new component like normal","location":null,"status":"passed","title":"should append a new component like normal"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId","location":null,"status":"passed","title":"should reuse a componentId"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and generated class","location":null,"status":"passed","title":"should reuse a componentId and generated class"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and inject new classes","location":null,"status":"passed","title":"should reuse a componentId and inject new classes"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should not inject new styles for a component already rendered","location":null,"status":"passed","title":"should not inject new styles for a component already rendered"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should inject new styles for a new computed style of a component","location":null,"status":"passed","title":"should inject new styles for a new computed style of a component"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should generate new classes, even if they have the same name","location":null,"status":"passed","title":"should generate new classes, even if they have the same name"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should inject new global styles at the end","location":null,"status":"passed","title":"should inject new global styles at the end"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should interleave global and local styles","location":null,"status":"passed","title":"should interleave global and local styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should replace stylesheets on-demand","location":null,"status":"passed","title":"should replace stylesheets on-demand"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not change styles if rendered in the same order they were created with","location":null,"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should still not change styles if rendered in a different order","location":null,"status":"passed","title":"should still not change styles if rendered in a different order"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not regenerate keyframes","location":null,"status":"passed","title":"should not regenerate keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should still inject new keyframes","location":null,"status":"passed","title":"should still inject new keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should pass the keyframes name along as well","location":null,"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527640852890,"message":"","name":"/Users/bear/code/styled-components/src/test/rehydration.test.js","startTime":1527640849811,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should not throw an error when no children are passed","location":null,"status":"passed","title":"should not throw an error when no children are passed"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should accept a theme prop that's a plain object","location":null,"status":"passed","title":"should accept a theme prop that's a plain object"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with an outer theme","location":null,"status":"passed","title":"should merge its theme with an outer theme"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with multiple outer themes","location":null,"status":"passed","title":"should merge its theme with multiple outer themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should be able to render two independent themes","location":null,"status":"passed","title":"should be able to render two independent themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider ThemeProvider propagates theme updates through nested ThemeProviders","location":null,"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527640852978,"message":"","name":"/Users/bear/code/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527640852732,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component","location":null,"status":"passed","title":"should inject props.theme into a styled component"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component multiple levels deep","location":null,"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to fallback to its default props when a theme is not provided","location":null,"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly set the theme with an empty object when no theme is provided and no defaults are set","location":null,"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only inject props.theme into styled components within its child component tree","location":null,"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into all styled components within the child component tree","location":null,"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject new CSS when the theme changes","location":null,"status":"passed","title":"should inject new CSS when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly render with the same theme from default props on re-render","location":null,"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if theme is changed","location":null,"status":"passed","title":"should properly update style if theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if props used in styles is changed","location":null,"status":"passed","title":"should properly update style if props used in styles is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should change the classnames when the theme changes","location":null,"status":"passed","title":"should change the classnames when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a component that uses withTheme hoc","location":null,"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update theme prop on hoc component when theme is changed","location":null,"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme after initial render","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should hoist static properties when using withTheme","location":null,"status":"passed","title":"should hoist static properties when using withTheme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only pass the theme prop","location":null,"status":"passed","title":"should only pass the theme prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on as ref","location":null,"status":"passed","title":"should accept innerRef and pass it on as ref"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for stateless function components","location":null,"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for styled components","location":null,"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should not break without a ThemeProvier if it has a defaultTheme","location":null,"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527640852981,"message":"","name":"/Users/bear/code/styled-components/src/test/theme.test.js","startTime":1527640849346,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten handles nested objects","location":null,"status":"passed","title":"handles nested objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings class instances","location":null,"status":"passed","title":"toStrings class instances"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten passes values to function","location":null,"status":"passed","title":"passes values to function"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten recursively calls functions","location":null,"status":"passed","title":"recursively calls functions"}],"endTime":1527640853065,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/flatten.test.js","startTime":1527640852919,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be auto-generated if none passed","location":null,"status":"passed","title":"should be auto-generated if none passed"},{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be attached if supplied","location":null,"status":"passed","title":"should be attached if supplied"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated as \"sc\" + hash","location":null,"status":"passed","title":"should be generated as \"sc\" + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated from displayName + hash","location":null,"status":"passed","title":"should be generated from displayName + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be attached if passed in","location":null,"status":"passed","title":"should be attached if passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be combined with displayName if both passed in","location":null,"status":"passed","title":"should be combined with displayName if both passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.extend`","location":null,"status":"passed","title":"should work with `.extend`"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.withComponent`","location":null,"status":"passed","title":"should work with `.withComponent`"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should merge the options strings","location":null,"status":"passed","title":"should merge the options strings"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should keep the last value passed in when merging","location":null,"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527640853073,"message":"","name":"/Users/bear/code/styled-components/src/test/expanded-api.test.js","startTime":1527640852834,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should work for null or empty","location":null,"status":"passed","title":"should work for null or empty"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should ignore anything before the first SC","location":null,"status":"passed","title":"should ignore anything before the first SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC","location":null,"status":"passed","title":"should return a single SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC with multiple lines","location":null,"status":"passed","title":"should return a single SC with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with single lines","location":null,"status":"passed","title":"should return multiple SCs with single lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with multiple lines","location":null,"status":"passed","title":"should return multiple SCs with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should include whitespace after a component","location":null,"status":"passed","title":"should include whitespace after a component"}],"endTime":1527640853150,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527640853035,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should inject rules into the head","location":null,"status":"passed","title":"should inject rules into the head"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called repeatedly","location":null,"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called after a component","location":null,"status":"passed","title":"should non-destructively inject styles when called after a component"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should extract @import rules into separate style tags","location":null,"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527640853166,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527640853037,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styleNames","addNameForId"],"failureMessages":[],"fullName":"styleNames addNameForId adds an id and a name to a given dictionary","location":null,"status":"passed","title":"adds an id and a name to a given dictionary"},{"ancestorTitles":["styleNames","resetIdNames"],"failureMessages":[],"fullName":"styleNames resetIdNames removes all names for an ID","location":null,"status":"passed","title":"removes all names for an ID"},{"ancestorTitles":["styleNames","hasNameForId"],"failureMessages":[],"fullName":"styleNames hasNameForId checks the existance of a name for an id","location":null,"status":"passed","title":"checks the existance of a name for an id"},{"ancestorTitles":["styleNames","stringifyNames"],"failureMessages":[],"fullName":"styleNames stringifyNames lists out all known names as a continuous string","location":null,"status":"passed","title":"lists out all known names as a continuous string"},{"ancestorTitles":["styleNames","cloneNames"],"failureMessages":[],"fullName":"styleNames cloneNames creates a deep clone of the names dictionary","location":null,"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527640853170,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/styleNames.test.js","startTime":1527640853075,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles without any functions as static","location":null,"status":"passed","title":"should mark styles without any functions as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a nested styled component as static","location":null,"status":"passed","title":"should mark styles with a nested styled component as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a dynamic style as not static","location":null,"status":"passed","title":"should mark styles with a dynamic style as not static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with numeric attriutes as static","location":null,"status":"passed","title":"should mark components with numeric attriutes as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with dynamic attributes as not static","location":null,"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527640853241,"message":"","name":"/Users/bear/code/styled-components/src/test/staticCaching.test.js","startTime":1527640853083,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes in the right order","location":null,"status":"passed","title":"should add vendor prefixes in the right order"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes for display","location":null,"status":"passed","title":"should add vendor prefixes for display"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should generate styles for nested media queries","location":null,"status":"passed","title":"should generate styles for nested media queries"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should pass through custom properties","location":null,"status":"passed","title":"should pass through custom properties"}],"endTime":1527640853284,"message":"","name":"/Users/bear/code/styled-components/src/test/css.test.js","startTime":1527640853164,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should return its name","location":null,"status":"passed","title":"should return its name"},{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should insert the correct styles","location":null,"status":"passed","title":"should insert the correct styles"}],"endTime":1527640853396,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/keyframes.test.js","startTime":1527640853286,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and fall back","location":null,"status":"passed","title":"should execute interpolations and fall back"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and inject props","location":null,"status":"passed","title":"should execute interpolations and inject props"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should ignore non-0 falsy object interpolations","location":null,"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527640853443,"message":"","name":"/Users/bear/code/styled-components/src/test/props.test.js","startTime":1527640853334,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527640853468,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527640853329,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with null","location":null,"status":"passed","title":"should throw a meaningful error when called with null"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly execute passed functions and assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527640853483,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/basic.test.js","startTime":1527640853311,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with default SC_ATTR","location":null,"status":"passed","title":"should work with default SC_ATTR"},{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with custom SC_ATTR","location":null,"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527640853553,"message":"","name":"/Users/bear/code/styled-components/src/test/constants.test.js","startTime":1527640853415,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should let you use another component in a css rule","location":null,"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527640853676,"message":"","name":"/Users/bear/code/styled-components/src/test/overriding.test.js","startTime":1527640853576,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName defaults to reusing the component displayName","location":null,"status":"passed","title":"defaults to reusing the component displayName"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName falls back to the class name","location":null,"status":"passed","title":"falls back to the class name"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName ultimately falls back to \"Component\"","location":null,"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527640853720,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/getComponentName.test.js","startTime":1527640853621,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a string type","location":null,"status":"passed","title":"handles a string type"},{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a React class type","location":null,"status":"passed","title":"handles a React class type"},{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a React class type with displayName","location":null,"status":"passed","title":"handles a React class type with displayName"}],"endTime":1527640853721,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/generateDisplayName.test.js","startTime":1527640853609,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave blindly interleave","location":null,"status":"passed","title":"blindly interleave"},{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave should be driven off the number of interpolations","location":null,"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527640853733,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/interleave.test.js","startTime":1527640853627,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should take precedence over ThemeProvider","location":null,"status":"passed","title":"should take precedence over ThemeProvider"},{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should fallback to default theme","location":null,"status":"passed","title":"should fallback to default theme"}],"endTime":1527640853754,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/determineTheme.test.js","startTime":1527640853680,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn once","location":null,"status":"passed","title":"should warn once"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn if number of classes is 200","location":null,"status":"passed","title":"should warn if number of classes is 200"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should not warn if number of classes is below 200","location":null,"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527640853756,"message":"","name":"/Users/bear/code/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527640853170,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces characters that could be part of CSS selectors","location":null,"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces double hyphens with a single hyphen","location":null,"status":"passed","title":"replaces double hyphens with a single hyphen"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape removes extraneous hyphens at the ends of the string","location":null,"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527640853864,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/escape.test.js","startTime":1527640853805,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should create alphabetic names for number input data","location":null,"status":"passed","title":"should create alphabetic names for number input data"},{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should not fail for numbers above int32 limit","location":null,"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527640853898,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527640853747,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext merges strings","location":null,"status":"passed","title":"merges strings"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves rulesets after executing functions","location":null,"status":"passed","title":"resolves rulesets after executing functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves double nested rulesets after executing functions","location":null,"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527640853934,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/flatten.test.js","startTime":1527640853746,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styled"],"failureMessages":[],"fullName":"styled should have all valid HTML5 elements defined as properties","location":null,"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527640854040,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/styled.test.js","startTime":1527640853805,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index cfdc2edc4..7dcb5d833 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,56 @@ # yarn lockfile v1 +"@babel/code-frame@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz#2a02643368de80916162be70865c97774f3adbd9" + dependencies: + "@babel/highlight" "7.0.0-beta.44" + "@babel/code-frame@^7.0.0-beta.35": version "7.0.0-beta.47" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.47.tgz#d18c2f4c4ba8d093a2bcfab5616593bfe2441a27" dependencies: "@babel/highlight" "7.0.0-beta.47" +"@babel/generator@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz#c7e67b9b5284afcf69b309b50d7d37f3e5033d42" + dependencies: + "@babel/types" "7.0.0-beta.44" + jsesc "^2.5.1" + lodash "^4.2.0" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-function-name@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz#e18552aaae2231100a6e485e03854bc3532d44dd" + dependencies: + "@babel/helper-get-function-arity" "7.0.0-beta.44" + "@babel/template" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-get-function-arity@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz#d03ca6dd2b9f7b0b1e6b32c56c72836140db3a15" + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/helper-split-export-declaration@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz#c0b351735e0fbcb3822c8ad8db4e583b05ebd9dc" + dependencies: + "@babel/types" "7.0.0-beta.44" + +"@babel/highlight@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz#18c94ce543916a80553edcdcf681890b200747d5" + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^3.0.0" + "@babel/highlight@7.0.0-beta.47": version "7.0.0-beta.47" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.47.tgz#8fbc83fb2a21f0bd2b95cdbeb238cf9689cad494" @@ -16,6 +60,38 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/template@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz#f8832f4fdcee5d59bf515e595fc5106c529b394f" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + lodash "^4.2.0" + +"@babel/traverse@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz#a970a2c45477ad18017e2e465a0606feee0d2966" + dependencies: + "@babel/code-frame" "7.0.0-beta.44" + "@babel/generator" "7.0.0-beta.44" + "@babel/helper-function-name" "7.0.0-beta.44" + "@babel/helper-split-export-declaration" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + debug "^3.1.0" + globals "^11.1.0" + invariant "^2.2.0" + lodash "^4.2.0" + +"@babel/types@7.0.0-beta.44": + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz#6b1b164591f77dec0a0342aca995f2d046b3a757" + dependencies: + esutils "^2.0.2" + lodash "^4.2.0" + to-fast-properties "^2.0.0" + "@types/node@*": version "9.3.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5" @@ -95,14 +171,10 @@ acorn@^4.0.1, acorn@^4.0.4: version "4.0.13" resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" -acorn@^5.0.0, acorn@^5.3.0: +acorn@^5.0.0, acorn@^5.3.0, acorn@^5.5.0: version "5.5.3" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9" -acorn@^5.2.1: - version "5.3.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.3.0.tgz#7446d39459c54fb49a80e6ee6478149b940ec822" - address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" @@ -113,18 +185,18 @@ agent-base@^4.1.0: dependencies: es6-promisify "^5.0.0" -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" -ajv@^4.7.0, ajv@^4.9.1: +ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.1.0: +ajv@^5.1.0, ajv@^5.2.3, ajv@^5.3.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" dependencies: @@ -165,7 +237,7 @@ ansi-align@^2.0.0: dependencies: string-width "^2.0.0" -ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: +ansi-escapes@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" @@ -270,6 +342,13 @@ args@3.0.2: pkginfo "0.4.0" string-similarity "1.1.0" +aria-query@^0.7.0: + version "0.7.1" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e" + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -308,6 +387,13 @@ array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + array-map@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" @@ -334,13 +420,6 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" -array.prototype.find@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.0.4.tgz#556a5c5362c08648323ddaeb9de9d14bc1864c90" - dependencies: - define-properties "^1.1.2" - es-abstract "^1.7.0" - arrify@^1.0.0, arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -369,6 +448,10 @@ assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -439,6 +522,12 @@ axios@^0.16.1: follow-redirects "^1.2.3" is-buffer "^1.1.5" +axobject-query@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" + dependencies: + ast-types-flow "0.0.7" + babel-cli@^6.22.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" @@ -460,7 +549,7 @@ babel-cli@^6.22.2: optionalDependencies: chokidar "^1.6.1" -babel-code-frame@^6.16.0, babel-code-frame@^6.20.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: +babel-code-frame@^6.20.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -492,14 +581,16 @@ babel-core@6, babel-core@^6.0.0, babel-core@^6.17.0, babel-core@^6.18.0, babel-c slash "^1.0.0" source-map "^0.5.6" -babel-eslint@^7.1.1: - version "7.2.3" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" +babel-eslint@^8.2.3: + version "8.2.3" + resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.3.tgz#1a2e6681cc9bc4473c32899e59915e19cd6733cf" dependencies: - babel-code-frame "^6.22.0" - babel-traverse "^6.23.1" - babel-types "^6.23.0" - babylon "^6.17.0" + "@babel/code-frame" "7.0.0-beta.44" + "@babel/traverse" "7.0.0-beta.44" + "@babel/types" "7.0.0-beta.44" + babylon "7.0.0-beta.44" + eslint-scope "~3.7.1" + eslint-visitor-keys "^1.0.0" babel-generator@^6.18.0, babel-generator@^6.24.1, babel-generator@^6.26.0: version "6.26.0" @@ -1199,7 +1290,7 @@ babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0: babylon "^6.18.0" lodash "^4.17.4" -babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.26.0: +babel-traverse@^6.18.0, babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" dependencies: @@ -1213,7 +1304,7 @@ babel-traverse@^6.18.0, babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-tr invariant "^2.2.2" lodash "^4.17.4" -babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0: +babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" dependencies: @@ -1222,6 +1313,10 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24 lodash "^4.17.4" to-fast-properties "^1.0.3" +babylon@7.0.0-beta.44: + version "7.0.0-beta.44" + resolved "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" + babylon@^6.14.0: version "6.17.4" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" @@ -1490,7 +1585,7 @@ buffer@^5.0.3: base64-js "^1.0.2" ieee754 "^1.1.4" -builtin-modules@^1.0.0, builtin-modules@^1.1.0, builtin-modules@^1.1.1: +builtin-modules@^1.0.0, builtin-modules@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" @@ -1691,7 +1786,7 @@ cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" -cli-cursor@^1.0.1, cli-cursor@^1.0.2: +cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" dependencies: @@ -1850,7 +1945,7 @@ concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" -concat-stream@1.6.0, concat-stream@^1.5.2, concat-stream@^1.6.0: +concat-stream@1.6.0, concat-stream@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" dependencies: @@ -2116,12 +2211,6 @@ csurf@~1.8.3: csrf "~3.0.0" http-errors "~1.3.1" -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" - damerau-levenshtein@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" @@ -2208,7 +2297,7 @@ debug@2.6.9, debug@^2.1.2, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" -debug@^2.1.1, debug@^2.2.0, debug@^2.6.0: +debug@^2.2.0, debug@^2.6.0: version "2.6.4" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" dependencies: @@ -2357,16 +2446,16 @@ discontinuous-range@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" -doctrine@1.5.0, doctrine@^1.2.2: +doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" dependencies: esutils "^2.0.2" isarray "^1.0.0" -doctrine@^2.0.0: +doctrine@^2.0.2, doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" dependencies: esutils "^2.0.2" @@ -2457,6 +2546,10 @@ elegant-spinner@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" +emoji-regex@^6.1.0: + version "6.5.1" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + encodeurl@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -2559,32 +2652,6 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.38" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.38.tgz#fa7d40d65bbc9bb8a67e1d3f9cc656a00530eed3" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - -es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - es6-promise@^4.0.3: version "4.2.2" resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.2.tgz#f722d7769af88bd33bc13ec6605e1f92966b82d9" @@ -2595,32 +2662,6 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - escape-html@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.2.tgz#d77d32fa98e38c2f41ae85e9278e0e0e6ba1022c" @@ -2655,24 +2696,17 @@ escodegen@^1.9.0: optionalDependencies: source-map "~0.6.1" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" +eslint-config-airbnb-base@^12.1.0: + version "12.1.0" + resolved "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz#386441e54a12ccd957b0a92564a4bafebd747944" dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-config-airbnb-base@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-10.0.1.tgz#f17d4e52992c1d45d1b7713efbcd5ecd0e7e0506" + eslint-restricted-globals "^0.1.1" -eslint-config-airbnb@^13.0.0: - version "13.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-13.0.0.tgz#688d15d3c276c0c753ae538c92a44397d76ae46e" +eslint-config-airbnb@^16.1.0: + version "16.1.0" + resolved "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-16.1.0.tgz#2546bfb02cc9fe92284bf1723ccf2e87bc45ca46" dependencies: - eslint-config-airbnb-base "^10.0.0" + eslint-config-airbnb-base "^12.1.0" eslint-config-prettier@^2.9.0: version "2.9.0" @@ -2687,111 +2721,132 @@ eslint-import-resolver-node@^0.3.1: debug "^2.6.9" resolve "^1.5.0" -eslint-module-utils@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" +eslint-module-utils@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz#b270362cd88b1a48ad308976ce7fa54e98411746" dependencies: debug "^2.6.8" pkg-dir "^1.0.0" -eslint-plugin-flowtype-errors@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype-errors/-/eslint-plugin-flowtype-errors-3.5.1.tgz#ea69673407d51e6e9a9308cf56041bcd92d6756a" +eslint-plugin-flowtype-errors@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype-errors/-/eslint-plugin-flowtype-errors-3.6.0.tgz#5782994261e925aed1320630146636e88e4ad553" dependencies: babel-runtime "^6.26.0" - slash "^1.0.0" + slash "^2.0.0" -eslint-plugin-flowtype@^2.46.3: - version "2.46.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.46.3.tgz#7e84131d87ef18b496b1810448593374860b4e8e" +eslint-plugin-flowtype@^2.48.0: + version "2.48.0" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-2.48.0.tgz#e447dc27dcb99d68e2a705fd9c1046c32aae2ca1" dependencies: - lodash "^4.15.0" + lodash "^4.17.10" -eslint-plugin-import@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" +eslint-plugin-import@^2.12.0: + version "2.12.0" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.12.0.tgz#dad31781292d6664b25317fd049d2e2b2f02205d" dependencies: - builtin-modules "^1.1.1" contains-path "^0.1.0" debug "^2.6.8" doctrine "1.5.0" eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.1.1" + eslint-module-utils "^2.2.0" has "^1.0.1" - lodash.cond "^4.3.0" + lodash "^4.17.4" minimatch "^3.0.3" read-pkg-up "^2.0.0" + resolve "^1.6.0" -eslint-plugin-jsx-a11y@^2.0.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-2.2.3.tgz#4e35cb71b8a7db702ac415c806eb8e8d9ea6c65d" +eslint-plugin-jsx-a11y@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.0.3.tgz#54583d1ae442483162e040e13cc31865465100e5" dependencies: + aria-query "^0.7.0" + array-includes "^3.0.3" + ast-types-flow "0.0.7" + axobject-query "^0.1.0" damerau-levenshtein "^1.0.0" - jsx-ast-utils "^1.0.0" - object-assign "^4.0.1" + emoji-regex "^6.1.0" + jsx-ast-utils "^2.0.0" -eslint-plugin-prettier@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.5.0.tgz#39a91dd7528eaf19cd42c0ee3f2c1f684606a05f" +eslint-plugin-prettier@^2.6.0: + version "2.6.0" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.6.0.tgz#33e4e228bdb06142d03c560ce04ec23f6c767dd7" dependencies: fast-diff "^1.1.1" jest-docblock "^21.0.0" -eslint-plugin-react@^6.8.0: - version "6.10.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz#c5435beb06774e12c7db2f6abaddcbf900cd3f78" +eslint-plugin-react@^7.8.2: + version "7.8.2" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.8.2.tgz#e95c9c47fece55d2303d1a67c9d01b930b88a51d" dependencies: - array.prototype.find "^2.0.1" - doctrine "^1.2.2" + doctrine "^2.0.2" has "^1.0.1" - jsx-ast-utils "^1.3.4" - object.assign "^4.0.4" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.0" -eslint@^3.15.0: - version "3.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.19.0.tgz#c8fc6201c7f40dd08941b87c085767386a679acc" +eslint-restricted-globals@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" + +eslint-scope@^3.7.1, eslint-scope@~3.7.1: + version "3.7.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" dependencies: - babel-code-frame "^6.16.0" - chalk "^1.1.3" - concat-stream "^1.5.2" - debug "^2.1.1" - doctrine "^2.0.0" - escope "^3.6.0" - espree "^3.4.0" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@^4.19.1: + version "4.19.1" + resolved "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" esquery "^1.0.0" - estraverse "^4.2.0" esutils "^2.0.2" file-entry-cache "^2.0.0" - glob "^7.0.3" - globals "^9.14.0" - ignore "^3.2.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" imurmurhash "^0.1.4" - inquirer "^0.12.0" - is-my-json-valid "^2.10.0" + inquirer "^3.0.6" is-resolvable "^1.0.0" - js-yaml "^3.5.1" - json-stable-stringify "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.0.0" - mkdirp "^0.5.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" natural-compare "^1.4.0" optionator "^0.8.2" - path-is-inside "^1.0.1" - pluralize "^1.2.1" - progress "^1.1.8" - require-uncached "^1.0.2" - shelljs "^0.7.5" - strip-bom "^3.0.0" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" strip-json-comments "~2.0.1" - table "^3.7.8" + table "4.0.2" text-table "~0.2.0" - user-home "^2.0.0" -espree@^3.4.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" +espree@^3.5.4: + version "3.5.4" + resolved "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" dependencies: - acorn "^5.2.1" + acorn "^5.5.0" acorn-jsx "^3.0.0" esprima@^3.1.3: @@ -2839,13 +2894,6 @@ etag@~1.8.0, etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - event-stream@~3.3.0: version "3.3.4" resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571" @@ -3147,7 +3195,7 @@ fd-slicer@~1.0.1: dependencies: pend "~1.2.0" -figures@^1.3.5, figures@^1.7.0: +figures@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" dependencies: @@ -3424,6 +3472,10 @@ function.prototype.name@^1.0.3: function-bind "^1.1.1" is-callable "^1.1.3" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + gauge@~1.2.5: version "1.2.7" resolved "https://registry.yarnpkg.com/gauge/-/gauge-1.2.7.tgz#e9cec5483d3d4ee0ef44b60a7d99e4935e136d93" @@ -3447,16 +3499,6 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -generate-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" - -generate-object-property@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" - dependencies: - is-property "^1.0.0" - get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" @@ -3533,7 +3575,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: +glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -3567,7 +3609,11 @@ global@^4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^9.14.0, globals@^9.18.0: +globals@^11.0.1, globals@^11.1.0: + version "11.5.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz#6bc840de6771173b191f13d3a9c94d441ee92642" + +globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3895,9 +3941,9 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^3.2.0: - version "3.3.7" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" +ignore@^3.3.3: + version "3.3.8" + resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" image-size@^0.3.5: version "0.3.5" @@ -3957,24 +4003,6 @@ inline-style-prefixer@^3.0.8: bowser "^1.7.3" css-in-js-utils "^2.0.0" -inquirer@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^2.0.0" - figures "^1.3.5" - lodash "^4.3.0" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - string-width "^1.0.1" - strip-ansi "^3.0.0" - through "^2.3.6" - inquirer@^3.0.6: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" @@ -3994,10 +4022,6 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" -interpret@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - invariant@^2.2.0, invariant@^2.2.1, invariant@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" @@ -4175,15 +4199,6 @@ is-installed-globally@^0.1.0: global-dirs "^0.1.0" is-path-inside "^1.0.0" -is-my-json-valid@^2.10.0: - version "2.17.1" - resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz#3da98914a70a22f0a8563ef1511a246c6fc55471" - dependencies: - generate-function "^2.0.0" - generate-object-property "^1.1.0" - jsonpointer "^4.0.0" - xtend "^4.0.0" - is-npm@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" @@ -4264,10 +4279,6 @@ is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" -is-property@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" - is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" @@ -4741,13 +4752,20 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@^3.5.1, js-yaml@^3.7.0, js-yaml@^3.9.0: +js-yaml@^3.7.0, js-yaml@^3.9.0: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.9.1: + version "3.11.0" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -4811,6 +4829,10 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" +jsesc@^2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -4835,7 +4857,11 @@ json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" -json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + +json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" dependencies: @@ -4869,7 +4895,7 @@ jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" -jsonpointer@^4.0.0, jsonpointer@^4.0.1: +jsonpointer@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" @@ -4882,9 +4908,11 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -jsx-ast-utils@^1.0.0, jsx-ast-utils@^1.3.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" +jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + dependencies: + array-includes "^3.0.3" kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -5105,10 +5133,6 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" -lodash.cond@^4.3.0: - version "4.5.2" - resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" - lodash.escape@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" @@ -5196,10 +5220,14 @@ lodash@^3.5.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.16.6, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.6.1: +lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.16.6, lodash@^4.17.4, lodash@^4.3.0, lodash@^4.6.1: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" +lodash@^4.17.10, lodash@^4.2.0: + version "4.17.10" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + log-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -5586,10 +5614,6 @@ multipipe@^0.1.2: dependencies: duplexer2 "0.0.2" -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -6309,9 +6333,9 @@ plist@^1.2.0: xmlbuilder "4.0.0" xmldom "0.1.x" -pluralize@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" pn@^1.1.0: version "1.1.0" @@ -6385,10 +6409,6 @@ process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" -progress@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" - progress@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" @@ -6812,14 +6832,6 @@ readline-sync@^1.4.7: version "1.4.7" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.7.tgz#001bfdd4c06110c3c084c63bf7c6a56022213f30" -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - realpath-native@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.0.tgz#7885721a83b43bd5327609f0ddecb2482305fdf0" @@ -6830,12 +6842,6 @@ rebound@^0.0.13: version "0.0.13" resolved "https://registry.yarnpkg.com/rebound/-/rebound-0.0.13.tgz#4a225254caf7da756797b19c5817bf7a7941fac1" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - dependencies: - resolve "^1.1.6" - regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" @@ -6879,6 +6885,10 @@ regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" @@ -7038,9 +7048,9 @@ require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" -require-uncached@^1.0.2: +require-uncached@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + resolved "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" dependencies: caller-path "^0.1.0" resolve-from "^1.0.0" @@ -7073,6 +7083,12 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.5.0: dependencies: path-parse "^1.0.5" +resolve@^1.6.0: + version "1.7.1" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + dependencies: + path-parse "^1.0.5" + response-time@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/response-time/-/response-time-2.3.2.tgz#ffa71bab952d62f7c1d49b7434355fbc68dffc5a" @@ -7220,12 +7236,6 @@ rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - dependencies: - once "^1.3.0" - run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -7242,10 +7252,6 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - rxjs@^5.4.2: version "5.5.6" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.6.tgz#e31fb96d6fd2ff1fd84bcea8ae9c02d007179c02" @@ -7509,14 +7515,6 @@ shell-quote@1.6.1, shell-quote@^1.6.1: array-reduce "~0.0.0" jsonify "~0.0.0" -shelljs@^0.7.5: - version "0.7.8" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.8.tgz#decbcf874b0d1e5fb72e14b164a9683048e9acb3" - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -7537,10 +7535,20 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + slide@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -7636,7 +7644,7 @@ source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -7894,16 +7902,16 @@ symbol-tree@^3.2.1, symbol-tree@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" -table@^3.7.8: - version "3.8.3" - resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" +table@4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" tar-pack@^3.4.0: version "3.4.1" @@ -8012,6 +8020,10 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -8294,12 +8306,6 @@ user-home@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" -user-home@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" - dependencies: - os-homedir "^1.0.0" - util-deprecate@1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -8609,7 +8615,7 @@ xpipe@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" From eeb9d3f92f8debdeff8c667de4874f1196b889f0 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Tue, 29 May 2018 22:31:24 -0400 Subject: [PATCH 18/39] just only run lint on travis MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I give up. 🖕 appveyor --- appveyor.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 6879bf748..f4d6a789a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -19,6 +19,6 @@ cache: test_script: - node --version - yarn --version - - yarn run build - - yarn run flow - - yarn run lint && npm run test + - yarn build + - yarn flow + - yarn test From 0cfbce19cccfe59a77f4cd077f7112c26dcf7d8a Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Tue, 29 May 2018 21:58:09 -0400 Subject: [PATCH 19/39] update danger, travis & appveyor configs, bundlesize --- .travis.yml | 14 +- CHANGELOG.md | 2 + appveyor.yml | 5 +- package.json | 6 +- yarn.lock | 699 +++++++++++++++++++++++++++++++++++++++------------ 5 files changed, 553 insertions(+), 173 deletions(-) diff --git a/.travis.yml b/.travis.yml index 254a970e4..a976427ce 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,8 @@ addons: packages: - libnss3 - google-chrome-beta +branches: + only: master env: global: - GOOGLE_CHROME_BINARY="/usr/bin/google-chrome-beta" @@ -16,13 +18,15 @@ node_js: script: - node --version - yarn --version - - yarn run build + - yarn build + - yarn test # Tests have to run before Danger runs because # danger-plugin-jest references the test output - - yarn run test - - yarn run danger - - yarn run flow - - yarn run lint && yarn run typescript && yarn run tslint + - yarn danger + - yarn flow + - yarn lint + - yarn typescript + - yarn tslint notifications: email: on_failure: change diff --git a/CHANGELOG.md b/CHANGELOG.md index 0313c9e88..cdc43b3a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ _The format is based on [Keep a Changelog](http://keepachangelog.com/) and this - Upgrade flow-bin to latest, by @halvves (see #1748) +* Update various CI bits, by @probablyup (see #1768) + ## [v3.3.0] - 2018-05-25 * Fix off-by-one error in insertRuleHelpers.js, by @migueloller (see #1749) diff --git a/appveyor.yml b/appveyor.yml index f4d6a789a..6eda6300b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,7 @@ -version: '{build}' +version: "{build}" +branches: + only: + - master skip_tags: true build: off clone_depth: 1 diff --git a/package.json b/package.json index 477970028..dd4bc3946 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test:primitives:watch": "npm run test:primitives -- --watch", "test:integration": "jest -c .jest.integration.json --runInBand --forceExit", "test:size": "bundlesize", - "danger": "cross-env NODE_ENV=test danger run -- --verbose", + "danger": "cross-env NODE_ENV=test danger ci -v", "flow": "flow check", "flow:watch": "flow-watch", "format": "eslint ./**/*.js --fix", @@ -97,10 +97,10 @@ "babel-plugin-transform-react-remove-prop-types": "^0.4.12", "babel-preset-env": "^1.4.0", "babel-preset-react": "^6.22.0", - "bundlesize": "^0.13.2", + "bundlesize": "^0.17.0", "chokidar": "^1.6.0", "cross-env": "^5.1.3", - "danger": "^2.0.0", + "danger": "^3.7.14", "danger-plugin-jest": "^1.1.0", "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", diff --git a/yarn.lock b/yarn.lock index 7dcb5d833..6a02ec466 100644 --- a/yarn.lock +++ b/yarn.lock @@ -92,6 +92,19 @@ lodash "^4.2.0" to-fast-properties "^2.0.0" +"@octokit/rest@^15.5.0": + version "15.8.1" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-15.8.1.tgz#8bcdece90026d3af5edd73bd49a8732cb3801d29" + dependencies: + before-after-hook "^1.1.0" + btoa-lite "^1.0.0" + debug "^3.1.0" + http-proxy-agent "^2.1.0" + https-proxy-agent "^2.2.0" + lodash "^4.17.4" + node-fetch "^2.1.1" + url-template "^2.0.8" + "@types/node@*": version "9.3.0" resolved "https://registry.yarnpkg.com/@types/node/-/node-9.3.0.tgz#3a129cda7c4e5df2409702626892cb4b96546dd5" @@ -179,7 +192,7 @@ address@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/address/-/address-1.0.3.tgz#b5f50631f8d6cec8bd20c963963afb55e06cbce9" -agent-base@^4.1.0: +agent-base@4, agent-base@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.2.0.tgz#9838b5c3392b962bad031e6a4c5e1024abec45ce" dependencies: @@ -263,7 +276,13 @@ ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" -ansi-styles@^3.1.0, ansi-styles@^3.2.0: +ansi-styles@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi-styles@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" dependencies: @@ -511,15 +530,15 @@ aws4@^1.2.1, aws4@^1.6.0: axios@0.15.3: version "0.15.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" + resolved "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053" dependencies: follow-redirects "1.0.0" -axios@^0.16.1: - version "0.16.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.16.2.tgz#ba4f92f17167dfbab40983785454b9ac149c3c6d" +axios@^0.17.0: + version "0.17.1" + resolved "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d" dependencies: - follow-redirects "^1.2.3" + follow-redirects "^1.2.5" is-buffer "^1.1.5" axobject-query@^0.1.0: @@ -1077,14 +1096,7 @@ babel-plugin-transform-strict-mode@^6.24.1: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-polyfill@7.0.0-alpha.19: - version "7.0.0-alpha.19" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-7.0.0-alpha.19.tgz#546aabf80c92f4e9314176a64458a6258e5970de" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.10.0" - -babel-polyfill@^6.20.0, babel-polyfill@^6.26.0: +babel-polyfill@^6.20.0, babel-polyfill@^6.23.0, babel-polyfill@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" dependencies: @@ -1327,7 +1339,7 @@ babylon@^6.15.0, babylon@^6.17.0, babylon@^6.18.0: balanced-match@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" base64-js@0.0.8: version "0.0.8" @@ -1383,6 +1395,10 @@ beeper@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" +before-after-hook@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.1.0.tgz#83165e15a59460d13702cb8febd6a1807896db5a" + big-integer@^1.6.7: version "1.6.26" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.26.tgz#3af1672fa62daf2d5ecafacf6e5aa0d25e02c1c8" @@ -1391,6 +1407,13 @@ binary-extensions@^1.0.0: version "1.11.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -1494,8 +1517,8 @@ bplist-parser@0.1.1: big-integer "^1.6.7" brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -1539,6 +1562,13 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +brotli-size@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/brotli-size/-/brotli-size-0.0.1.tgz#8c1aeea01cd22f359b048951185bd539ff0c829f" + dependencies: + duplexer "^0.1.1" + iltorb "^1.0.9" + browser-process-hrtime@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz#425d68a58d3447f02a04aa894187fce8af8b7b8e" @@ -1574,6 +1604,29 @@ bser@^2.0.0: dependencies: node-int64 "^0.4.0" +btoa-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + +buffer-alloc@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + buffer-from@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" @@ -1587,21 +1640,22 @@ buffer@^5.0.3: builtin-modules@^1.0.0, builtin-modules@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -bundlesize@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/bundlesize/-/bundlesize-0.13.2.tgz#3a8aa61aa9f6d54f63321e2dfc7aa7716f91e73f" +bundlesize@^0.17.0: + version "0.17.0" + resolved "https://registry.npmjs.org/bundlesize/-/bundlesize-0.17.0.tgz#212ae5731ab0554d2acd509d23e1de18640b2008" dependencies: - axios "^0.16.1" - bytes "^2.5.0" + axios "^0.17.0" + brotli-size "0.0.1" + bytes "^3.0.0" ci-env "^1.4.0" commander "^2.11.0" github-build "^1.2.0" glob "^7.1.2" - gzip-size "^3.0.0" - prettycli "^1.3.0" - read-pkg-up "^2.0.0" + gzip-size "^4.0.0" + prettycli "^1.4.3" + read-pkg-up "^3.0.0" bytes@2.1.0: version "2.1.0" @@ -1611,14 +1665,10 @@ bytes@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" -bytes@3.0.0: +bytes@3.0.0, bytes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" -bytes@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1696,7 +1746,7 @@ chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: chalk@2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: ansi-styles "^3.1.0" escape-string-regexp "^1.0.5" @@ -1762,8 +1812,8 @@ chownr@^1.0.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" ci-env@^1.4.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ci-env/-/ci-env-1.5.2.tgz#6a1f025f32a3a14a8197359bf0cdb56699e4be2d" + version "1.6.1" + resolved "https://registry.npmjs.org/ci-env/-/ci-env-1.6.1.tgz#3e3ef4fc528a2825397f912cfa30cde17ec364cc" ci-info@^1.0.0: version "1.1.2" @@ -1874,13 +1924,13 @@ collection-visit@^1.0.0: color-convert@^1.9.0: version "1.9.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" dependencies: color-name "^1.1.1" color-name@^1.1.1: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" color-support@^1.1.3: version "1.1.3" @@ -1900,7 +1950,11 @@ combined-stream@^1.0.5, combined-stream@~1.0.5: dependencies: delayed-stream "~1.0.0" -commander@^2.11.0, commander@^2.12.2, commander@^2.9.0, commander@~2.13.0: +commander@^2.11.0, commander@^2.13.0: + version "2.15.1" + resolved "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + +commander@^2.9.0, commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -1943,7 +1997,7 @@ compression@~1.5.2: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" concat-stream@1.6.0, concat-stream@^1.6.0: version "1.6.0" @@ -2223,37 +2277,39 @@ danger-plugin-jest@^1.1.0: optionalDependencies: serve "^5.1.5" -danger@^2.0.0: - version "2.1.10" - resolved "https://registry.yarnpkg.com/danger/-/danger-2.1.10.tgz#97a8fcbf0dee72820460dcb6fc4008ef69605be4" +danger@^3.7.14: + version "3.7.14" + resolved "https://registry.npmjs.org/danger/-/danger-3.7.14.tgz#5fc0f3140eb766a2a5d4c94c3329823058594040" dependencies: - babel-polyfill "7.0.0-alpha.19" + "@octokit/rest" "^15.5.0" + babel-polyfill "^6.23.0" chalk "^2.3.0" - commander "^2.12.2" + commander "^2.13.0" debug "^3.1.0" - get-stdin "^5.0.1" - github "^13.0.1" + get-stdin "^6.0.0" hyperlinker "^1.0.0" jsome "^2.3.25" - json5 "^0.5.1" + json5 "^1.0.0" jsonpointer "^4.0.1" + jsonwebtoken "^8.2.1" lodash.find "^4.6.0" lodash.includes "^4.3.0" lodash.isobject "^3.0.2" lodash.keys "^4.0.8" node-cleanup "^2.1.2" - node-fetch "^1.7.3" - parse-diff "^0.4.0" - parse-git-config "^1.1.1" + node-fetch "^2.1.2" + p-limit "^1.2.0" + parse-diff "^0.4.2" + parse-git-config "^2.0.2" parse-github-url "^1.0.2" parse-link-header "^1.0.1" pinpoint "^1.1.0" - readline-sync "^1.4.7" - require-from-string "^2.0.1" + readline-sync "^1.4.9" + require-from-string "^2.0.2" rfc6902 "^2.2.2" supports-hyperlinks "^1.0.1" - vm2 patriksimek/vm2#custom_files - voca "^1.3.1" + vm2 "^3.6.0" + voca "^1.4.0" dargs@5.1.0: version "5.1.0" @@ -2291,24 +2347,24 @@ debug@2.6.7: dependencies: ms "2.0.0" -debug@2.6.9, debug@^2.1.2, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: +debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^2.2.0, debug@^2.6.0: +debug@3.1.0, debug@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@^2.6.0: version "2.6.4" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.4.tgz#7586a9b3c39741c0282ae33445c4e8ac74734fe0" dependencies: ms "0.7.3" -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - dependencies: - ms "2.0.0" - debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" @@ -2323,6 +2379,12 @@ decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + dependencies: + mimic-response "^1.0.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -2423,7 +2485,11 @@ detect-indent@^4.0.0: dependencies: repeating "^2.0.0" -detect-libc@^1.0.2: +detect-libc@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-0.2.0.tgz#47fdf567348a17ec25fcbf0b9e446348a76f9fb5" + +detect-libc@^1.0.2, detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -2510,10 +2576,6 @@ dot-prop@^4.1.0: dependencies: is-obj "^1.0.0" -dotenv@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" - duplexer2@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" @@ -2534,6 +2596,12 @@ ecc-jsbn@~0.1.1: dependencies: jsbn "~0.1.0" +ecdsa-sig-formatter@1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz#1c595000f04a8897dfb85000892a0f4c33af86c3" + dependencies: + safe-buffer "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -2560,6 +2628,12 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + dependencies: + once "^1.4.0" + entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -2613,7 +2687,7 @@ enzyme@^3.3.0: error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: is-arrayish "^0.2.1" @@ -2995,6 +3069,16 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" +expand-template@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd" + +expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + expect@^23.0.0: version "23.0.0" resolved "https://registry.npmjs.org/expect/-/expect-23.0.0.tgz#2c3ab0a44dae319e00a73e3561762768d03a2b27" @@ -3283,7 +3367,7 @@ find-up@^1.0.0: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: locate-path "^2.0.0" @@ -3325,13 +3409,13 @@ flow-watch@^1.1.1: follow-redirects@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37" dependencies: debug "^2.2.0" -follow-redirects@^1.2.3: - version "1.4.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.4.0.tgz#a146a3a5d402201c7a3e6128643f0e336d212b10" +follow-redirects@^1.2.5: + version "1.5.0" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz#234f49cf770b7f35b40e790f636ceba0c3a0ab77" dependencies: debug "^3.1.0" @@ -3395,6 +3479,10 @@ from@~0: version "0.1.7" resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + fs-exists-sync@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" @@ -3427,7 +3515,7 @@ fs-readdir-recursive@^1.0.0: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" fsevents@^1.0.0: version "1.1.3" @@ -3515,6 +3603,10 @@ get-stdin@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -3539,21 +3631,13 @@ git-config-path@^1.0.1: github-build@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/github-build/-/github-build-1.2.0.tgz#b0bdb705ae4088218577e863c1a301030211051f" + resolved "https://registry.npmjs.org/github-build/-/github-build-1.2.0.tgz#b0bdb705ae4088218577e863c1a301030211051f" dependencies: axios "0.15.3" -github@^13.0.1: - version "13.1.0" - resolved "https://registry.yarnpkg.com/github/-/github-13.1.0.tgz#fc925950beebdff0cb0583197598b86f41bedaa4" - dependencies: - debug "^3.1.0" - dotenv "^4.0.0" - https-proxy-agent "^2.1.0" - is-stream "^1.1.0" - lodash "^4.17.4" - proxy-from-env "^1.0.0" - url-template "^2.0.8" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" glob-base@^0.3.0: version "0.3.0" @@ -3687,11 +3771,12 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -gzip-size@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" +gzip-size@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c" dependencies: duplexer "^0.1.1" + pify "^3.0.0" handlebars@4.0.10, handlebars@^4.0.3: version "4.0.10" @@ -3737,7 +3822,7 @@ has-flag@^1.0.0: has-flag@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" has-gulplog@^0.1.0: version "0.1.0" @@ -3823,15 +3908,15 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.0: +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" dependencies: parse-passwd "^1.0.0" hosted-git-info@^2.1.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + version "2.6.0" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz#23235b29ab230c576aab0d4f13fc046b0b038222" html-encoding-sniffer@^1.0.1, html-encoding-sniffer@^1.0.2: version "1.0.2" @@ -3866,6 +3951,13 @@ http-errors@~1.3.1: inherits "~2.0.1" statuses "1" +http-proxy-agent@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" + dependencies: + agent-base "4" + debug "3.1.0" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" @@ -3889,6 +3981,13 @@ https-proxy-agent@^2.1.0: agent-base "^4.1.0" debug "^3.1.0" +https-proxy-agent@^2.2.0: + version "2.2.1" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz#51552970fa04d723e04c56d04178c3f92592bbc0" + dependencies: + agent-base "^4.1.0" + debug "^3.1.0" + husky@^0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3" @@ -3945,6 +4044,15 @@ ignore@^3.3.3: version "3.3.8" resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" +iltorb@^1.0.9: + version "1.3.10" + resolved "https://registry.npmjs.org/iltorb/-/iltorb-1.3.10.tgz#a0d9e4e7d52bf510741442236cbe0cc4230fc9f8" + dependencies: + detect-libc "^0.2.0" + nan "^2.6.2" + node-gyp "^3.6.2" + prebuild-install "^2.3.0" + image-size@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.3.5.tgz#83240eab2fb5b00b04aab8c74b0471e9cba7ad8c" @@ -3976,7 +4084,7 @@ indent-string@^3.0.0: inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" dependencies: once "^1.3.0" wrappy "1" @@ -3985,7 +4093,7 @@ inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, i version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -ini@^1.3.4, ini@~1.3.0: +ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" @@ -4054,7 +4162,7 @@ is-accessor-descriptor@^1.0.0: is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" is-async-supported@1.2.0: version "1.2.0" @@ -4072,11 +4180,11 @@ is-boolean-object@^1.0.0: is-buffer@^1.1.5: version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + resolved "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" is-builtin-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" dependencies: builtin-modules "^1.0.0" @@ -4879,6 +4987,12 @@ json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +json5@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + dependencies: + minimist "^1.2.0" + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -4899,6 +5013,21 @@ jsonpointer@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" +jsonwebtoken@^8.2.1: + version "8.2.1" + resolved "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.2.1.tgz#333ee39aa8f238f32fa41693e7a2fb7e42f82b31" + dependencies: + jws "^3.1.4" + lodash.includes "^4.3.0" + lodash.isboolean "^3.0.3" + lodash.isinteger "^4.0.4" + lodash.isnumber "^3.0.3" + lodash.isplainobject "^4.0.6" + lodash.isstring "^4.0.1" + lodash.once "^4.0.0" + ms "^2.1.1" + xtend "^4.0.1" + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -4914,6 +5043,21 @@ jsx-ast-utils@^2.0.0, jsx-ast-utils@^2.0.1: dependencies: array-includes "^3.0.3" +jwa@^1.1.5: + version "1.1.6" + resolved "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz#87240e76c9808dbde18783cf2264ef4929ee50e6" + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.10" + safe-buffer "^5.0.1" + +jws@^3.1.4: + version "3.1.5" + resolved "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz#80d12d05b293d1e841e7cb8b4e69e561adcf834f" + dependencies: + jwa "^1.1.5" + safe-buffer "^5.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5070,7 +5214,7 @@ load-json-file@^1.0.0: load-json-file@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -5088,7 +5232,7 @@ load-json-file@^4.0.0: locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -5159,10 +5303,30 @@ lodash.isarray@^3.0.0: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" +lodash.isboolean@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" + +lodash.isinteger@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343" + +lodash.isnumber@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc" + lodash.isobject@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/lodash.isobject/-/lodash.isobject-3.0.2.tgz#3c8fb8d5b5bf4bf90ae06e14f2a530a4ed935e1d" +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + +lodash.isstring@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" + lodash.keys@^3.0.0: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" @@ -5175,6 +5339,10 @@ lodash.keys@^4.0.8: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-4.2.0.tgz#a08602ac12e4fb83f91fc1fb7a360a4d9ba35205" +lodash.once@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" + lodash.pad@^4.1.0: version "4.5.1" resolved "https://registry.yarnpkg.com/lodash.pad/-/lodash.pad-4.5.1.tgz#4330949a833a7c8da22cc20f6a26c4d59debba70" @@ -5519,6 +5687,10 @@ mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" +mimic-response@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -5595,11 +5767,15 @@ ms@0.7.2: ms@0.7.3: version "0.7.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" + resolved "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz#708155a5e44e33f5fd0fc53e81d0d40a91be1fff" ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +ms@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" multiparty@3.3.2: version "3.3.2" @@ -5622,7 +5798,7 @@ nan@^2.3.0: version "2.8.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a" -nan@^2.9.2: +nan@^2.6.2, nan@^2.9.2: version "2.10.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.10.0.tgz#96d0cd610ebd58d4b4de9cc0c6828cda99c7548f" @@ -5687,17 +5863,45 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +node-abi@^2.2.0: + version "2.4.1" + resolved "https://registry.npmjs.org/node-abi/-/node-abi-2.4.1.tgz#7628c4d4ec4e9cd3764ceb3652f36b2e7f8d4923" + dependencies: + semver "^5.4.1" + node-cleanup@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" -node-fetch@^1.0.1, node-fetch@^1.3.3, node-fetch@^1.7.3: +node-fetch@^1.0.1, node-fetch@^1.3.3: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" dependencies: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.1.1, node-fetch@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" + +node-gyp@^3.6.2: + version "3.6.2" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz#9bfbe54562286284838e750eac05295853fa1c60" + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + minimatch "^3.0.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "2" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -5771,6 +5975,16 @@ nomnom@~1.6.2: colors "0.5.x" underscore "~1.4.4" +noop-logger@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + nopt@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -5790,7 +6004,7 @@ normalize-css-color@^1.0.1, normalize-css-color@^1.0.2: normalize-package-data@^2.3.2: version "2.4.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" dependencies: hosted-git-info "^2.1.4" is-builtin-module "^1.0.0" @@ -5858,15 +6072,7 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" -npmlog@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" - dependencies: - ansi "~0.3.1" - are-we-there-yet "~1.1.2" - gauge "~1.2.5" - -npmlog@^4.0.2: +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.1, npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" dependencies: @@ -5875,6 +6081,14 @@ npmlog@^4.0.2: gauge "~2.7.3" set-blocking "~2.0.0" +npmlog@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-2.0.4.tgz#98b52530f2514ca90d09ec5b22c8846722375692" + dependencies: + ansi "~0.3.1" + are-we-there-yet "~1.1.2" + gauge "~1.2.5" + nth-check@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" @@ -5988,7 +6202,7 @@ on-headers@~1.0.0, on-headers@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" -once@^1.3.0, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -6047,7 +6261,7 @@ ora@^0.2.3: cli-spinners "^0.1.2" object-assign "^4.0.1" -os-homedir@^1.0.0: +os-homedir@^1.0.0, os-homedir@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -6069,6 +6283,13 @@ os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" +osenv@0: + version "0.1.5" + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + osenv@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" @@ -6088,7 +6309,7 @@ p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" -p-limit@^1.1.0: +p-limit@^1.1.0, p-limit@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" dependencies: @@ -6096,7 +6317,7 @@ p-limit@^1.1.0: p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" dependencies: p-limit "^1.1.0" @@ -6106,7 +6327,7 @@ p-map@^1.1.1: p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" package-json@^4.0.0: version "4.0.1" @@ -6117,18 +6338,17 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" -parse-diff@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/parse-diff/-/parse-diff-0.4.0.tgz#9ce35bcce8fc0b7c58f46d71113394fc0b4982dd" +parse-diff@^0.4.2: + version "0.4.2" + resolved "https://registry.npmjs.org/parse-diff/-/parse-diff-0.4.2.tgz#b173390e916564e8c70ccd37756047941e5b3ef2" -parse-git-config@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-1.1.1.tgz#d3a9984317132f57398712bba438e129590ddf8c" +parse-git-config@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/parse-git-config/-/parse-git-config-2.0.2.tgz#9f3154b069aefa747b199cbf95fefd2e749f7b36" dependencies: - extend-shallow "^2.0.1" - fs-exists-sync "^0.1.0" + expand-tilde "^2.0.2" git-config-path "^1.0.1" - ini "^1.3.4" + ini "^1.3.5" parse-github-url@^1.0.2: version "1.0.2" @@ -6145,7 +6365,7 @@ parse-glob@^3.0.4: parse-json@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" dependencies: error-ex "^1.2.0" @@ -6200,7 +6420,7 @@ path-exists@^2.0.0: path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" @@ -6274,7 +6494,7 @@ performance-now@^2.1.0: pify@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" pify@^3.0.0: version "3.0.0" @@ -6357,6 +6577,26 @@ postcss-value-parser@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15" +prebuild-install@^2.3.0: + version "2.5.3" + resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.3.tgz#9f65f242782d370296353710e9bc843490c19f69" + dependencies: + detect-libc "^1.0.3" + expand-template "^1.0.2" + github-from-package "0.0.0" + minimist "^1.2.0" + mkdirp "^0.5.1" + node-abi "^2.2.0" + noop-logger "^0.1.1" + npmlog "^4.0.1" + os-homedir "^1.0.1" + pump "^2.0.1" + rc "^1.1.6" + simple-get "^2.7.0" + tar-fs "^1.13.0" + tunnel-agent "^0.6.0" + which-pm-runs "^1.0.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -6391,9 +6631,9 @@ pretty-format@^4.2.1: version "4.3.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-4.3.1.tgz#530be5c42b3c05b36414a7a2a4337aa80acd0e8d" -prettycli@^1.3.0: +prettycli@^1.4.3: version "1.4.3" - resolved "https://registry.yarnpkg.com/prettycli/-/prettycli-1.4.3.tgz#b28ec2aad9de07ae1fd75ef294fb54cbdee07ed5" + resolved "https://registry.npmjs.org/prettycli/-/prettycli-1.4.3.tgz#b28ec2aad9de07ae1fd75ef294fb54cbdee07ed5" dependencies: chalk "2.1.0" @@ -6405,6 +6645,10 @@ process-nextick-args@~1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" @@ -6458,6 +6702,20 @@ pstree.remy@^1.1.0: dependencies: ps-tree "^1.1.0" +pump@^1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -6769,11 +7027,18 @@ read-pkg-up@^1.0.1: read-pkg-up@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" dependencies: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -6784,7 +7049,7 @@ read-pkg@^1.0.0: read-pkg@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" dependencies: load-json-file "^2.0.0" normalize-package-data "^2.3.2" @@ -6810,6 +7075,18 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" +readable-stream@^2.3.0, readable-stream@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@~1.1.8, readable-stream@~1.1.9: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -6828,9 +7105,9 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -readline-sync@^1.4.7: - version "1.4.7" - resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.7.tgz#001bfdd4c06110c3c084c63bf7c6a56022213f30" +readline-sync@^1.4.9: + version "1.4.9" + resolved "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.9.tgz#3eda8e65f23cd2a17e61301b1f0003396af5ecda" realpath-native@^1.0.0: version "1.0.0" @@ -6846,7 +7123,7 @@ regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" -regenerator-runtime@^0.10.0, regenerator-runtime@^0.10.5: +regenerator-runtime@^0.10.5: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" @@ -6956,6 +7233,31 @@ request-promise-native@^1.0.5: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" +request@2: + version "2.87.0" + resolved "https://registry.npmjs.org/request/-/request-2.87.0.tgz#32f00235cd08d482b4d0d68db93a829c0ed5756e" + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.6.0" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.1" + forever-agent "~0.6.1" + form-data "~2.3.1" + har-validator "~5.0.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.17" + oauth-sign "~0.8.2" + performance-now "^2.1.0" + qs "~6.5.1" + safe-buffer "^5.1.1" + tough-cookie "~2.3.3" + tunnel-agent "^0.6.0" + uuid "^3.1.0" + request@2.81.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -7044,6 +7346,10 @@ require-from-string@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.1.tgz#c545233e9d7da6616e9d59adfb39fc9f588676ff" +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -7336,6 +7642,10 @@ semver-diff@^2.0.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + send@0.13.2: version "0.13.2" resolved "https://registry.yarnpkg.com/send/-/send-0.13.2.tgz#765e7607c8055452bba6f0b052595350986036de" @@ -7523,6 +7833,18 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +simple-concat@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" + +simple-get@^2.7.0: + version "2.8.1" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-plist@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-0.2.1.tgz#71766db352326928cf3a807242ba762322636723" @@ -7656,19 +7978,27 @@ sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" -spdx-correct@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" +spdx-correct@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82" dependencies: - spdx-license-ids "^1.0.2" + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" -spdx-expression-parse@~1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" +spdx-exceptions@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9" -spdx-license-ids@^1.0.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz#7a7cd28470cc6d3a1cfe6d66886f6bc430d3ac87" split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -7807,6 +8137,12 @@ string_decoder@~1.0.3: dependencies: safe-buffer "~5.1.0" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + stringify-object@^3.2.0: version "3.2.1" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.2.1.tgz#2720c2eff940854c819f6ee252aaeb581f30624d" @@ -7833,7 +8169,7 @@ strip-ansi@^4.0.0: strip-bom@3.0.0, strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" strip-bom@^2.0.0: version "2.0.0" @@ -7873,7 +8209,7 @@ supports-color@^3.1.2, supports-color@^3.2.3: supports-color@^4.0.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" dependencies: has-flag "^2.0.0" @@ -7913,6 +8249,15 @@ table@4.0.2: slice-ansi "1.0.0" string-width "^2.1.1" +tar-fs@^1.13.0: + version "1.16.2" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.2.tgz#17e5239747e399f7e77344f5f53365f04af53577" + dependencies: + chownr "^1.0.1" + mkdirp "^0.5.1" + pump "^1.0.0" + tar-stream "^1.1.2" + tar-pack@^3.4.0: version "3.4.1" resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" @@ -7926,7 +8271,19 @@ tar-pack@^3.4.0: tar "^2.2.1" uid-number "^0.0.6" -tar@^2.2.1: +tar-stream@^1.1.2: + version "1.6.1" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz#f84ef1696269d6223ca48f6e1eeede3f7e81f395" + dependencies: + bl "^1.0.0" + buffer-alloc "^1.1.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.0" + xtend "^4.0.0" + +tar@^2.0.0, tar@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" dependencies: @@ -8016,6 +8373,10 @@ tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" +to-buffer@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -8340,11 +8701,11 @@ v8flags@^2.1.1: user-home "^1.1.1" validate-npm-package-license@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + version "3.0.3" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz#81643bcbef1bdfecd4623793dc4648948ba98338" dependencies: - spdx-correct "~1.0.0" - spdx-expression-parse "~1.0.0" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" vary@~1.0.1: version "1.0.1" @@ -8378,13 +8739,13 @@ vlq@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" -vm2@patriksimek/vm2#custom_files: - version "3.5.0" - resolved "https://codeload.github.com/patriksimek/vm2/tar.gz/7e82f90ac705fc44fad044147cb0df09b4c79a57" +vm2@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/vm2/-/vm2-3.6.0.tgz#a6e6370c57e6edd77decfb7b1ad64fc87dbf2d4e" -voca@^1.3.1: +voca@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/voca/-/voca-1.4.0.tgz#e15ac58b38290b72acc0c330366b6cc7984924d7" + resolved "https://registry.npmjs.org/voca/-/voca-1.4.0.tgz#e15ac58b38290b72acc0c330366b6cc7984924d7" w3c-hr-time@^1.0.1: version "1.0.1" @@ -8458,6 +8819,16 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + +which@1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + which@^1.2.10, which@^1.2.12, which@^1.2.8, which@^1.2.9, which@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" @@ -8518,7 +8889,7 @@ wrap-ansi@^2.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" write-file-atomic@^1.2.0: version "1.3.4" @@ -8615,9 +8986,9 @@ xpipe@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/xpipe/-/xpipe-1.0.5.tgz#8dd8bf45fc3f7f55f0e054b878f43a62614dafdf" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.1, xtend@~4.0.1: +"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" y18n@^3.2.1: version "3.2.1" From 039d2f049c4c5f8ade9fd9ddd9e3bc44bd308d07 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Tue, 29 May 2018 20:48:59 -0400 Subject: [PATCH 20/39] remove test-results.json from source control --- .gitignore | 1 + test-results.json | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 test-results.json diff --git a/.gitignore b/.gitignore index 9717997c0..dc0613080 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ __diff_output__ lib sandbox/node_modules *.log +test-results.json diff --git a/test-results.json b/test-results.json deleted file mode 100644 index a8396e652..000000000 --- a/test-results.json +++ /dev/null @@ -1 +0,0 @@ -{"numFailedTestSuites":0,"numFailedTests":0,"numPassedTestSuites":32,"numPassedTests":232,"numPendingTestSuites":0,"numPendingTests":0,"numRuntimeErrorTestSuites":0,"numTotalTestSuites":32,"numTotalTests":232,"openHandles":[],"snapshot":{"added":0,"didUpdate":false,"failure":false,"filesAdded":0,"filesRemoved":0,"filesUnmatched":0,"filesUpdated":0,"matched":25,"total":25,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0},"startTime":1527640847625,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the reactProps","location":null,"status":"passed","title":"should allow all the reactProps"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the html props","location":null,"status":"passed","title":"should allow all the html props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle all the SVG props","location":null,"status":"passed","title":"should handle all the SVG props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle aria and data attributes","location":null,"status":"passed","title":"should handle aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle uppercase aria and data attributes","location":null,"status":"passed","title":"should handle uppercase aria and data attributes"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should allow all the event handlers","location":null,"status":"passed","title":"should allow all the event handlers"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should not allow custom props","location":null,"status":"passed","title":"should not allow custom props"},{"ancestorTitles":["validAttr"],"failureMessages":[],"fullName":"validAttr should handle x attributes","location":null,"status":"passed","title":"should handle x attributes"}],"endTime":1527640850986,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/validAttr.test.js","startTime":1527640849785,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate empty classes with no styles","location":null,"status":"passed","title":"should generate empty classes with no styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to both classes if only parent has styles","location":null,"status":"passed","title":"should attach styles to both classes if only parent has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should attach styles to child class if only child has styles","location":null,"status":"passed","title":"should attach styles to child class if only child has styles"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate a class for the child with the rules of the parent","location":null,"status":"passed","title":"should generate a class for the child with the rules of the parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should generate different classes for both parent and child","location":null,"status":"passed","title":"should generate different classes for both parent and child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should copy nested rules to the child","location":null,"status":"passed","title":"should copy nested rules to the child"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep default props from parent","location":null,"status":"passed","title":"should keep default props from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep prop types from parent","location":null,"status":"passed","title":"should keep prop types from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep custom static member from parent","location":null,"status":"passed","title":"should keep custom static member from parent"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep static member in triple inheritance","location":null,"status":"passed","title":"should keep static member in triple inheritance"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should keep styles in >= 3 inheritances","location":null,"status":"passed","title":"should keep styles in >= 3 inheritances"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component","location":null,"status":"passed","title":"should allow changing component"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and extending","location":null,"status":"passed","title":"should allow changing component and extending"},{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should allow changing component and adding attributes","location":null,"status":"passed","title":"should allow changing component and adding attributes"}],"endTime":1527640852612,"message":"","name":"/Users/bear/code/styled-components/src/test/extending.test.js","startTime":1527640851063,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not throw an error when called with a valid element","location":null,"status":"passed","title":"should not throw an error when called with a valid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with an invalid element","location":null,"status":"passed","title":"should throw a meaningful error when called with an invalid element"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should not inject anything by default","location":null,"status":"passed","title":"should not inject anything by default"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject component class when rendered even if no styles are passed","location":null,"status":"passed","title":"should inject component class when rendered even if no styles are passed"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject styles","location":null,"status":"passed","title":"should inject styles"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should inject only once for a styled component, no matter how often it's mounted","location":null,"status":"passed","title":"should inject only once for a styled component, no matter how often it's mounted"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic Should have the correct styled(component) displayName","location":null,"status":"passed","title":"Should have the correct styled(component) displayName"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should allow you to pass in style objects","location":null,"status":"passed","title":"should allow you to pass in style objects"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the ref to the component","location":null,"status":"passed","title":"should pass the ref to the component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not leak the innerRef prop to the wrapped child","location":null,"status":"passed","title":"should not leak the innerRef prop to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the full className to the wrapped child","location":null,"status":"passed","title":"should pass the full className to the wrapped child"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should pass the innerRef to the wrapped styled component","location":null,"status":"passed","title":"should pass the innerRef to the wrapped styled component"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should respect the order of StyledComponent creation for CSS ordering","location":null,"status":"passed","title":"should respect the order of StyledComponent creation for CSS ordering"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests handle media at-rules inside style rules","location":null,"status":"passed","title":"handle media at-rules inside style rules"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should hoist non-react static properties","location":null,"status":"passed","title":"should hoist non-react static properties"},{"ancestorTitles":["basic","jsdom tests"],"failureMessages":[],"fullName":"basic jsdom tests should not hoist styled component statics","location":null,"status":"passed","title":"should not hoist styled component statics"}],"endTime":1527640852637,"message":"","name":"/Users/bear/code/styled-components/src/test/basic.test.js","startTime":1527640849358,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should use given stylesheet instance","location":null,"status":"passed","title":"should use given stylesheet instance"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target","location":null,"status":"passed","title":"should append style to given target"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should append style to given target in iframe","location":null,"status":"passed","title":"should append style to given target in iframe"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should apply styles to appropriate targets for nested StyleSheetManagers","location":null,"status":"passed","title":"should apply styles to appropriate targets for nested StyleSheetManagers"},{"ancestorTitles":["StyleSheetManager"],"failureMessages":[],"fullName":"StyleSheetManager should inject styles into two parallel contexts","location":null,"status":"passed","title":"should inject styles into two parallel contexts"},{"ancestorTitles":["StyleSheetManager","ssr"],"failureMessages":[],"fullName":"StyleSheetManager ssr should extract CSS outside the nested StyleSheetManager","location":null,"status":"passed","title":"should extract CSS outside the nested StyleSheetManager"}],"endTime":1527640852732,"message":"","name":"/Users/bear/code/styled-components/src/models/test/StyleSheetManager.test.js","startTime":1527640849335,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract the CSS in a simple case","location":null,"status":"passed","title":"should extract the CSS in a simple case"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should extract both global and local CSS","location":null,"status":"passed","title":"should extract both global and local CSS"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should not spill ServerStyleSheets into each other","location":null,"status":"passed","title":"should not spill ServerStyleSheets into each other"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should add a nonce to the stylesheet if webpack nonce is detected in the global scope","location":null,"status":"passed","title":"should add a nonce to the stylesheet if webpack nonce is detected in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should render CSS in the order the components were defined, not rendered","location":null,"status":"passed","title":"should render CSS in the order the components were defined, not rendered"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should share global styles but keep renders separate","location":null,"status":"passed","title":"should share global styles but keep renders separate"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should allow global styles to be injected during rendering","location":null,"status":"passed","title":"should allow global styles to be injected during rendering"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should dispatch global styles to each ServerStyleSheet","location":null,"status":"passed","title":"should dispatch global styles to each ServerStyleSheet"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element","location":null,"status":"passed","title":"should return a generated React style element"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should return a generated React style element with nonce if webpack nonce is preset in the global scope","location":null,"status":"passed","title":"should return a generated React style element with nonce if webpack nonce is preset in the global scope"},{"ancestorTitles":["ssr"],"failureMessages":[],"fullName":"ssr should interleave styles with rendered HTML when utilitizing streaming","location":null,"status":"passed","title":"should interleave styles with rendered HTML when utilitizing streaming"}],"endTime":1527640852740,"message":"","name":"/Users/bear/code/styled-components/src/test/ssr.test.js","startTime":1527640849334,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append a style","location":null,"status":"passed","title":"should append a style"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should append multiple styles","location":null,"status":"passed","title":"should append multiple styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects","location":null,"status":"passed","title":"should handle inline style objects"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with media queries","location":null,"status":"passed","title":"should handle inline style objects with media queries"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with pseudo selectors","location":null,"status":"passed","title":"should handle inline style objects with pseudo selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with nesting","location":null,"status":"passed","title":"should handle inline style objects with nesting"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should handle inline style objects with contextual selectors","location":null,"status":"passed","title":"should handle inline style objects with contextual selectors"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components","location":null,"status":"passed","title":"should inject styles of multiple components"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should inject styles of multiple components based on creation, not rendering order","location":null,"status":"passed","title":"should inject styles of multiple components based on creation, not rendering order"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should strip a JS-style (invalid) comment in the styles","location":null,"status":"passed","title":"should strip a JS-style (invalid) comment in the styles"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should respect removed rules","location":null,"status":"passed","title":"should respect removed rules"},{"ancestorTitles":["with styles"],"failureMessages":[],"fullName":"with styles should add a webpack nonce to the style tags if one is available in the global scope","location":null,"status":"passed","title":"should add a webpack nonce to the style tags if one is available in the global scope"}],"endTime":1527640852786,"message":"","name":"/Users/bear/code/styled-components/src/test/styles.test.js","startTime":1527640849355,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs work fine with an empty object","location":null,"status":"passed","title":"work fine with an empty object"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass a simple attr","location":null,"status":"passed","title":"pass a simple attr"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs call an attr function","location":null,"status":"passed","title":"call an attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass props to the attr function","location":null,"status":"passed","title":"pass props to the attr function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should replace attrs with props","location":null,"status":"passed","title":"should replace attrs with props"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className","location":null,"status":"passed","title":"should merge className"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should merge className even if its a function","location":null,"status":"passed","title":"should merge className even if its a function"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should work with data and aria attributes","location":null,"status":"passed","title":"should work with data and aria attributes"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs","location":null,"status":"passed","title":"merge attrs"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs merge attrs when inheriting SC","location":null,"status":"passed","title":"merge attrs when inheriting SC"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs pass attrs to style block","location":null,"status":"passed","title":"pass attrs to style block"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through children as a normal prop","location":null,"status":"passed","title":"should pass through children as a normal prop"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should pass through complex children as well","location":null,"status":"passed","title":"should pass through complex children as well"},{"ancestorTitles":["attrs"],"failureMessages":[],"fullName":"attrs should override children of course","location":null,"status":"passed","title":"should override children of course"}],"endTime":1527640852893,"message":"","name":"/Users/bear/code/styled-components/src/test/attrs.test.js","startTime":1527640852685,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should append a new component like normal","location":null,"status":"passed","title":"should append a new component like normal"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId","location":null,"status":"passed","title":"should reuse a componentId"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and generated class","location":null,"status":"passed","title":"should reuse a componentId and generated class"},{"ancestorTitles":["rehydration","with existing styled components"],"failureMessages":[],"fullName":"rehydration with existing styled components should reuse a componentId and inject new classes","location":null,"status":"passed","title":"should reuse a componentId and inject new classes"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should preserve the styles","location":null,"status":"passed","title":"should preserve the styles"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should not inject new styles for a component already rendered","location":null,"status":"passed","title":"should not inject new styles for a component already rendered"},{"ancestorTitles":["rehydration","with styled components with props"],"failureMessages":[],"fullName":"rehydration with styled components with props should inject new styles for a new computed style of a component","location":null,"status":"passed","title":"should inject new styles for a new computed style of a component"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with inline styles that werent rendered by us"],"failureMessages":[],"fullName":"rehydration with inline styles that werent rendered by us should generate new classes, even if they have the same name","location":null,"status":"passed","title":"should generate new classes, even if they have the same name"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should leave the existing styles there","location":null,"status":"passed","title":"should leave the existing styles there"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should inject new global styles at the end","location":null,"status":"passed","title":"should inject new global styles at the end"},{"ancestorTitles":["rehydration","with global styles"],"failureMessages":[],"fullName":"rehydration with global styles should interleave global and local styles","location":null,"status":"passed","title":"should interleave global and local styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should replace stylesheets on-demand","location":null,"status":"passed","title":"should replace stylesheets on-demand"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should not change styles if rendered in the same order they were created with","location":null,"status":"passed","title":"should not change styles if rendered in the same order they were created with"},{"ancestorTitles":["rehydration","with all styles already rendered"],"failureMessages":[],"fullName":"rehydration with all styles already rendered should still not change styles if rendered in a different order","location":null,"status":"passed","title":"should still not change styles if rendered in a different order"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not touch existing styles","location":null,"status":"passed","title":"should not touch existing styles"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should not regenerate keyframes","location":null,"status":"passed","title":"should not regenerate keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should still inject new keyframes","location":null,"status":"passed","title":"should still inject new keyframes"},{"ancestorTitles":["rehydration","with keyframes"],"failureMessages":[],"fullName":"rehydration with keyframes should pass the keyframes name along as well","location":null,"status":"passed","title":"should pass the keyframes name along as well"}],"endTime":1527640852890,"message":"","name":"/Users/bear/code/styled-components/src/test/rehydration.test.js","startTime":1527640849811,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should not throw an error when no children are passed","location":null,"status":"passed","title":"should not throw an error when no children are passed"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should accept a theme prop that's a plain object","location":null,"status":"passed","title":"should accept a theme prop that's a plain object"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should render its child","location":null,"status":"passed","title":"should render its child"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with an outer theme","location":null,"status":"passed","title":"should merge its theme with an outer theme"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should merge its theme with multiple outer themes","location":null,"status":"passed","title":"should merge its theme with multiple outer themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider should be able to render two independent themes","location":null,"status":"passed","title":"should be able to render two independent themes"},{"ancestorTitles":["ThemeProvider"],"failureMessages":[],"fullName":"ThemeProvider ThemeProvider propagates theme updates through nested ThemeProviders","location":null,"status":"passed","title":"ThemeProvider propagates theme updates through nested ThemeProviders"}],"endTime":1527640852978,"message":"","name":"/Users/bear/code/styled-components/src/models/test/ThemeProvider.test.js","startTime":1527640852732,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component","location":null,"status":"passed","title":"should inject props.theme into a styled component"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a styled component multiple levels deep","location":null,"status":"passed","title":"should inject props.theme into a styled component multiple levels deep"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to fallback to its default props when a theme is not provided","location":null,"status":"passed","title":"should properly allow a component to fallback to its default props when a theme is not provided"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop even if it is equal to defaultProps theme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly allow a component to override the theme with a prop","location":null,"status":"passed","title":"should properly allow a component to override the theme with a prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly set the theme with an empty object when no theme is provided and no defaults are set","location":null,"status":"passed","title":"should properly set the theme with an empty object when no theme is provided and no defaults are set"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only inject props.theme into styled components within its child component tree","location":null,"status":"passed","title":"should only inject props.theme into styled components within its child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into all styled components within the child component tree","location":null,"status":"passed","title":"should inject props.theme into all styled components within the child component tree"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject new CSS when the theme changes","location":null,"status":"passed","title":"should inject new CSS when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly render with the same theme from default props on re-render","location":null,"status":"passed","title":"should properly render with the same theme from default props on re-render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if theme is changed","location":null,"status":"passed","title":"should properly update style if theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update style if props used in styles is changed","location":null,"status":"passed","title":"should properly update style if props used in styles is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should change the classnames when the theme changes","location":null,"status":"passed","title":"should change the classnames when the theme changes"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should inject props.theme into a component that uses withTheme hoc","location":null,"status":"passed","title":"should inject props.theme into a component that uses withTheme hoc"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should properly update theme prop on hoc component when theme is changed","location":null,"status":"passed","title":"should properly update theme prop on hoc component when theme is changed"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should use ThemeProvider theme instead of defaultProps theme after initial render","location":null,"status":"passed","title":"should use ThemeProvider theme instead of defaultProps theme after initial render"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should hoist static properties when using withTheme","location":null,"status":"passed","title":"should hoist static properties when using withTheme"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should only pass the theme prop","location":null,"status":"passed","title":"should only pass the theme prop"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on as ref","location":null,"status":"passed","title":"should accept innerRef and pass it on as ref"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for stateless function components","location":null,"status":"passed","title":"should accept innerRef and pass it on for stateless function components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should accept innerRef and pass it on for styled components","location":null,"status":"passed","title":"should accept innerRef and pass it on for styled components"},{"ancestorTitles":["theming"],"failureMessages":[],"fullName":"theming should not break without a ThemeProvier if it has a defaultTheme","location":null,"status":"passed","title":"should not break without a ThemeProvier if it has a defaultTheme"}],"endTime":1527640852981,"message":"","name":"/Users/bear/code/styled-components/src/test/theme.test.js","startTime":1527640849346,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten handles nested objects","location":null,"status":"passed","title":"handles nested objects"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten toStrings class instances","location":null,"status":"passed","title":"toStrings class instances"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten passes values to function","location":null,"status":"passed","title":"passes values to function"},{"ancestorTitles":["flatten"],"failureMessages":[],"fullName":"flatten recursively calls functions","location":null,"status":"passed","title":"recursively calls functions"}],"endTime":1527640853065,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/flatten.test.js","startTime":1527640852919,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be auto-generated if none passed","location":null,"status":"passed","title":"should be auto-generated if none passed"},{"ancestorTitles":["expanded api","displayName"],"failureMessages":[],"fullName":"expanded api displayName should be attached if supplied","location":null,"status":"passed","title":"should be attached if supplied"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated as \"sc\" + hash","location":null,"status":"passed","title":"should be generated as \"sc\" + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be generated from displayName + hash","location":null,"status":"passed","title":"should be generated from displayName + hash"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be attached if passed in","location":null,"status":"passed","title":"should be attached if passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should be combined with displayName if both passed in","location":null,"status":"passed","title":"should be combined with displayName if both passed in"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.extend`","location":null,"status":"passed","title":"should work with `.extend`"},{"ancestorTitles":["expanded api","componentId"],"failureMessages":[],"fullName":"expanded api componentId should work with `.withComponent`","location":null,"status":"passed","title":"should work with `.withComponent`"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should merge the options strings","location":null,"status":"passed","title":"should merge the options strings"},{"ancestorTitles":["expanded api","chaining"],"failureMessages":[],"fullName":"expanded api chaining should keep the last value passed in when merging","location":null,"status":"passed","title":"should keep the last value passed in when merging"}],"endTime":1527640853073,"message":"","name":"/Users/bear/code/styled-components/src/test/expanded-api.test.js","startTime":1527640852834,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should work for null or empty","location":null,"status":"passed","title":"should work for null or empty"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should ignore anything before the first SC","location":null,"status":"passed","title":"should ignore anything before the first SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC","location":null,"status":"passed","title":"should return a single SC"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return a single SC with multiple lines","location":null,"status":"passed","title":"should return a single SC with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with single lines","location":null,"status":"passed","title":"should return multiple SCs with single lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should return multiple SCs with multiple lines","location":null,"status":"passed","title":"should return multiple SCs with multiple lines"},{"ancestorTitles":["extractCompsFromCSS"],"failureMessages":[],"fullName":"extractCompsFromCSS should include whitespace after a component","location":null,"status":"passed","title":"should include whitespace after a component"}],"endTime":1527640853150,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/extractCompsFromCSS.test.js","startTime":1527640853035,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should inject rules into the head","location":null,"status":"passed","title":"should inject rules into the head"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called repeatedly","location":null,"status":"passed","title":"should non-destructively inject styles when called repeatedly"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should non-destructively inject styles when called after a component","location":null,"status":"passed","title":"should non-destructively inject styles when called after a component"},{"ancestorTitles":["injectGlobal"],"failureMessages":[],"fullName":"injectGlobal should extract @import rules into separate style tags","location":null,"status":"passed","title":"should extract @import rules into separate style tags"}],"endTime":1527640853166,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/injectGlobal.test.js","startTime":1527640853037,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styleNames","addNameForId"],"failureMessages":[],"fullName":"styleNames addNameForId adds an id and a name to a given dictionary","location":null,"status":"passed","title":"adds an id and a name to a given dictionary"},{"ancestorTitles":["styleNames","resetIdNames"],"failureMessages":[],"fullName":"styleNames resetIdNames removes all names for an ID","location":null,"status":"passed","title":"removes all names for an ID"},{"ancestorTitles":["styleNames","hasNameForId"],"failureMessages":[],"fullName":"styleNames hasNameForId checks the existance of a name for an id","location":null,"status":"passed","title":"checks the existance of a name for an id"},{"ancestorTitles":["styleNames","stringifyNames"],"failureMessages":[],"fullName":"styleNames stringifyNames lists out all known names as a continuous string","location":null,"status":"passed","title":"lists out all known names as a continuous string"},{"ancestorTitles":["styleNames","cloneNames"],"failureMessages":[],"fullName":"styleNames cloneNames creates a deep clone of the names dictionary","location":null,"status":"passed","title":"creates a deep clone of the names dictionary"}],"endTime":1527640853170,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/styleNames.test.js","startTime":1527640853075,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles without any functions as static","location":null,"status":"passed","title":"should mark styles without any functions as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a nested styled component as static","location":null,"status":"passed","title":"should mark styles with a nested styled component as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark styles with a dynamic style as not static","location":null,"status":"passed","title":"should mark styles with a dynamic style as not static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with numeric attriutes as static","location":null,"status":"passed","title":"should mark components with numeric attriutes as static"},{"ancestorTitles":["static style caching"],"failureMessages":[],"fullName":"static style caching should mark components with dynamic attributes as not static","location":null,"status":"passed","title":"should mark components with dynamic attributes as not static"}],"endTime":1527640853241,"message":"","name":"/Users/bear/code/styled-components/src/test/staticCaching.test.js","startTime":1527640853083,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes in the right order","location":null,"status":"passed","title":"should add vendor prefixes in the right order"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should add vendor prefixes for display","location":null,"status":"passed","title":"should add vendor prefixes for display"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should generate styles for nested media queries","location":null,"status":"passed","title":"should generate styles for nested media queries"},{"ancestorTitles":["css features"],"failureMessages":[],"fullName":"css features should pass through custom properties","location":null,"status":"passed","title":"should pass through custom properties"}],"endTime":1527640853284,"message":"","name":"/Users/bear/code/styled-components/src/test/css.test.js","startTime":1527640853164,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should return its name","location":null,"status":"passed","title":"should return its name"},{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should insert the correct styles","location":null,"status":"passed","title":"should insert the correct styles"}],"endTime":1527640853396,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/keyframes.test.js","startTime":1527640853286,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and fall back","location":null,"status":"passed","title":"should execute interpolations and fall back"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should execute interpolations and inject props","location":null,"status":"passed","title":"should execute interpolations and inject props"},{"ancestorTitles":["props"],"failureMessages":[],"fullName":"props should ignore non-0 falsy object interpolations","location":null,"status":"passed","title":"should ignore non-0 falsy object interpolations"}],"endTime":1527640853443,"message":"","name":"/Users/bear/code/styled-components/src/test/props.test.js","startTime":1527640853334,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["keyframes"],"failureMessages":[],"fullName":"keyframes should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"}],"endTime":1527640853468,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/keyframes.test.js","startTime":1527640853329,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should throw a meaningful error when called with null","location":null,"status":"passed","title":"should throw a meaningful error when called with null"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly assemble preprocessed CSS"},{"ancestorTitles":["basic"],"failureMessages":[],"fullName":"basic should correctly execute passed functions and assemble preprocessed CSS","location":null,"status":"passed","title":"should correctly execute passed functions and assemble preprocessed CSS"}],"endTime":1527640853483,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/basic.test.js","startTime":1527640853311,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with default SC_ATTR","location":null,"status":"passed","title":"should work with default SC_ATTR"},{"ancestorTitles":["constants"],"failureMessages":[],"fullName":"constants should work with custom SC_ATTR","location":null,"status":"passed","title":"should work with custom SC_ATTR"}],"endTime":1527640853553,"message":"","name":"/Users/bear/code/styled-components/src/test/constants.test.js","startTime":1527640853415,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["extending"],"failureMessages":[],"fullName":"extending should let you use another component in a css rule","location":null,"status":"passed","title":"should let you use another component in a css rule"}],"endTime":1527640853676,"message":"","name":"/Users/bear/code/styled-components/src/test/overriding.test.js","startTime":1527640853576,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName defaults to reusing the component displayName","location":null,"status":"passed","title":"defaults to reusing the component displayName"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName falls back to the class name","location":null,"status":"passed","title":"falls back to the class name"},{"ancestorTitles":["getComponentName"],"failureMessages":[],"fullName":"getComponentName ultimately falls back to \"Component\"","location":null,"status":"passed","title":"ultimately falls back to \"Component\""}],"endTime":1527640853720,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/getComponentName.test.js","startTime":1527640853621,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a string type","location":null,"status":"passed","title":"handles a string type"},{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a React class type","location":null,"status":"passed","title":"handles a React class type"},{"ancestorTitles":[],"failureMessages":[],"fullName":"handles a React class type with displayName","location":null,"status":"passed","title":"handles a React class type with displayName"}],"endTime":1527640853721,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/generateDisplayName.test.js","startTime":1527640853609,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave blindly interleave","location":null,"status":"passed","title":"blindly interleave"},{"ancestorTitles":["interleave"],"failureMessages":[],"fullName":"interleave should be driven off the number of interpolations","location":null,"status":"passed","title":"should be driven off the number of interpolations"}],"endTime":1527640853733,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/interleave.test.js","startTime":1527640853627,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should take precedence over ThemeProvider","location":null,"status":"passed","title":"should take precedence over ThemeProvider"},{"ancestorTitles":["determineTheme"],"failureMessages":[],"fullName":"determineTheme should fallback to default theme","location":null,"status":"passed","title":"should fallback to default theme"}],"endTime":1527640853754,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/determineTheme.test.js","startTime":1527640853680,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn once","location":null,"status":"passed","title":"should warn once"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should warn if number of classes is 200","location":null,"status":"passed","title":"should warn if number of classes is 200"},{"ancestorTitles":["warn too many classes"],"failureMessages":[],"fullName":"warn too many classes should not warn if number of classes is below 200","location":null,"status":"passed","title":"should not warn if number of classes is below 200"}],"endTime":1527640853756,"message":"","name":"/Users/bear/code/styled-components/src/test/warnTooManyClasses.test.js","startTime":1527640853170,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces characters that could be part of CSS selectors","location":null,"status":"passed","title":"replaces characters that could be part of CSS selectors"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape replaces double hyphens with a single hyphen","location":null,"status":"passed","title":"replaces double hyphens with a single hyphen"},{"ancestorTitles":["escape"],"failureMessages":[],"fullName":"escape removes extraneous hyphens at the ends of the string","location":null,"status":"passed","title":"removes extraneous hyphens at the ends of the string"}],"endTime":1527640853864,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/escape.test.js","startTime":1527640853805,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should create alphabetic names for number input data","location":null,"status":"passed","title":"should create alphabetic names for number input data"},{"ancestorTitles":["generateAlphabeticName"],"failureMessages":[],"fullName":"generateAlphabeticName should not fail for numbers above int32 limit","location":null,"status":"passed","title":"should not fail for numbers above int32 limit"}],"endTime":1527640853898,"message":"","name":"/Users/bear/code/styled-components/src/utils/test/generateAlphabeticName.test.js","startTime":1527640853747,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt merge strings","location":null,"status":"passed","title":"doesnt merge strings"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten without executionContext"],"failureMessages":[],"fullName":"preparsed flatten without executionContext defers functions","location":null,"status":"passed","title":"defers functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext merges strings","location":null,"status":"passed","title":"merges strings"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext drops nulls","location":null,"status":"passed","title":"drops nulls"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext doesnt drop any numbers","location":null,"status":"passed","title":"doesnt drop any numbers"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext toStrings everything","location":null,"status":"passed","title":"toStrings everything"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext hypenates objects","location":null,"status":"passed","title":"hypenates objects"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens nested rulesets","location":null,"status":"passed","title":"flattens nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens double nested rulesets","location":null,"status":"passed","title":"flattens double nested rulesets"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext flattens subarrays","location":null,"status":"passed","title":"flattens subarrays"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext executes functions","location":null,"status":"passed","title":"executes functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves rulesets after executing functions","location":null,"status":"passed","title":"resolves rulesets after executing functions"},{"ancestorTitles":["preparsed flatten with executionContext"],"failureMessages":[],"fullName":"preparsed flatten with executionContext resolves double nested rulesets after executing functions","location":null,"status":"passed","title":"resolves double nested rulesets after executing functions"}],"endTime":1527640853934,"message":"","name":"/Users/bear/code/styled-components/src/no-parser/test/flatten.test.js","startTime":1527640853746,"status":"passed","summary":""},{"assertionResults":[{"ancestorTitles":["styled"],"failureMessages":[],"fullName":"styled should have all valid HTML5 elements defined as properties","location":null,"status":"passed","title":"should have all valid HTML5 elements defined as properties"}],"endTime":1527640854040,"message":"","name":"/Users/bear/code/styled-components/src/constructors/test/styled.test.js","startTime":1527640853805,"status":"passed","summary":""}],"wasInterrupted":false} \ No newline at end of file From 8df1144d858bbc8759ab11ac9c074313341e6d50 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Wed, 30 May 2018 00:24:00 -0400 Subject: [PATCH 21/39] run prettier on dangerfile --- dangerfile.js | 59 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 14 deletions(-) diff --git a/dangerfile.js b/dangerfile.js index af431cce8..f9f279e81 100644 --- a/dangerfile.js +++ b/dangerfile.js @@ -7,17 +7,27 @@ import jest from 'danger-plugin-jest' jest() -const jsModifiedFiles = danger.git.modified_files.filter(path => path.startsWith('src') && path.endsWith('js')) -const vendorModifiedFiles = danger.git.modified_files.filter(path => path.startsWith('src/vendor') && path.endsWith('js')) +const jsModifiedFiles = danger.git.modified_files.filter( + path => path.startsWith('src') && path.endsWith('js') +) +const vendorModifiedFiles = danger.git.modified_files.filter( + path => path.startsWith('src/vendor') && path.endsWith('js') +) -const hasAppChanges = jsModifiedFiles.filter(filepath => !filepath.endsWith('test.js')).length > 0 -const jsTestChanges = jsModifiedFiles.filter(filepath => filepath.endsWith('test.js')) +const hasAppChanges = + jsModifiedFiles.filter(filepath => !filepath.endsWith('test.js')).length > 0 +const jsTestChanges = jsModifiedFiles.filter(filepath => + filepath.endsWith('test.js') +) const hasTestChanges = jsTestChanges.length > 0 // Congrats, version bump up! danger.git.diffForFile('package.json').then(packageDiff => { if ( - packageDiff && packageDiff.version && packageDiff.version.before && packageDiff.version.after + packageDiff && + packageDiff.version && + packageDiff.version.before && + packageDiff.version.after ) { if (semver.lt(packageDiff.version.before, packageDiff.version.after)) { message(':tada: Version BUMP UP!') @@ -33,25 +43,44 @@ if (danger.github.pr.additions + danger.github.pr.deletions > bigPRThreshold) { // Fail if there are app changes without a CHANGELOG if (!danger.git.modified_files.includes('CHANGELOG.md') && hasAppChanges) { - const changelogLink = 'https://github.com/styled-components/styled-components/blob/master/CHANGELOG.md' - fail(`Please include a CHANGELOG entry. You can find it at CHANGELOG.md`) + const changelogLink = + 'https://github.com/styled-components/styled-components/blob/master/CHANGELOG.md' + fail( + `Please include a CHANGELOG entry. You can find it at CHANGELOG.md` + ) } // Warn if there are library changes, but not tests (excluding vendor) -const libraryOnlyFiles = jsModifiedFiles.filter(file => !vendorModifiedFiles.includes(file)) +const libraryOnlyFiles = jsModifiedFiles.filter( + file => !vendorModifiedFiles.includes(file) +) if (libraryOnlyFiles.length > 0 && !hasTestChanges) { - warn("There are library changes, but not tests. That's OK as long as you're refactoring existing code") + warn( + "There are library changes, but not tests. That's OK as long as you're refactoring existing code" + ) } // Warn if StyledComponent.js was edited but not StyledNativeComponent.js or viceversa -const hasStyledChanges = danger.git.modified_files.find(path => path.endsWith('StyledComponent.js')) !== null -const hasNativeStyledChanges = danger.git.modified_files.find(path => path.endsWith('StyledNativeComponent.js')) !== null +const hasStyledChanges = + danger.git.modified_files.find(path => + path.endsWith('StyledComponent.js') + ) !== null +const hasNativeStyledChanges = + danger.git.modified_files.find(path => + path.endsWith('StyledNativeComponent.js') + ) !== null if (hasStyledChanges && !hasNativeStyledChanges) { - warn("A change was made in StyledComponent.js that wasn't made in StyledNativeComponent.js or viceversa.") + warn( + "A change was made in StyledComponent.js that wasn't made in StyledNativeComponent.js or viceversa." + ) } // Changes to these files may need SemVer bumps -const semverBumpFiles = ['ThemeProvider.js', 'StyledComponent.js', 'StyledNativeComponent.js'] +const semverBumpFiles = [ + 'ThemeProvider.js', + 'StyledComponent.js', + 'StyledNativeComponent.js', +] semverBumpFiles.forEach(file => { if (jsModifiedFiles.includes(file)) { warn('Changes to #{file} might be SemVer major changes.') @@ -61,5 +90,7 @@ semverBumpFiles.forEach(file => { // Be careful of leaving testing shortcuts in the codebase jsTestChanges.forEach(file => { const content = fs.readFileSync(file).toString() - if (content.includes('it.only') || content.includes('describe.only')) { fail(`an \`only\` was left in tests (${file})`) } + if (content.includes('it.only') || content.includes('describe.only')) { + fail(`an \`only\` was left in tests (${file})`) + } }) From 1d667600f7801dd13d81fbac0fd76c51bdf0207e Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Wed, 30 May 2018 00:24:38 -0400 Subject: [PATCH 22/39] remove unactionable danger message --- dangerfile.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/dangerfile.js b/dangerfile.js index f9f279e81..bd7c2ec7a 100644 --- a/dangerfile.js +++ b/dangerfile.js @@ -35,12 +35,6 @@ danger.git.diffForFile('package.json').then(packageDiff => { } }) -// Warn when there is a big PR -const bigPRThreshold = 500 -if (danger.github.pr.additions + danger.github.pr.deletions > bigPRThreshold) { - warn(':exclamation: Big PR') -} - // Fail if there are app changes without a CHANGELOG if (!danger.git.modified_files.includes('CHANGELOG.md') && hasAppChanges) { const changelogLink = From 989093e49e19dca4eec8b087e6ac7d47fbcda7a2 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Wed, 30 May 2018 00:29:07 -0400 Subject: [PATCH 23/39] adjust changelog to reflect the new PR number --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdc43b3a2..2ffb50dd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,9 @@ _The format is based on [Keep a Changelog](http://keepachangelog.com/) and this ## Unreleased -- Upgrade flow-bin to latest, by @halvves (see #1748) +* Upgrade flow-bin to latest, by @halvves (see #1748) -* Update various CI bits, by @probablyup (see #1768) +* Update various CI bits, by @probablyup (see #1769) ## [v3.3.0] - 2018-05-25 From d52d7e937085a273f633cf91cea96b60760608fb Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Wed, 30 May 2018 00:36:42 -0400 Subject: [PATCH 24/39] fix bundlesize param name It changed from threshold to maxSize --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index dd4bc3946..896cf8da3 100644 --- a/package.json +++ b/package.json @@ -180,15 +180,15 @@ "bundlesize": [ { "path": "./dist/styled-components.min.js", - "threshold": "16kB" + "maxSize": "16kB" }, { "path": "./dist/styled-components.cjs.min.js", - "threshold": "11.5kB" + "maxSize": "11.5kB" }, { "path": "./dist/styled-components.es.min.js", - "threshold": "11.5kB" + "maxSize": "11.5kB" } ], "collective": { From 22ab0f65d30f5bd354b41e3ef016d1bd6deff242 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Tue, 29 May 2018 21:27:19 -0400 Subject: [PATCH 25/39] reimplement streaming as a transform stream --- CHANGELOG.md | 2 ++ src/models/ServerStyleSheet.js | 48 +++++++++++++++------------------- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ffb50dd0..b1ce5418f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ _The format is based on [Keep a Changelog](http://keepachangelog.com/) and this * Update various CI bits, by @probablyup (see #1769) +* Reimplement SSR stream handling as a transform stream rather than a second-order readable stream, by @probablyup (see #1768) + ## [v3.3.0] - 2018-05-25 * Fix off-by-one error in insertRuleHelpers.js, by @migueloller (see #1749) diff --git a/src/models/ServerStyleSheet.js b/src/models/ServerStyleSheet.js index 32c00b5e3..4ed17fa15 100644 --- a/src/models/ServerStyleSheet.js +++ b/src/models/ServerStyleSheet.js @@ -76,36 +76,30 @@ export default class ServerStyleSheet { let instanceTagIndex = 0 const streamAttr = `${SC_STREAM_ATTR}="true"` - const ourStream = new stream.Readable() - // $FlowFixMe - ourStream._read = () => {} - - readableStream.on('data', chunk => { - const { tags } = instance - let html = '' - - /* retrieve html for each new style tag */ - for (; instanceTagIndex < tags.length; instanceTagIndex += 1) { - const tag = tags[instanceTagIndex] - html += tag.toHTML(streamAttr) - } - - /* force our StyleSheets to emit entirely new tags */ - instance.sealAllTags() - /* prepend style html to chunk */ - ourStream.push(html + chunk) - }) - readableStream.on('end', () => { - this.complete() - ourStream.push(null) - }) + const transformer = new stream.Transform({ + transform: function appendStyleChunks(chunk, /* encoding */ _, callback) { + const { tags } = instance + let html = '' + + /* retrieve html for each new style tag */ + for (; instanceTagIndex < tags.length; instanceTagIndex += 1) { + const tag = tags[instanceTagIndex] + html += tag.toHTML(streamAttr) + } - readableStream.on('error', err => { - this.complete() - ourStream.emit('error', err) + /* force our StyleSheets to emit entirely new tags */ + instance.sealAllTags() + + /* prepend style html to chunk */ + this.push(html + chunk) + callback() + }, }) - return ourStream + readableStream.on('end', () => this.complete()) + readableStream.on('error', () => this.complete()) + + return readableStream.pipe(transformer) } } From cca5aa978370c475d610f57c7ef6b3dcbaa1ed56 Mon Sep 17 00:00:00 2001 From: Evan Scott Date: Wed, 30 May 2018 10:40:54 -0400 Subject: [PATCH 26/39] fix error handling on the transform stream --- src/models/ServerStyleSheet.js | 7 ++++++- src/test/__snapshots__/ssr.test.js.snap | 2 ++ src/test/ssr.test.js | 23 +++++++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/models/ServerStyleSheet.js b/src/models/ServerStyleSheet.js index 4ed17fa15..043980c99 100644 --- a/src/models/ServerStyleSheet.js +++ b/src/models/ServerStyleSheet.js @@ -98,7 +98,12 @@ export default class ServerStyleSheet { }) readableStream.on('end', () => this.complete()) - readableStream.on('error', () => this.complete()) + readableStream.on('error', err => { + this.complete() + + // forward the error to the transform stream + transformer.emit('error', err) + }) return readableStream.pipe(transformer) } diff --git a/src/test/__snapshots__/ssr.test.js.snap b/src/test/__snapshots__/ssr.test.js.snap index adb990c09..7298df0c0 100644 --- a/src/test/__snapshots__/ssr.test.js.snap +++ b/src/test/__snapshots__/ssr.test.js.snap @@ -68,6 +68,8 @@ exports[`ssr should extract the CSS in a simple case 2`] = ` .sc-a {} .b{color:red;}" `; +exports[`ssr should handle errors while streaming 1`] = `[Invariant Violation: React.Children.only expected to receive a single React element child.]`; + exports[`ssr should interleave styles with rendered HTML when utilitizing streaming 1`] = ` "