From 31fd4a5b38409b98c47e76142d862b257ac7dd7f Mon Sep 17 00:00:00 2001 From: Meinaart van Straalen Date: Sat, 1 Dec 2018 22:46:53 +0100 Subject: [PATCH] To match image snapshot (#7) * Add `toMatchImageSnapshot` command * Made creating "diff image" optional by adding `createDiffImage` to `imageConfig` * Fix `toMatchImageSnapshot` tests * Add automatic resizing for high DPI (Retina screens) * Fix unpublished `har-validator@5.1.2` package * Fix tests on Travis * Fix imageConfig is undefined and move `resizeImage` to seperate file * Fix sharp * Travis: trying to use internal travis GCC * Use Jimp * Fix jest test * Remove exploited event-stream version * Run tests in Chrome * Increase threshold to see if this fixes it on Travis --- .gitignore | 1 + .travis.yml | 2 + README.md | 49 +- __tests__/commands.test.js | 15 +- __tests__/plugin.test.js | 7 +- __tests__/tasks/snapshots.test.js | 19 - ...snap => keepKeysFromExpected.test.js.snap} | 23 +- __tests__/utils/commands.test.js | 20 +- __tests__/utils/keepKeysFromExpected.test.js | 62 + __tests__/utils/snapshots.test.js | 140 - .../__snapshots__/applyReplace.test.js.snap} | 2 +- __tests__/utils/tasks/applyReplace.test.js | 15 + assets/script.js | 148 +- assets/styles.css | 58 + commands.js | 109 +- cypress/cypress.json | 9 +- cypress/cypress/fixtures/example.json | 5 + ...hot toMatchImageSnapshot - element #0.png | Bin 0 -> 124173 bytes ... toMatchImageSnapshot - whole page #0.png | Bin 0 -> 126357 bytes .../__snapshots__/Test.spec.js.snap | 19 - .../toMatchSnapshot.spec.js.snap | 42 + .../integration/toMatchImageSnapshot.spec.js | 22 + .../{Test.spec.js => toMatchSnapshot.spec.js} | 2 +- cypress/cypress/support/index.js | 5 + cypress/package-lock.json | 1622 +++++++++--- cypress/package.json | 4 +- cypress/test-server/static/css/fonts.css | 33 + cypress/test-server/static/fonts/LICENSE.txt | 202 ++ .../static/fonts/open-sans-v15-latin-700.woff | Bin 0 -> 18476 bytes .../fonts/open-sans-v15-latin-700.woff2 | Bin 0 -> 14720 bytes .../fonts/open-sans-v15-latin-regular.woff | Bin 0 -> 17704 bytes .../fonts/open-sans-v15-latin-regular.woff2 | Bin 0 -> 14048 bytes cypress/test-server/static/stub.html | 40 +- cypress/test-server/static/stub2.html | 69 + package-lock.json | 2302 ++++++++++++----- package.json | 34 +- plugin.js | 23 +- src/commands/commandNames.js | 4 + src/commands/index.js | 7 + src/commands/toMatchImageSnapshot.js | 52 + src/commands/toMatchSnapshot.js | 21 + config.js => src/config.js | 11 +- src/constants.js | 8 + constants.js => src/dataTypes.js | 3 +- {tasks => src}/paths.js | 2 +- save-server.js => src/saveServer.js | 6 +- tasks/get-file.js => src/tasks/getFile.js | 8 +- src/tasks/index.js | 20 + src/tasks/matchImageSnapshot.js | 75 + .../tasks/matchTextSnapshot.js | 57 +- src/tasks/saveImageSnapshot.js | 23 + src/tasks/saveTextSnapshot.js | 16 + src/tasks/taskNames.js | 7 + ui.js => src/ui.js | 15 +- src/utils/commands/cleanupSnapshots.js | 38 + src/utils/commands/getConfig.js | 29 + src/utils/commands/getTaskData.js | 47 + .../utils/commands/index.js | 63 - src/utils/commands/logMessage.js | 57 + src/utils/getTestTitle.js | 5 + src/utils/imageSnapshots.js | 25 + src/utils/json.js | 31 + src/utils/keepKeysFromExpected.js | 36 + src/utils/removeExcludedFields.js | 20 + src/utils/snapshotTitles.js | 31 + src/utils/tasks/applyReplace.js | 27 + src/utils/tasks/imageSnapshots.js | 157 ++ src/utils/tasks/resizeImage.js | 25 + .../utils/tasks/textSnapshots.js | 60 +- src/utils/textSnapshots.js | 12 + tasks/index.js | 13 - tasks/task-names.js | 5 - utils/snapshots.js | 176 -- 73 files changed, 4654 insertions(+), 1641 deletions(-) delete mode 100644 __tests__/tasks/snapshots.test.js rename __tests__/utils/__snapshots__/{snapshots.test.js.snap => keepKeysFromExpected.test.js.snap} (69%) create mode 100644 __tests__/utils/keepKeysFromExpected.test.js delete mode 100644 __tests__/utils/snapshots.test.js rename __tests__/{tasks/__snapshots__/snapshots.test.js.snap => utils/tasks/__snapshots__/applyReplace.test.js.snap} (66%) create mode 100644 __tests__/utils/tasks/applyReplace.test.js create mode 100644 cypress/cypress/fixtures/example.json create mode 100644 cypress/cypress/integration/__image_snapshots__/toMatchImageSnapshot toMatchImageSnapshot - element #0.png create mode 100644 cypress/cypress/integration/__image_snapshots__/toMatchImageSnapshot toMatchImageSnapshot - whole page #0.png delete mode 100644 cypress/cypress/integration/__snapshots__/Test.spec.js.snap create mode 100644 cypress/cypress/integration/__snapshots__/toMatchSnapshot.spec.js.snap create mode 100644 cypress/cypress/integration/toMatchImageSnapshot.spec.js rename cypress/cypress/integration/{Test.spec.js => toMatchSnapshot.spec.js} (89%) create mode 100644 cypress/test-server/static/css/fonts.css create mode 100644 cypress/test-server/static/fonts/LICENSE.txt create mode 100644 cypress/test-server/static/fonts/open-sans-v15-latin-700.woff create mode 100644 cypress/test-server/static/fonts/open-sans-v15-latin-700.woff2 create mode 100644 cypress/test-server/static/fonts/open-sans-v15-latin-regular.woff create mode 100644 cypress/test-server/static/fonts/open-sans-v15-latin-regular.woff2 create mode 100644 cypress/test-server/static/stub2.html create mode 100644 src/commands/commandNames.js create mode 100644 src/commands/index.js create mode 100644 src/commands/toMatchImageSnapshot.js create mode 100644 src/commands/toMatchSnapshot.js rename config.js => src/config.js (83%) create mode 100644 src/constants.js rename constants.js => src/dataTypes.js (70%) rename {tasks => src}/paths.js (84%) rename save-server.js => src/saveServer.js (75%) rename tasks/get-file.js => src/tasks/getFile.js (78%) create mode 100644 src/tasks/index.js create mode 100644 src/tasks/matchImageSnapshot.js rename tasks/snapshots.js => src/tasks/matchTextSnapshot.js (53%) create mode 100644 src/tasks/saveImageSnapshot.js create mode 100644 src/tasks/saveTextSnapshot.js create mode 100644 src/tasks/taskNames.js rename ui.js => src/ui.js (86%) create mode 100644 src/utils/commands/cleanupSnapshots.js create mode 100644 src/utils/commands/getConfig.js create mode 100644 src/utils/commands/getTaskData.js rename utils/commands.js => src/utils/commands/index.js (54%) create mode 100644 src/utils/commands/logMessage.js create mode 100644 src/utils/getTestTitle.js create mode 100644 src/utils/imageSnapshots.js create mode 100644 src/utils/json.js create mode 100644 src/utils/keepKeysFromExpected.js create mode 100644 src/utils/removeExcludedFields.js create mode 100644 src/utils/snapshotTitles.js create mode 100644 src/utils/tasks/applyReplace.js create mode 100644 src/utils/tasks/imageSnapshots.js create mode 100644 src/utils/tasks/resizeImage.js rename utils/plugin.js => src/utils/tasks/textSnapshots.js (60%) create mode 100644 src/utils/textSnapshots.js delete mode 100644 tasks/index.js delete mode 100644 tasks/task-names.js delete mode 100644 utils/snapshots.js diff --git a/.gitignore b/.gitignore index 9daa8247..580f15c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store node_modules +/cypress/cypress/screenshots diff --git a/.travis.yml b/.travis.yml index 454130a2..ef361919 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,8 @@ cache: - npm run cy:verify notifications: email: false +addons: + chrome: stable install: - npm ci - npm --prefix cypress ci diff --git a/README.md b/README.md index 92adfc51..b0725dac 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ## Installation `npm i cypress-plugin-snapshots -S` -## Usage +## Usage for text snapshots ```javascript describe('data test', () => { it('toMatchSnapshot - JSON', () => { @@ -52,14 +52,43 @@ You can pass the following options to `toMatchSnapshot` to override default beha Use `replace` with caution. Tests should be deterministic. It's often a better solution to influence your test result instead of your snapshot (by mocking data for example). -## Config Cypress.io +## Usage for image snapshots +```javascript +it('toMatchImageSnapshot - element', () => { + cy.visit('/static/stub.html') + .then(() => { + cy.get('[data-test=test]') + .toMatchImageSnapshot(); + }); +}); + +it('toMatchImageSnapshot - whole page', () => { + cy.visit('/static/stub.html') + .then(() => { + cy.document() + .toMatchImageSnapshot(); + }); +}); +``` + +You can pass the following options to `toMatchImageSnapshot` to override default behavior. +```javascript +{ + "createDiffImage": true, // Should a "diff image" be created, can be disabled for performance + "threshold": 0.01, // Amount in pixels or percentage before snapshot image is invalid + "thresholdType": "percent" // Can be either "pixels" or "percent" +} +``` + +## Configure Cypress.io Add this to your `cypress.json` configuration file: ```json "ignoreTestFiles": [ - "**/*.snap", - "**/__snapshot__/*" + "**/__snapshots__/*", + "**/__image_snapshots__/*" ] ``` + ### Plugin Find your `cypress/plugins/index.js` file and change it to look like this: @@ -95,6 +124,12 @@ Add the configuration below to your `cypress.json` file to make changes to the d "ignoreExtraFields": false, // Ignore extra fields that are not in `snapshot` "normalizeJson": true, // Alphabetically sort keys in JSON "prettier": true, // Enable `prettier` for formatting HTML before comparison + "imageConfig": { + "createDiffImage": true, // Should a "diff image" be created, can be disabled for performance + "resizeDevicePixelRatio": true,// Resize image to base resolution when Cypress is running on high DPI screen, `cypress run` always runs on base resolution + "threshold": 0.01, // Amount in pixels or percentage before snapshot image is invalid + "thresholdType": "percent" // Can be either "pixels" or "percent" + }, "serverEnabled": true, // Enable "update snapshot" server and button in diff modal "serverHost": "localhost", // Hostname for "update snapshot server" "serverPort": 2121, // Port number for "update snapshot server" @@ -106,12 +141,12 @@ Add the configuration below to your `cypress.json` file to make changes to the d ## Roadmap Below is a list of functionality that is under consideration for implementing in a next version. -- Fix handling of update snapshot via UI that contains a replacable field +- Fix handling of "update snapshot" button that contains a replacable field +- Fix handling of updating image snapshots +- Resize images before comparison - Disable "update snapshots" server in headless mode - Add more unit tests - Add [JSDoc](http://usejsdoc.org/) documentation -- Consider code coverage tests with [Coveralls](https://coveralls.io/) and [Istanbul](http://gotwarlost.github.io/istanbul/) -- Consider implementing visual snapshots with [jest-image-snapshot](https://github.com/americanexpress/jest-image-snapshot) ## Contributing In lieu of a formal styleguide, take care to maintain the existing coding style. diff --git a/__tests__/commands.test.js b/__tests__/commands.test.js index 77007afa..0f6a33c3 100644 --- a/__tests__/commands.test.js +++ b/__tests__/commands.test.js @@ -1,25 +1,24 @@ const { initCommands } = require('../commands'); global.Cypress = { - env: () => {}, + env: () => ({}), config: () => {}, - Commands: { - add: jest.fn(), - }, + Commands: { add: jest.fn(), }, + on: () => ({}), }; global.cy = {}; -describe('command', () => { - it('should create command', () => { +describe('commands', () => { + it('initCommands', () => { global.before = jest.fn(); global.after = jest.fn(); + global.cy.task = jest.fn().mockResolvedValue({ passed: true }); initCommands(); - global.cy.task = jest.fn().mockResolvedValue({ pass: true }); expect(global.Cypress.Commands.add).toBeCalled(); - expect(global.Cypress.Commands.add.mock.calls.length).toEqual(1); + expect(global.Cypress.Commands.add.mock.calls.length).toEqual(2); expect(global.Cypress.Commands.add.mock.calls[0][0]).toEqual('toMatchSnapshot'); expect(global.after).toBeCalled(); expect(global.before).toBeCalled(); diff --git a/__tests__/plugin.test.js b/__tests__/plugin.test.js index 10274a0f..cdeb2d01 100644 --- a/__tests__/plugin.test.js +++ b/__tests__/plugin.test.js @@ -1,6 +1,7 @@ -const configModule = require('../config'); +/* eslint no-template-curly-in-string: 0 */ +const configModule = require('../src/config'); -jest.mock("../config.js"); +jest.mock("../src/config.js"); jest.spyOn(configModule, 'initConfig') .mockImplementation((config) => config); @@ -31,6 +32,6 @@ describe('plugin', () => { const { initPlugin } = require('../plugin'); initPlugin(on, globalConfig); - expect(on).toBeCalledTimes(1); + expect(on).toBeCalledTimes(2); }); }); diff --git a/__tests__/tasks/snapshots.test.js b/__tests__/tasks/snapshots.test.js deleted file mode 100644 index 227c5ed1..00000000 --- a/__tests__/tasks/snapshots.test.js +++ /dev/null @@ -1,19 +0,0 @@ -/* eslint no-template-curly-in-string: 0 */ -describe('tasks/snapshots', () => { - describe('applyReplace', () => { - const { - applyReplace - } = require('../../tasks/snapshots'); - - it('object replace', () => { - const expected = { - "text": "Hi ${name} & ${name}", - "text2": "Hi ${name}", - }; - const result = applyReplace(expected, { - name: 'Meinaart', - }); - expect(result).toMatchSnapshot(); - }); - }); -}) diff --git a/__tests__/utils/__snapshots__/snapshots.test.js.snap b/__tests__/utils/__snapshots__/keepKeysFromExpected.test.js.snap similarity index 69% rename from __tests__/utils/__snapshots__/snapshots.test.js.snap rename to __tests__/utils/__snapshots__/keepKeysFromExpected.test.js.snap index bfafa6c8..e1389db4 100644 --- a/__tests__/utils/__snapshots__/snapshots.test.js.snap +++ b/__tests__/utils/__snapshots__/keepKeysFromExpected.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`utils/snapshot keepKeysFromExpected ignoreExtraFields: false, ignoreExtraArrayItems: false 1`] = ` +exports[`utils/keepKeysFromExpected ignoreExtraFields: false, ignoreExtraArrayItems: false 1`] = ` Object { "extra": "extra", "field": "value", @@ -31,7 +31,7 @@ Object { } `; -exports[`utils/snapshot keepKeysFromExpected ignoreExtraFields: false, ignoreExtraArrayItems: true 1`] = ` +exports[`utils/keepKeysFromExpected ignoreExtraFields: false, ignoreExtraArrayItems: true 1`] = ` Object { "extra": "extra", "field": "value", @@ -55,7 +55,7 @@ Object { } `; -exports[`utils/snapshot keepKeysFromExpected ignoreExtraFields: true, ignoreExtraArrayItems: false 1`] = ` +exports[`utils/keepKeysFromExpected ignoreExtraFields: true, ignoreExtraArrayItems: false 1`] = ` Object { "field": "value", "items": Array [ @@ -84,7 +84,7 @@ Object { } `; -exports[`utils/snapshot keepKeysFromExpected ignoreExtraFields: true, ignoreExtraArrayItems: true 1`] = ` +exports[`utils/keepKeysFromExpected ignoreExtraFields: true, ignoreExtraArrayItems: true 1`] = ` Object { "field": "value", "items": Array [ @@ -105,18 +105,3 @@ Object { ], } `; - -exports[`utils/snapshot subjectToSnapshot normalizes 1`] = ` -Object { - "bar": "foo", - "foo": "bar", - "sub": Object { - "asubsub": Object { - "bar": "foo", - "foo": "bar", - }, - "bar": "foo", - "foo": "bar", - }, -} -`; diff --git a/__tests__/utils/commands.test.js b/__tests__/utils/commands.test.js index 97d9f1d6..e4fa5876 100644 --- a/__tests__/utils/commands.test.js +++ b/__tests__/utils/commands.test.js @@ -1,6 +1,6 @@ const rewire = require('rewire'); -const DEFAULT_CONFIG = rewire('../../config').__get__('DEFAULT_CONFIG'); +const DEFAULT_CONFIG = rewire('../../src/config').__get__('DEFAULT_CONFIG'); global.Cypress = { env: () => {}, @@ -27,29 +27,19 @@ describe('utils/command', () => { return returnValue; }; - const commands = rewire('../../utils/commands'); - commands.__set__('Cypress', global.Cypress); - - const getConfig = commands.__get__('getConfig'); - const config = getConfig(); - expect(config).toMatchObject(DEFAULT_CONFIG); + const getConfig = require('../../src/utils/commands/getConfig'); + expect(getConfig()).toMatchObject(DEFAULT_CONFIG); }); it('with config', () => { global.Cypress.env = () => CONFIG; - const commands = rewire('../../utils/commands'); - commands.__set__('Cypress', global.Cypress); - - const getConfig = commands.__get__('getConfig'); + const getConfig = require('../../src/utils/commands/getConfig'); expect(getConfig()).toMatchObject(CONFIG); }); it('without config - error should be thrown', () => { global.Cypress.env = () => undefined; - const commands = rewire('../../utils/commands'); - commands.__set__('Cypress', global.Cypress); - - const getConfig = commands.__get__('getConfig'); + const getConfig = require('../../src/utils/commands/getConfig'); expect(() => { getConfig(); }).toThrow(); }); }); diff --git a/__tests__/utils/keepKeysFromExpected.test.js b/__tests__/utils/keepKeysFromExpected.test.js new file mode 100644 index 00000000..c345f9a6 --- /dev/null +++ b/__tests__/utils/keepKeysFromExpected.test.js @@ -0,0 +1,62 @@ + +describe('utils/keepKeysFromExpected', () => { + const expected = { + field: "value", + items: [ + {name: "item1", "items": [{name: "subitem1"}]}, + {name: "item2"}, + {name: "item3"}, + ] + }; + + const actual = { + field: "value", + extra: "extra", + items: [ + {name: "item1", "items": [{name: "subitem1", extra: 'extra1'}, {name: "subitem2", extra: 'extra2'}]}, + {name: "item2"}, + {name: "item3"}, + {name: "item4"}, + ] + }; + + it('ignoreExtraFields: false, ignoreExtraArrayItems: false', () => { + const config = { + ignoreExtraFields: false, + ignoreExtraArrayItems: false, + }; + const keepKeysFromExpected = require('../../src/utils/keepKeysFromExpected'); + const result = keepKeysFromExpected(actual, expected, config); + expect(result).toMatchSnapshot(); + }); + + it('ignoreExtraFields: true, ignoreExtraArrayItems: false', () => { + const config = { + ignoreExtraFields: true, + ignoreExtraArrayItems: false, + }; + const keepKeysFromExpected = require('../../src/utils/keepKeysFromExpected'); + const result = keepKeysFromExpected(actual, expected, config); + expect(result).toMatchSnapshot(); + }); + + it('ignoreExtraFields: true, ignoreExtraArrayItems: true', () => { + const config = { + ignoreExtraFields: true, + ignoreExtraArrayItems: true, + }; + const keepKeysFromExpected = require('../../src/utils/keepKeysFromExpected'); + const result = keepKeysFromExpected(actual, expected, config); + expect(result).toMatchSnapshot(); + }); + + it('ignoreExtraFields: false, ignoreExtraArrayItems: true', () => { + const config = { + ignoreExtraFields: false, + ignoreExtraArrayItems: true, + }; + const keepKeysFromExpected = require('../../src/utils/keepKeysFromExpected'); + const result = keepKeysFromExpected(actual, expected, config); + expect(result).toMatchSnapshot(); + }); +}); diff --git a/__tests__/utils/snapshots.test.js b/__tests__/utils/snapshots.test.js deleted file mode 100644 index a8ee4da5..00000000 --- a/__tests__/utils/snapshots.test.js +++ /dev/null @@ -1,140 +0,0 @@ -const { subjectToSnapshot } = require('../../utils/snapshots'); -const configModule = require('../../config'); - -jest.mock("../../config.js"); - -jest.spyOn(configModule, 'initConfig') - .mockImplementation((config) => config); - -global.Cypress = { - env: () => {}, - config: () => {}, - Commands: { - add: jest.fn(), - }, -}; - -global.cy = {}; - -describe('utils/snapshot', () => { - describe('keepKeysFromExpected', () => { - const expected = { - field: "value", - items: [{ - name: "item1", - "items": [{ - name: "subitem1" - }] - }, - { - name: "item2" - }, - { - name: "item3" - }, - ] - }; - - const actual = { - field: "value", - extra: "extra", - items: [{ - name: "item1", - "items": [{ - name: "subitem1", - extra: 'extra1' - }, { - name: "subitem2", - extra: 'extra2' - }] - }, - { - name: "item2" - }, - { - name: "item3" - }, - { - name: "item4" - }, - ] - }; - - it('ignoreExtraFields: false, ignoreExtraArrayItems: false', () => { - const config = { - ignoreExtraFields: false, - ignoreExtraArrayItems: false, - }; - jest.spyOn(configModule, 'getConfig').mockImplementation(() => config); - - const { - keepKeysFromExpected - } = require('../../utils/snapshots'); - - const result = keepKeysFromExpected(actual, expected); - expect(result).toMatchSnapshot(); - }); - - it('ignoreExtraFields: true, ignoreExtraArrayItems: false', () => { - const config = { - ignoreExtraFields: true, - ignoreExtraArrayItems: false, - }; - jest.spyOn(configModule, 'getConfig').mockImplementation(() => config); - - const { - keepKeysFromExpected - } = require('../../utils/snapshots'); - const result = keepKeysFromExpected(actual, expected); - expect(result).toMatchSnapshot(); - }); - - it('ignoreExtraFields: true, ignoreExtraArrayItems: true', () => { - const config = { - ignoreExtraFields: true, - ignoreExtraArrayItems: true, - }; - jest.spyOn(configModule, 'getConfig').mockImplementation(() => config); - const { - keepKeysFromExpected - } = require('../../utils/snapshots'); - - const result = keepKeysFromExpected(actual, expected); - expect(result).toMatchSnapshot(); - }); - - it('ignoreExtraFields: false, ignoreExtraArrayItems: true', () => { - const config = { - ignoreExtraFields: false, - ignoreExtraArrayItems: true, - }; - jest.spyOn(configModule, 'getConfig').mockImplementation(() => config); - - const { - keepKeysFromExpected - } = require('../../utils/snapshots'); - - const result = keepKeysFromExpected(actual, expected); - expect(result).toMatchSnapshot(); - }); - }); - - describe('subjectToSnapshot', () => { - it('normalizes', () => { - const normalized = subjectToSnapshot({ - foo: 'bar', - bar: 'foo', - sub: { - foo: 'bar', - bar: 'foo', - asubsub: { - foo: 'bar', - bar: 'foo', - } - } - }, 'json'); - - expect(normalized).toMatchSnapshot(); - }); - }); -}); diff --git a/__tests__/tasks/__snapshots__/snapshots.test.js.snap b/__tests__/utils/tasks/__snapshots__/applyReplace.test.js.snap similarity index 66% rename from __tests__/tasks/__snapshots__/snapshots.test.js.snap rename to __tests__/utils/tasks/__snapshots__/applyReplace.test.js.snap index 1ade5cab..9df6a992 100644 --- a/__tests__/tasks/__snapshots__/snapshots.test.js.snap +++ b/__tests__/utils/tasks/__snapshots__/applyReplace.test.js.snap @@ -1,6 +1,6 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`tasks/snapshots applyReplace object replace 1`] = ` +exports[`utils/tasks/applyReplace object replace 1`] = ` Object { "text": "Hi Meinaart & Meinaart", "text2": "Hi Meinaart", diff --git a/__tests__/utils/tasks/applyReplace.test.js b/__tests__/utils/tasks/applyReplace.test.js new file mode 100644 index 00000000..f6de99ff --- /dev/null +++ b/__tests__/utils/tasks/applyReplace.test.js @@ -0,0 +1,15 @@ +/* eslint no-template-curly-in-string: 0 */ +describe('utils/tasks/applyReplace', () => { + const applyReplace = require('../../../src/utils/tasks/applyReplace'); + + it('object replace', () => { + const expected = { + "text": "Hi ${name} & ${name}", + "text2": "Hi ${name}", + }; + const result = applyReplace(expected, { + name: 'Meinaart', + }); + expect(result).toMatchSnapshot(); + }); +}) diff --git a/assets/script.js b/assets/script.js index a9c197f8..66e6f918 100644 --- a/assets/script.js +++ b/assets/script.js @@ -1,5 +1,9 @@ /* eslint-disable */ +function closeSnapshotModal() { + Cypress.$('.snapshot-diff', top.document).remove(); +}; + (function () { function htmlEncode(subject) { return typeof subject === 'string' ? @@ -7,49 +11,139 @@ : JSON.stringify(subject, undefined, 2); } - function formatResult(data) { + // Bug: `cy.readFile` only works first time, as a fix I wrap it in a cached `Cypress.Promise`. + // @TODO: file a bug report about this. + const __readFileCache__ = {}; + function readFile(url, encoding = 'base64', options = { log: false }) { + if (!__readFileCache__[encoding]) { + __readFileCache__[encoding] = {}; + } + + const cache = __readFileCache__[encoding]; + if (!cache[url]) { + cache[url] = new Cypress.Promise((resolve) => { + cy.readFile(url, encoding, options).then(resolve); + }); + } + + return cache[url]; + } + + function getImageDataUri(url) { + return readFile(url, 'base64') + .then((image) => { + return `data:image/png;base64,${image}`; + }); + } + + function formatPreview(title, content) { + return `
${title}
+
${content}
+
` + } + + function wrapImageStyle(imageStyle, image = '') { + if (imageStyle) { + return `
${image||''}
`; + } + return image; + } + + function wrapImage(type, title, dataUri = '', imageStyle = '') { + const imageTitle = type === 'actual' ? 'Actual result' : 'Expected result'; + const htmlTitle = `

${imageTitle}

`; + + return `
${htmlTitle}` + + wrapImageStyle( + imageStyle, + dataUri ? `${title}` : '' + ) + + '
'; + } + + function createImageDiff(title, expectedImage, diffImage, imageStyle) { + // Overlay expected and diff image on top of each other + const diffStyle = `${imageStyle} background: ` + + `url(${expectedImage}) top left no-repeat, ` + + `url(${diffImage}) top left no-repeat; ` + + `background-size: 100% auto, 100% auto;`; + + return wrapImage('diff', title, '', diffStyle); + } + + function formatImageResult(data) { + const title = data.snapshotTitle; if (data.passed) { - // @TODO: make this nicer - return `
${data.snapshotTitle}
-
${htmlEncode(data.expected)}
-
`; - } else if (data.diff) { - return Diff2Html.getPrettyHtml( + return getImageDataUri(data.expected.path) + .then((dataUri) => + formatPreview(title, wrapImage('single', title, dataUri)) + ); + } + + const imageHeight = data.diff ? data.diff.height : Math.max(data.actual.height, data.expected.height); + const imageWidth = data.diff ? data.diff.width : Math.max(data.actual.width, data.expected.width); + const imageRatio = Math.round(imageHeight / imageWidth * 10000) / 100; + const imageStyle = `padding-top: ${imageRatio}%;`; + + const promises = [ + getImageDataUri(data.expected.path), + getImageDataUri(data.actual.path), + ]; + if (data.diff) { + promises.push(getImageDataUri(data.diff.path)); + } + + return Cypress.Promise.all(promises) + .then(([expectedImage, actualImage, diffImage = '']) => { + return formatPreview(title, + wrapImage('expected', title, expectedImage, imageStyle) + + wrapImage('actual', title, actualImage, imageStyle) + + (diffImage ? createImageDiff(title, expectedImage, diffImage, imageStyle) : '') + ); + }); + } + + function formatResult(data) { + const title = data.snapshotTitle; + if (data.isImage) { + return formatImageResult(data); + } else if (data.diff && !data.passed) { + return Cypress.Promise.resolve(Diff2Html.getPrettyHtml( data.diff, { inputFormat: 'diff', outputFormat: 'side-by-side', synchronisedScroll: true } - ); + )); } + + return Cypress.Promise.resolve(formatPreview(title, htmlEncode(data.expected))); } Cypress.$(document.body).on('click', 'a[href^="#cypress-plugin-snapshot-"]', function (e) { e.preventDefault(); - var data = JSON.parse(Base64.decode(e.currentTarget.getAttribute('href').replace('#cypress-plugin-snapshot-', ''))); + const data = JSON.parse(Base64.decode(e.currentTarget.getAttribute('href').replace('#cypress-plugin-snapshot-', ''))); if (data) { - var diffHtml = formatResult(data); + formatResult(data).then((diffHtml) => { + const updateButton = window.saveSnapshot && !data.passed ? + '' : + ''; - var updateButton = window.saveSnapshot && !data.passed ? - '' : - ''; + Cypress.$(`
` + + '
' + updateButton + + '' + + '
' + + '
' + diffHtml + '
' + + '
').appendTo(top.document.body); - Cypress.$('
' + - '
' + updateButton + - '' + - '
' + - '
' + diffHtml + '
' + - '
').appendTo(document.body); - - Cypress.$('.snapshot-btn-close', parent.window.document).on('click', function () { - Cypress.$('.snapshot-diff', parent.window.document).remove(); - }); + Cypress.$('.snapshot-btn-close', top.document).on('click', closeSnapshotModal); - Cypress.$('.snapshot-btn-approve', parent.window.document).on('click', function () { - window.saveSnapshot(data); - Cypress.$('.snapshot-diff', parent.window.document).remove(); + Cypress.$('.snapshot-btn-approve', top.document).on('click', function() { + window.saveSnapshot(data); + closeSnapshotModal(); + }); }); } diff --git a/assets/styles.css b/assets/styles.css index 9f777699..40c401cc 100644 --- a/assets/styles.css +++ b/assets/styles.css @@ -1,3 +1,4 @@ +.command-name-toMatchImageSnapshot .command-method span, .command-name-toMatchSnapshot .command-method span { border-radius: 2px; padding: 0 3px; @@ -7,21 +8,25 @@ line-height: 16px; } +.command-name-toMatchImageSnapshot.command-state-passed .command-method span, .command-name-toMatchSnapshot.command-state-passed .command-method span { background-color: #08c18d; color: white; } +.command-name-toMatchImageSnapshot.command-state-failed .command-method span, .command-name-toMatchSnapshot.command-state-failed .command-method span { background-color: #e94f5f; color: white; } +.command-name-toMatchImageSnapshot.command-state-pending .command-method span, .command-name-toMatchSnapshot.command-state-pending .command-method span { background-color: #428BCA; color: white; } +.command-name-toMatchImageSnapshot.command-state-failed+.command-name-then.command-state-failed, .command-name-toMatchSnapshot.command-state-failed+.command-name-then.command-state-failed { display: none; } @@ -88,6 +93,11 @@ a[href^="#cypress-plugin-snapshot-"]:before { box-shadow: 0 1px 3px #ccc; } +.snapshot-diff--image { + width: 90vw; + height: 90vh; +} + .snapshot-diff .d2h-wrapper { margin: 1em; } @@ -132,3 +142,51 @@ a[href^="#cypress-plugin-snapshot-"]:before { .snapshot-diff header button.snapshot-btn-close { float: right; } + +.snapshot-image { + display: inline-block; + width: 50%; +} + +.snapshot-image--single { + width: 100%; +} + +.snapshot-image__wrapper { + width: 100%; + height: 0; + overflow: hidden; + position: relative; + background-size: 100% auto; + background-repeat: no-repeat; +} + +.snapshot-image__image { + position: absolute; + top: 0; + height: auto; + width: 100%; +} + +.snapshot-image--diff { + position: absolute; + left: 0; + top: 0; + opacity: 0; + transition: all ease-in-out 100ms; +} +.snapshot-image--diff:active, +.snapshot-image--diff:hover { + opacity: 1; +} +.snapshot-image--diff .snapshot-image__wrapper { + background-blend-mode: difference; +} + +.snapshot-image__title { + color: #555; + font-family: "Source Sans Pro", "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: bold; + margin-bottom: .75em; + text-align: center; +} diff --git a/commands.js b/commands.js index 08c9ea38..6b06e292 100644 --- a/commands.js +++ b/commands.js @@ -1,95 +1,58 @@ /* globals Cypress, before, after, cy */ /* eslint-env browser */ -const { merge, cloneDeep } = require('lodash'); -const { Base64 } = require('js-base64'); -const { MATCH } = require('./tasks/task-names'); -const { initUi } = require('./ui'); - -const { - getTestTitle, - getSnapshotTitle, -} = require('./utils/snapshots'); const { - cleanUpSnapshots, - fixConfig, - getConfig, - getTestForTask, - getSubject, - isHtml, -} = require('./utils/commands'); -const { - TYPE_JSON, - TYPE_HTML -} = require('./constants'); - -const URL_PREFIX = '#cypress-plugin-snapshot-'; -const COMMAND_NAME = 'toMatchSnapshot'; -const NO_LOG = { log: false }; - -function commandToMatchSnapshot(testSubject, options) { - const test = getTestForTask(); - const testTitle = getTestTitle(test); - const testFile = Cypress.spec.absolute; - const snapshotTitle = getSnapshotTitle(test); - - const subject = getSubject(testSubject); - const dataType = isHtml(testSubject) ? TYPE_HTML : TYPE_JSON; - - const toMatchSnapshot = (result) => { - const args = Base64.encode(JSON.stringify(result)); - const passedMessage = result.expected ? 'Snapshots match' : 'Snapshot created, autopassed'; - const message = result.passed ? - `[${passedMessage}](${URL_PREFIX}${args})` - : `[compare snapshot](${URL_PREFIX}${args})`; - - const log = Cypress.log({ - $el: subject, - name: COMMAND_NAME, - displayName: 'snapshot', - message, - consoleProps: () => result, - }); - - if (!result.passed) { - log.set('state', 'failed'); - throw new Error(`Snapshots do not match:\n${result.diff}`); + merge, + cloneDeep +} = require('lodash'); +const { initUi } = require('./src/ui'); +const commands = require('./src/commands/index'); +const cleanUpSnapshots = require('./src/utils/commands/cleanupSnapshots'); +const getConfig = require('./src/utils/commands/getConfig'); +const { NO_LOG } = require('./src/constants'); + +function addCommand(commandName, method) { + Cypress.Commands.add(commandName, { + prevSubject: true + }, (commandSubject, taskOptions) => { + if (!commandSubject) { + return commandSubject; } - return subject; - }; - - return cy.task(MATCH, { - dataType, - options, - snapshotTitle, - subject, - testFile, - testTitle, - }, NO_LOG).then(toMatchSnapshot); + const options = merge({}, cloneDeep(getConfig()), taskOptions); + return cy.wrap(commandSubject, NO_LOG) + .then((subject) => method(subject, options)); + }); } function initCommands() { - fixConfig(); + // Initialize config by getting it once + getConfig(); // Inject CSS & JavaScript before(() => { initUi(); }); + function closeSnapshotModal() { + try { + if (window.top.closeSnapshotModal) { + window.top.closeSnapshotModal(); + } + } catch(ex) { + window.console.error(ex); + } + } + + // Close snapshot modal before all test restart + Cypress.on('window:before:unload', closeSnapshotModal); + // Clean up unused snapshots after(() => { cleanUpSnapshots(); }); - Cypress.Commands.add(COMMAND_NAME, { prevSubject: 'optional' }, (commandSubject, taskOptions) => { - if (!commandSubject) { - return commandSubject; - } - - const options = merge({}, cloneDeep(getConfig()), taskOptions); - return cy.wrap(commandSubject, NO_LOG) - .then((subject) => commandToMatchSnapshot(subject, options)); - }); + // Add commands + Object.keys(commands).forEach(key => addCommand(key, commands[key])); } module.exports = { diff --git a/cypress/cypress.json b/cypress/cypress.json index abe7a1e9..6d8755a7 100644 --- a/cypress/cypress.json +++ b/cypress/cypress.json @@ -1,7 +1,10 @@ { "baseUrl": "http://localhost:8080", - "video": false, "ignoreTestFiles": [ - "**/__snapshots__/*" - ] + "**/__snapshots__/*", + "**/__image_snapshots__/*" + ], + "video": false, + "viewportWidth": 660, + "viewportHeight": 1000 } diff --git a/cypress/cypress/fixtures/example.json b/cypress/cypress/fixtures/example.json new file mode 100644 index 00000000..da18d935 --- /dev/null +++ b/cypress/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} \ No newline at end of file diff --git a/cypress/cypress/integration/__image_snapshots__/toMatchImageSnapshot toMatchImageSnapshot - element #0.png b/cypress/cypress/integration/__image_snapshots__/toMatchImageSnapshot toMatchImageSnapshot - element #0.png new file mode 100644 index 0000000000000000000000000000000000000000..f5738658c25ccaf34d8d14a95787575dcd8be38a GIT binary patch literal 124173 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 N1fH&bF6*2UngDH>11SIi literal 0 HcmV?d00001 diff --git a/cypress/cypress/integration/__image_snapshots__/toMatchImageSnapshot toMatchImageSnapshot - whole page #0.png b/cypress/cypress/integration/__image_snapshots__/toMatchImageSnapshot toMatchImageSnapshot - whole page #0.png new file mode 100644 index 0000000000000000000000000000000000000000..59340327132150e524b7caa0066bdf21df93af9c GIT binary patch literal 126357 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 IIVCg!0Bf8GJpcdz literal 0 HcmV?d00001 diff --git a/cypress/cypress/integration/__snapshots__/Test.spec.js.snap b/cypress/cypress/integration/__snapshots__/Test.spec.js.snap deleted file mode 100644 index 2b130622..00000000 --- a/cypress/cypress/integration/__snapshots__/Test.spec.js.snap +++ /dev/null @@ -1,19 +0,0 @@ -exports[`Test > toMatchSnapshot - json #0`] = -{ - "number": 1234, - "object": { - "foo": "bar", - "nestedObject": { - "bar": "foo" - } - }, - "string": "string" -}; - -exports[`Test > toMatchSnapshot - html #0`] = ` -
-

Title

-

Paragraph 1

-

Paragraph 2

-
-`; diff --git a/cypress/cypress/integration/__snapshots__/toMatchSnapshot.spec.js.snap b/cypress/cypress/integration/__snapshots__/toMatchSnapshot.spec.js.snap new file mode 100644 index 00000000..2c3ed34c --- /dev/null +++ b/cypress/cypress/integration/__snapshots__/toMatchSnapshot.spec.js.snap @@ -0,0 +1,42 @@ +exports[`toMatchSnapshot > toMatchSnapshot - json #0`] = +{ + "number": 1234, + "object": { + "foo": "bar", + "nestedObject": { + "bar": "foo" + } + }, + "string": "string" +}; + +exports[`toMatchSnapshot > toMatchSnapshot - html #0`] = ` +
+`; + +exports[`Test > toMatchSnapshot - json #0`] = +{ + "number": 1234, + "object": { + "foo": "bar", + "nestedObject": { + "bar": "foo" + } + }, + "string": "string" +}; + +exports[`Test > toMatchSnapshot - html #0`] = ` + +
+

Title

+

Paragraph 1

+

Paragraph 2

+
+ +`; diff --git a/cypress/cypress/integration/toMatchImageSnapshot.spec.js b/cypress/cypress/integration/toMatchImageSnapshot.spec.js new file mode 100644 index 00000000..1826db52 --- /dev/null +++ b/cypress/cypress/integration/toMatchImageSnapshot.spec.js @@ -0,0 +1,22 @@ + describe('toMatchImageSnapshot', () => { + + it('toMatchImageSnapshot - element', () => { + cy.visit('/static/stub.html') + .then(() => { + cy.wait(1000); // seems a bug with webfonts that requires this + cy.get('[data-test=test]').toMatchImageSnapshot({ + threshold: 0.1 + }); + }); + }); + + it('toMatchImageSnapshot - whole page', () => { + cy.visit('/static/stub.html') + .then(() => { + cy.wait(1000); // seems a bug with webfonts that requires this + cy.document().toMatchImageSnapshot({ + threshold: 0.1 + }); + }); + }); + }); diff --git a/cypress/cypress/integration/Test.spec.js b/cypress/cypress/integration/toMatchSnapshot.spec.js similarity index 89% rename from cypress/cypress/integration/Test.spec.js rename to cypress/cypress/integration/toMatchSnapshot.spec.js index 758c5374..403362ad 100644 --- a/cypress/cypress/integration/Test.spec.js +++ b/cypress/cypress/integration/toMatchSnapshot.spec.js @@ -1,4 +1,4 @@ -describe('Test', () => { +describe('toMatchSnapshot', () => { it('toMatchSnapshot - json', () => { cy.request('/static/stub.json') .its('body') diff --git a/cypress/cypress/support/index.js b/cypress/cypress/support/index.js index 434a8f2e..6a010b05 100644 --- a/cypress/cypress/support/index.js +++ b/cypress/cypress/support/index.js @@ -1 +1,6 @@ import 'cypress-plugin-snapshots/commands'; + +Cypress.Screenshot.defaults({ + screenshotOnRunFailure: false, + scale: false, +}); diff --git a/cypress/package-lock.json b/cypress/package-lock.json index c7fe0ff1..f87cb4c4 100644 --- a/cypress/package-lock.json +++ b/cypress/package-lock.json @@ -481,11 +481,20 @@ "version": "file:..", "requires": { "bufferutil": "^4.0.0", + "chalk": "^2.4.1", "diff2html": "^2.4.0", "fs-extra": "^7.0.1", + "get-stdin": "^6.0.0", + "image-size": "^0.6.3", + "jimp": "^0.5.6", "js-base64": "^2.4.9", "lodash": "^4.17.11", + "mkdirp": "^0.5.1", + "pixelmatch": "^4.0.2", + "pngjs": "^3.3.3", "prettier": "^1.15.2", + "rimraf": "^2.6.2", + "sanitize-filename": "^1.6.1", "socket.io": "^2.1.1", "source-map-support": "^0.5.9", "unidiff": "0.0.4", @@ -507,6 +516,272 @@ "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "bundled": true + } + } + }, + "@babel/polyfill": { + "version": "7.0.0", + "bundled": true, + "requires": { + "core-js": "^2.5.7", + "regenerator-runtime": "^0.11.1" + } + }, + "@jimp/bmp": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "bmp-js": "^0.1.0", + "core-js": "^2.5.7" + } + }, + "@jimp/core": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^2.5.7", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/custom": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/core": "^0.5.4", + "core-js": "^2.5.7" + } + }, + "@jimp/gif": { + "version": "0.5.0", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "jpeg-js": "^0.3.4" + } + }, + "@jimp/plugin-blit": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-blur": { + "version": "0.5.0", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-color": { + "version": "0.5.5", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-cover": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-crop": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-displace": { + "version": "0.5.0", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-dither": { + "version": "0.5.0", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-flip": { + "version": "0.5.0", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.5.0", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-invert": { + "version": "0.5.0", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-mask": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-normalize": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-print": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-rotate": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-scale": { + "version": "0.5.0", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugins": { + "version": "0.5.5", + "bundled": true, + "requires": { + "@jimp/plugin-blit": "^0.5.4", + "@jimp/plugin-blur": "^0.5.0", + "@jimp/plugin-color": "^0.5.5", + "@jimp/plugin-contain": "^0.5.4", + "@jimp/plugin-cover": "^0.5.4", + "@jimp/plugin-crop": "^0.5.4", + "@jimp/plugin-displace": "^0.5.0", + "@jimp/plugin-dither": "^0.5.0", + "@jimp/plugin-flip": "^0.5.0", + "@jimp/plugin-gaussian": "^0.5.0", + "@jimp/plugin-invert": "^0.5.0", + "@jimp/plugin-mask": "^0.5.4", + "@jimp/plugin-normalize": "^0.5.4", + "@jimp/plugin-print": "^0.5.4", + "@jimp/plugin-resize": "^0.5.4", + "@jimp/plugin-rotate": "^0.5.4", + "@jimp/plugin-scale": "^0.5.0", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.5.4", + "bundled": true, + "requires": { + "core-js": "^2.5.7", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.5.4", + "bundled": true, + "requires": { + "@jimp/bmp": "^0.5.4", + "@jimp/gif": "^0.5.0", + "@jimp/jpeg": "^0.5.4", + "@jimp/png": "^0.5.4", + "@jimp/tiff": "^0.5.4", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.5.0", + "bundled": true, + "requires": { + "core-js": "^2.5.7" } }, "abab": { @@ -526,7 +801,7 @@ } }, "acorn": { - "version": "6.0.4", + "version": "5.7.3", "bundled": true }, "acorn-globals": { @@ -535,6 +810,12 @@ "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.0.2", + "bundled": true + } } }, "acorn-jsx": { @@ -542,7 +823,7 @@ "bundled": true }, "acorn-walk": { - "version": "6.1.1", + "version": "6.1.0", "bundled": true }, "after": { @@ -550,13 +831,13 @@ "bundled": true }, "ajv": { - "version": "6.5.5", + "version": "5.5.2", "bundled": true, "requires": { - "fast-deep-equal": "^2.0.1", + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -568,7 +849,7 @@ "bundled": true }, "ansi-regex": { - "version": "3.0.0", + "version": "2.1.1", "bundled": true }, "ansi-styles": { @@ -578,6 +859,10 @@ "color-convert": "^1.9.0" } }, + "any-base": { + "version": "1.1.0", + "bundled": true + }, "anymatch": { "version": "2.0.0", "bundled": true, @@ -824,6 +1109,18 @@ "default-require-extensions": "^1.0.0" } }, + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "bundled": true, @@ -850,6 +1147,17 @@ "version": "1.0.0", "bundled": true }, + "array-union": { + "version": "1.0.2", + "bundled": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "bundled": true + }, "array-unique": { "version": "0.2.1", "bundled": true @@ -917,10 +1225,6 @@ "js-tokens": "^3.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, "ansi-styles": { "version": "2.2.1", "bundled": true @@ -936,10 +1240,6 @@ "supports-color": "^2.0.0" } }, - "js-tokens": { - "version": "3.0.2", - "bundled": true - }, "strip-ansi": { "version": "3.0.1", "bundled": true, @@ -1042,15 +1342,6 @@ "find-up": "^2.1.0", "istanbul-lib-instrument": "^1.10.1", "test-exclude": "^4.2.1" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - } } }, "babel-plugin-jest-hoist": { @@ -1142,10 +1433,6 @@ "requires": { "ms": "2.0.0" } - }, - "globals": { - "version": "9.18.0", - "bundled": true } } }, @@ -1228,6 +1515,10 @@ "version": "0.1.5", "bundled": true }, + "base64-js": { + "version": "1.3.0", + "bundled": true + }, "base64id": { "version": "1.0.0", "bundled": true @@ -1247,7 +1538,18 @@ } }, "blob": { - "version": "0.0.5", + "version": "0.0.4", + "bundled": true + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bmp-js": { + "version": "0.1.0", "bundled": true }, "brace-expansion": { @@ -1276,12 +1578,6 @@ "bundled": true, "requires": { "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "bundled": true - } } }, "bser": { @@ -1291,6 +1587,18 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "5.2.1", + "bundled": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-equal": { + "version": "0.0.1", + "bundled": true + }, "buffer-from": { "version": "1.1.1", "bundled": true @@ -1332,6 +1640,12 @@ "bundled": true, "requires": { "callsites": "^0.2.0" + }, + "dependencies": { + "callsites": { + "version": "0.2.0", + "bundled": true + } } }, "callsite": { @@ -1339,7 +1653,7 @@ "bundled": true }, "callsites": { - "version": "0.2.0", + "version": "2.0.0", "bundled": true }, "camelcase": { @@ -1374,10 +1688,6 @@ "version": "1.6.0", "bundled": true }, - "circular-json": { - "version": "0.3.3", - "bundled": true - }, "class-utils": { "version": "0.3.6", "bundled": true, @@ -1408,6 +1718,10 @@ "restore-cursor": "^2.0.0" } }, + "cli-spinners": { + "version": "1.3.1", + "bundled": true + }, "cli-width": { "version": "2.2.0", "bundled": true @@ -1448,6 +1762,10 @@ "version": "1.1.3", "bundled": true }, + "colors": { + "version": "1.3.2", + "bundled": true + }, "combined-stream": { "version": "1.0.7", "bundled": true, @@ -1486,6 +1804,10 @@ "typedarray": "^0.0.6" } }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, "contains-path": { "version": "0.1.0", "bundled": true @@ -1514,12 +1836,10 @@ "bundled": true }, "cross-spawn": { - "version": "6.0.5", + "version": "5.1.0", "bundled": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", + "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -1543,11 +1863,11 @@ } }, "data-urls": { - "version": "1.1.0", + "version": "1.0.1", "bundled": true, "requires": { "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", + "whatwg-mimetype": "^2.1.0", "whatwg-url": "^7.0.0" }, "dependencies": { @@ -1586,15 +1906,6 @@ "bundled": true, "requires": { "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } } }, "define-properties": { @@ -1645,10 +1956,32 @@ } } }, + "del": { + "version": "3.0.0", + "bundled": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "bundled": true + } + } + }, "delayed-stream": { "version": "1.0.0", "bundled": true }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, "detect-indent": { "version": "4.0.0", "bundled": true, @@ -1656,22 +1989,32 @@ "repeating": "^2.0.0" } }, + "detect-libc": { + "version": "1.0.3", + "bundled": true + }, "detect-newline": { "version": "2.1.0", "bundled": true }, "diff": { - "version": "3.5.0", + "version": "2.2.3", "bundled": true }, "diff2html": { - "version": "2.5.0", + "version": "2.4.0", "bundled": true, "requires": { "diff": "^3.5.0", "hogan.js": "^3.0.2", - "lodash": "^4.17.11", - "whatwg-fetch": "^3.0.0" + "lodash": "^4.17.10", + "whatwg-fetch": "^2.0.4" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "bundled": true + } } }, "doctrine": { @@ -1681,6 +2024,10 @@ "esutils": "^2.0.2" } }, + "dom-walk": { + "version": "0.1.1", + "bundled": true + }, "domexception": { "version": "1.0.1", "bundled": true, @@ -1696,16 +2043,141 @@ "safer-buffer": "^2.1.0" } }, - "engine.io": { - "version": "3.2.1", + "electron-rebuild": { + "version": "1.8.2", "bundled": true, "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", + "colors": "^1.2.0", + "debug": "^2.6.3", + "detect-libc": "^1.0.3", + "fs-extra": "^3.0.1", + "node-abi": "^2.0.0", + "node-gyp": "^3.6.0", + "ora": "^1.2.0", + "rimraf": "^2.6.1", + "spawn-rx": "^2.0.10", + "yargs": "^7.0.2" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "bundled": true + }, + "cliui": { + "version": "3.2.0", + "bundled": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "fs-extra": { + "version": "3.0.1", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "jsonfile": { + "version": "3.0.1", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "os-locale": { + "version": "1.4.0", + "bundled": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "bundled": true + }, + "yargs": { + "version": "7.1.0", + "bundled": true, + "requires": { + "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-parser": { + "version": "5.0.0", + "bundled": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, + "engine.io": { + "version": "3.2.0", + "bundled": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", "cookie": "0.3.1", "debug": "~3.1.0", "engine.io-parser": "~2.1.0", "ws": "~3.3.1" + }, + "dependencies": { + "ws": { + "version": "3.3.3", + "bundled": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } } }, "engine.io-client": { @@ -1723,16 +2195,27 @@ "ws": "~3.3.1", "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" + }, + "dependencies": { + "ws": { + "version": "3.3.3", + "bundled": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } } }, "engine.io-parser": { - "version": "2.1.3", + "version": "2.1.2", "bundled": true, "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", + "blob": "0.0.4", "has-binary2": "~1.0.2" } }, @@ -1828,6 +2311,27 @@ "text-table": "^0.2.0" }, "dependencies": { + "ajv": { + "version": "6.5.5", + "bundled": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "debug": { "version": "4.1.0", "bundled": true, @@ -1835,6 +2339,18 @@ "ms": "^2.1.1" } }, + "fast-deep-equal": { + "version": "2.0.1", + "bundled": true + }, + "globals": { + "version": "11.8.0", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "bundled": true + }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -1858,7 +2374,7 @@ } }, "eslint-config-prettier": { - "version": "3.3.0", + "version": "3.1.0", "bundled": true, "requires": { "get-stdin": "^6.0.0" @@ -1878,6 +2394,13 @@ "requires": { "ms": "2.0.0" } + }, + "resolve": { + "version": "1.8.1", + "bundled": true, + "requires": { + "path-parse": "^1.0.5" + } } } }, @@ -1895,6 +2418,28 @@ "requires": { "ms": "2.0.0" } + }, + "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "bundled": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "bundled": true, + "requires": { + "find-up": "^1.0.0" + } } } }, @@ -1903,6 +2448,12 @@ "bundled": true, "requires": { "globals": "^11.0.1" + }, + "dependencies": { + "globals": { + "version": "11.8.0", + "bundled": true + } } }, "eslint-plugin-import": { @@ -1939,6 +2490,51 @@ "isarray": { "version": "1.0.0", "bundled": true + }, + "load-json-file": { + "version": "2.0.0", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "bundled": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "bundled": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "bundled": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "resolve": { + "version": "1.8.1", + "bundled": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true } } }, @@ -1973,6 +2569,12 @@ "acorn": "^6.0.2", "acorn-jsx": "^5.0.0", "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.0.4", + "bundled": true + } } }, "esprima": { @@ -2019,19 +2621,12 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } } }, + "exif-parser": { + "version": "0.1.12", + "bundled": true + }, "exit": { "version": "0.1.2", "bundled": true @@ -2104,7 +2699,7 @@ "bundled": true }, "fast-deep-equal": { - "version": "2.0.1", + "version": "1.1.0", "bundled": true }, "fast-json-stable-stringify": { @@ -2137,6 +2732,10 @@ "object-assign": "^4.0.1" } }, + "file-type": { + "version": "9.0.0", + "bundled": true + }, "filename-regex": { "version": "2.0.1", "bundled": true @@ -2161,23 +2760,33 @@ } }, "find-up": { - "version": "1.1.2", + "version": "2.1.0", "bundled": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "locate-path": "^2.0.0" } }, "flat-cache": { - "version": "1.3.4", + "version": "1.3.1", "bundled": true, "requires": { - "circular-json": "^0.3.1", + "del": "^3.0.0", + "flatted": "^2.0.0", "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", "write": "^0.2.1" } }, + "flatted": { + "version": "2.0.0", + "bundled": true + }, + "for-each": { + "version": "0.3.3", + "bundled": true, + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "bundled": true @@ -2194,12 +2803,21 @@ "bundled": true }, "form-data": { - "version": "2.3.3", + "version": "2.3.2", "bundled": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "1.0.6", "mime-types": "^2.1.12" + }, + "dependencies": { + "combined-stream": { + "version": "1.0.6", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + } } }, "fragment-cache": { @@ -2660,37 +3278,86 @@ "yallist": "^3.0.2" } }, - "util-deprecate": { + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true + } + } + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { "version": "1.0.2", "bundled": true, - "optional": true + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } }, - "wide-align": { - "version": "1.1.2", + "strip-ansi": { + "version": "3.0.1", "bundled": true, - "optional": true, "requires": { - "string-width": "^1.0.2" + "ansi-regex": "^2.0.0" } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true } } }, - "function-bind": { - "version": "1.1.1", - "bundled": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "bundled": true - }, "get-caller-file": { "version": "1.0.3", "bundled": true @@ -2741,12 +3408,31 @@ "is-glob": "^2.0.0" } }, + "global": { + "version": "4.3.2", + "bundled": true, + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, "globals": { - "version": "11.9.0", + "version": "9.18.0", "bundled": true }, + "globby": { + "version": "6.1.0", + "bundled": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "graceful-fs": { - "version": "4.1.15", + "version": "4.1.11", "bundled": true }, "growly": { @@ -2768,10 +3454,10 @@ "bundled": true }, "har-validator": { - "version": "5.1.3", + "version": "5.1.0", "bundled": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^5.3.0", "har-schema": "^2.0.0" } }, @@ -2787,12 +3473,6 @@ "bundled": true, "requires": { "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - } } }, "has-binary2": { @@ -2814,6 +3494,10 @@ "version": "1.0.0", "bundled": true }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, "has-value": { "version": "1.0.0", "bundled": true, @@ -2868,6 +3552,12 @@ "requires": { "mkdirp": "0.3.0", "nopt": "1.0.10" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.0", + "bundled": true + } } }, "home-or-tmp": { @@ -2905,32 +3595,24 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.1.12", + "bundled": true + }, "ignore": { "version": "4.0.6", "bundled": true }, + "image-size": { + "version": "0.6.3", + "bundled": true + }, "import-local": { "version": "1.0.0", "bundled": true, "requires": { "pkg-dir": "^2.0.0", "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "bundled": true, - "requires": { - "find-up": "^2.1.0" - } - } } }, "imurmurhash": { @@ -3072,6 +3754,10 @@ "version": "2.0.0", "bundled": true }, + "is-function": { + "version": "1.0.1", + "bundled": true + }, "is-generator-fn": { "version": "1.0.0", "bundled": true @@ -3090,6 +3776,24 @@ "kind-of": "^3.0.2" } }, + "is-path-cwd": { + "version": "1.0.0", + "bundled": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "bundled": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "bundled": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-object": { "version": "2.0.4", "bundled": true, @@ -3372,6 +4076,12 @@ "diff": "^3.2.0", "jest-get-type": "^22.1.0", "pretty-format": "^23.6.0" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "bundled": true + } } }, "jest-docblock": { @@ -3538,6 +4248,12 @@ "strip-bom": "3.0.0", "write-file-atomic": "^2.1.0", "yargs": "^11.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "bundled": true + } } }, "jest-serializer": { @@ -3583,10 +4299,6 @@ "source-map": "^0.6.0" }, "dependencies": { - "callsites": { - "version": "2.0.0", - "bundled": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -3622,12 +4334,27 @@ "merge-stream": "^1.0.1" } }, + "jimp": { + "version": "0.5.6", + "bundled": true, + "requires": { + "@babel/polyfill": "^7.0.0", + "@jimp/custom": "^0.5.4", + "@jimp/plugins": "^0.5.5", + "@jimp/types": "^0.5.4", + "core-js": "^2.5.7" + } + }, + "jpeg-js": { + "version": "0.3.4", + "bundled": true + }, "js-base64": { "version": "2.4.9", "bundled": true }, "js-tokens": { - "version": "4.0.0", + "version": "3.0.2", "bundled": true }, "js-yaml": { @@ -3672,19 +4399,6 @@ "whatwg-url": "^6.4.1", "ws": "^5.2.0", "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.3", - "bundled": true - }, - "ws": { - "version": "5.2.2", - "bundled": true, - "requires": { - "async-limiter": "~1.0.0" - } - } } }, "jsesc": { @@ -3696,7 +4410,7 @@ "bundled": true }, "json-schema-traverse": { - "version": "0.4.1", + "version": "0.3.1", "bundled": true }, "json-stable-stringify-without-jsonify": { @@ -3762,14 +4476,29 @@ "type-check": "~0.3.2" } }, + "load-bmfont": { + "version": "1.4.0", + "bundled": true, + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, "load-json-file": { - "version": "2.0.0", + "version": "1.1.0", "bundled": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "locate-path": { @@ -3778,22 +4507,27 @@ "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "bundled": true - } } }, "lodash": { "version": "4.17.11", "bundled": true }, + "lodash.assign": { + "version": "4.2.0", + "bundled": true + }, "lodash.sortby": { "version": "4.7.0", "bundled": true }, + "log-symbols": { + "version": "2.2.0", + "bundled": true, + "requires": { + "chalk": "^2.0.1" + } + }, "loose-envify": { "version": "1.4.0", "bundled": true, @@ -3868,21 +4602,32 @@ "regex-cache": "^0.4.2" } }, + "mime": { + "version": "1.6.0", + "bundled": true + }, "mime-db": { - "version": "1.37.0", + "version": "1.36.0", "bundled": true }, "mime-types": { - "version": "2.1.21", + "version": "2.1.20", "bundled": true, "requires": { - "mime-db": "~1.37.0" + "mime-db": "~1.36.0" } }, "mimic-fn": { "version": "1.2.0", "bundled": true }, + "min-document": { + "version": "2.19.0", + "bundled": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, "minimatch": { "version": "3.0.4", "bundled": true, @@ -3912,8 +4657,11 @@ } }, "mkdirp": { - "version": "0.3.0", - "bundled": true + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", @@ -3971,6 +4719,53 @@ "version": "1.0.5", "bundled": true }, + "node-abi": { + "version": "2.5.0", + "bundled": true, + "requires": { + "semver": "^5.4.1" + } + }, + "node-gyp": { + "version": "3.8.0", + "bundled": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "bundled": true, + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "bundled": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + } + } + }, "node-gyp-build": { "version": "3.4.0", "bundled": true @@ -3980,11 +4775,11 @@ "bundled": true }, "node-notifier": { - "version": "5.3.0", + "version": "5.2.1", "bundled": true, "requires": { "growly": "^1.3.0", - "semver": "^5.5.0", + "semver": "^5.4.1", "shellwords": "^0.1.1", "which": "^1.3.0" } @@ -4020,6 +4815,16 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "bundled": true @@ -4124,6 +4929,10 @@ } } }, + "omggif": { + "version": "1.0.9", + "bundled": true + }, "once": { "version": "1.4.0", "bundled": true, @@ -4144,12 +4953,6 @@ "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "bundled": true - } } }, "optionator": { @@ -4162,6 +4965,22 @@ "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "bundled": true + } + } + }, + "ora": { + "version": "1.4.0", + "bundled": true, + "requires": { + "chalk": "^2.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.1", + "log-symbols": "^2.1.0" } }, "os-homedir": { @@ -4181,6 +5000,14 @@ "version": "1.0.2", "bundled": true }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-finally": { "version": "1.0.0", "bundled": true @@ -4199,10 +5026,34 @@ "p-limit": "^1.1.0" } }, + "p-map": { + "version": "1.2.0", + "bundled": true + }, "p-try": { "version": "1.0.0", "bundled": true }, + "pako": { + "version": "1.0.7", + "bundled": true + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "bundled": true + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "bundled": true + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "bundled": true, + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" + } + }, "parse-glob": { "version": "3.0.4", "bundled": true, @@ -4213,6 +5064,14 @@ "is-glob": "^2.0.0" } }, + "parse-headers": { + "version": "2.0.1", + "bundled": true, + "requires": { + "for-each": "^0.3.2", + "trim": "0.0.1" + } + }, "parse-json": { "version": "2.2.0", "bundled": true, @@ -4243,11 +5102,8 @@ "bundled": true }, "path-exists": { - "version": "2.1.0", - "bundled": true, - "requires": { - "pinkie-promise": "^2.0.0" - } + "version": "3.0.0", + "bundled": true }, "path-is-absolute": { "version": "1.0.1", @@ -4266,16 +5122,22 @@ "bundled": true }, "path-type": { - "version": "2.0.0", + "version": "1.1.0", "bundled": true, "requires": { - "pify": "^2.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "performance-now": { "version": "2.1.0", "bundled": true }, + "phin": { + "version": "2.9.3", + "bundled": true + }, "pify": { "version": "2.3.0", "bundled": true @@ -4291,11 +5153,18 @@ "pinkie": "^2.0.0" } }, + "pixelmatch": { + "version": "4.0.2", + "bundled": true, + "requires": { + "pngjs": "^3.0.0" + } + }, "pkg-dir": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "requires": { - "find-up": "^1.0.0" + "find-up": "^2.1.0" } }, "pluralize": { @@ -4306,6 +5175,10 @@ "version": "1.1.0", "bundled": true }, + "pngjs": { + "version": "3.3.3", + "bundled": true + }, "posix-character-classes": { "version": "0.1.1", "bundled": true @@ -4328,12 +5201,22 @@ "requires": { "ansi-regex": "^3.0.0", "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + } } }, "private": { "version": "0.1.8", "bundled": true }, + "process": { + "version": "0.5.2", + "bundled": true + }, "process-nextick-args": { "version": "2.0.0", "bundled": true @@ -4367,7 +5250,7 @@ "bundled": true }, "randomatic": { - "version": "3.1.1", + "version": "3.1.0", "bundled": true, "requires": { "is-number": "^4.0.0", @@ -4386,27 +5269,35 @@ } }, "read-pkg": { - "version": "2.0.0", + "version": "1.1.0", "bundled": true, "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^1.0.0" } }, "read-pkg-up": { - "version": "2.0.0", + "version": "1.0.1", "bundled": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { + "version": "1.1.2", + "bundled": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { "version": "2.1.0", "bundled": true, "requires": { - "locate-path": "^2.0.0" + "pinkie-promise": "^2.0.0" } } } @@ -4535,30 +5426,27 @@ "requires": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "bundled": true + } } }, "resolve": { - "version": "1.8.1", - "bundled": true, - "requires": { - "path-parse": "^1.0.5" - } + "version": "1.1.7", + "bundled": true }, "resolve-cwd": { "version": "2.0.0", "bundled": true, "requires": { "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "bundled": true - } } }, "resolve-from": { - "version": "1.0.1", + "version": "3.0.0", "bundled": true }, "resolve-url": { @@ -4584,10 +5472,6 @@ "eslint": "^4.19.1" }, "dependencies": { - "acorn": { - "version": "5.7.3", - "bundled": true - }, "acorn-jsx": { "version": "3.0.1", "bundled": true, @@ -4601,29 +5485,10 @@ } } }, - "ajv": { - "version": "5.5.2", - "bundled": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, "chardet": { "version": "0.4.2", "bundled": true }, - "cross-spawn": { - "version": "5.1.0", - "bundled": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "eslint": { "version": "4.19.1", "bundled": true, @@ -4693,8 +5558,8 @@ "tmp": "^0.0.33" } }, - "fast-deep-equal": { - "version": "1.1.0", + "globals": { + "version": "11.8.0", "bundled": true }, "ignore": { @@ -4721,10 +5586,6 @@ "through": "^2.3.6" } }, - "json-schema-traverse": { - "version": "0.3.1", - "bundled": true - }, "mkdirp": { "version": "0.5.1", "bundled": true, @@ -5051,6 +5912,13 @@ } } }, + "sanitize-filename": { + "version": "1.6.1", + "bundled": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, "sax": { "version": "1.2.4", "bundled": true @@ -5285,6 +6153,31 @@ "version": "0.4.0", "bundled": true }, + "spawn-rx": { + "version": "2.0.12", + "bundled": true, + "requires": { + "debug": "^2.5.1", + "lodash.assign": "^4.2.0", + "rxjs": "^5.1.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "bundled": true, + "requires": { + "ms": "2.0.0" + } + }, + "rxjs": { + "version": "5.5.12", + "bundled": true, + "requires": { + "symbol-observable": "1.0.1" + } + } + } + }, "spdx-correct": { "version": "3.0.2", "bundled": true, @@ -5306,7 +6199,7 @@ } }, "spdx-license-ids": { - "version": "3.0.2", + "version": "3.0.1", "bundled": true }, "split-string": { @@ -5321,7 +6214,7 @@ "bundled": true }, "sshpk": { - "version": "1.15.2", + "version": "1.15.1", "bundled": true, "requires": { "asn1": "~0.2.3", @@ -5336,7 +6229,7 @@ } }, "stack-utils": { - "version": "1.0.2", + "version": "1.0.1", "bundled": true }, "static-extend": { @@ -5388,11 +6281,20 @@ "bundled": true, "requires": { "ansi-regex": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + } } }, "strip-bom": { - "version": "3.0.0", - "bundled": true + "version": "2.0.0", + "bundled": true, + "requires": { + "is-utf8": "^0.2.0" + } }, "strip-eof": { "version": "1.0.0", @@ -5409,6 +6311,10 @@ "has-flag": "^3.0.0" } }, + "symbol-observable": { + "version": "1.0.1", + "bundled": true + }, "symbol-tree": { "version": "3.2.2", "bundled": true @@ -5421,6 +6327,26 @@ "lodash": "^4.17.10", "slice-ansi": "1.0.0", "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.5.5", + "bundled": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "bundled": true + } } }, "test-exclude": { @@ -5432,52 +6358,6 @@ "object-assign": "^4.1.0", "read-pkg-up": "^1.0.1", "require-main-filename": "^1.0.1" - }, - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "bundled": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "bundled": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "bundled": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "bundled": true, - "requires": { - "is-utf8": "^0.2.0" - } - } } }, "text-table": { @@ -5492,6 +6372,14 @@ "version": "2.3.8", "bundled": true }, + "timm": { + "version": "1.6.1", + "bundled": true + }, + "tinycolor2": { + "version": "1.4.1", + "bundled": true + }, "tmp": { "version": "0.0.33", "bundled": true, @@ -5566,10 +6454,21 @@ "punycode": "^2.1.0" } }, + "trim": { + "version": "0.0.1", + "bundled": true + }, "trim-right": { "version": "1.0.1", "bundled": true }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "bundled": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, "tslib": { "version": "1.9.3", "bundled": true @@ -5614,12 +6513,6 @@ "bundled": true, "requires": { "diff": "^2.2.2" - }, - "dependencies": { - "diff": { - "version": "2.2.3", - "bundled": true - } } }, "union-value": { @@ -5717,6 +6610,17 @@ "node-gyp-build": "~3.4.0" } }, + "utf8-byte-length": { + "version": "1.0.4", + "bundled": true + }, + "utif": { + "version": "2.0.1", + "bundled": true, + "requires": { + "pako": "^1.0.5" + } + }, "util-deprecate": { "version": "1.0.2", "bundled": true @@ -5794,7 +6698,7 @@ } }, "whatwg-fetch": { - "version": "3.0.0", + "version": "2.0.4", "bundled": true }, "whatwg-mimetype": { @@ -5821,8 +6725,15 @@ "version": "2.0.0", "bundled": true }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "wordwrap": { - "version": "1.0.0", + "version": "0.0.3", "bundled": true }, "wrap-ansi": { @@ -5833,10 +6744,6 @@ "strip-ansi": "^3.0.1" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, @@ -5892,22 +6799,50 @@ } }, "ws": { - "version": "3.3.3", + "version": "5.2.2", + "bundled": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xhr": { + "version": "2.5.0", "bundled": true, "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" } }, "xml-name-validator": { "version": "3.0.0", "bundled": true }, + "xml-parse-from-string": { + "version": "1.0.1", + "bundled": true + }, + "xml2js": { + "version": "0.4.19", + "bundled": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "bundled": true + }, "xmlhttprequest-ssl": { "version": "1.5.5", "bundled": true }, + "xtend": { + "version": "4.0.1", + "bundled": true + }, "y18n": { "version": "3.2.1", "bundled": true @@ -5932,15 +6867,6 @@ "which-module": "^2.0.0", "y18n": "^3.2.1", "yargs-parser": "^9.0.2" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "bundled": true, - "requires": { - "locate-path": "^2.0.0" - } - } } }, "yargs-parser": { @@ -6045,18 +6971,17 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "event-stream": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.6.tgz", - "integrity": "sha512-dGXNg4F/FgVzlApjzItL+7naHutA3fDqbV/zAZqDDlXTjiMnQmZKu+prImWKszeBM5UQeGvAl3u1wBiKeDh61g==", + "version": "3.3.4", + "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "requires": { - "duplexer": "^0.1.1", - "flatmap-stream": "^0.1.0", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, "execa": { @@ -6223,11 +7148,6 @@ } } }, - "flatmap-stream": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.1.tgz", - "integrity": "sha512-lAq4tLbm3sidmdCN8G3ExaxH7cUCtP5mgDvrYowsx84dcYkJJ4I28N7gkxA6+YlSXzaGLJYIDEi9WGfXzMiXdw==" - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -6713,9 +7633,9 @@ } }, "map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=" + "version": "0.1.0", + "resolved": "http://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=" }, "media-typer": { "version": "0.3.0", @@ -6955,11 +7875,11 @@ } }, "ps-tree": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", - "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", "requires": { - "event-stream": "~3.3.0" + "event-stream": "=3.3.4" } }, "psl": { @@ -7181,9 +8101,9 @@ "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" }, "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "version": "0.3.3", + "resolved": "http://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "requires": { "through": "2" } @@ -7205,16 +8125,16 @@ } }, "start-server-and-test": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.7.9.tgz", - "integrity": "sha512-ERONVdbR9dMVrEVPWFTpRIO4GbUT+/t5pxoKezYKoMecnU2NYujn2JgtXJ0rt2nuuZ8VlU9Fv5m3y+wVe1xJMQ==", + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.7.11.tgz", + "integrity": "sha512-651SCOfhPT65Xjhecvx/ZMJs8UOd5VItjjmpYH95aM6Hr4P8N8UIcxEgDhY/aaVmthACH7qFTqs4EA/KHykjtw==", "requires": { "bluebird": "3.5.3", "check-more-types": "2.24.0", "debug": "3.2.6", "execa": "0.11.0", "lazy-ass": "1.6.0", - "ps-tree": "1.1.0", + "ps-tree": "1.2.0", "wait-on": "3.2.0" }, "dependencies": { @@ -7266,12 +8186,11 @@ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" }, "stream-combiner": { - "version": "0.2.2", - "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "version": "0.0.4", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "requires": { - "duplexer": "~0.1.1", - "through": "~2.3.4" + "duplexer": "~0.1.1" } }, "stream-to-observable": { @@ -7291,7 +8210,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" @@ -7357,15 +8276,15 @@ }, "dependencies": { "hoek": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.0.2.tgz", - "integrity": "sha512-0RGPLkyxpsMJVj/iOCaJaIWFEch988eUicJJpRiQ+Or1CMvBXcoZPlSx9FhreDWw4hxMYy8xgTEdlsYQDTnxWA==" + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-6.1.2.tgz", + "integrity": "sha512-6qhh/wahGYZHFSFw12tBbJw5fsAhhwrrG/y3Cs0YMTv2WzMnL0oLPnQJjv1QJvEfylRSOFuP+xCu+tdx0tD16Q==" } } }, "tough-cookie": { "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "resolved": "http://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", "requires": { "punycode": "^1.4.1" @@ -7482,9 +8401,9 @@ }, "dependencies": { "ajv": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", - "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.6.1.tgz", + "integrity": "sha512-ZoJjft5B+EJBjUyu9C9Hc0OZyPZSSlOF+plzouTrg6UlA8f+e/n8NIgBFG/9tppJtpPWfthHakK7juJdNDODww==", "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", @@ -7501,7 +8420,6 @@ "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" diff --git a/cypress/package.json b/cypress/package.json index 2d7a469d..859e519b 100644 --- a/cypress/package.json +++ b/cypress/package.json @@ -5,10 +5,10 @@ "scripts": { "ci:test": "start-server-and-test start http://localhost:8080 test", "cy:open": "cypress open", - "cy:run": "cypress run", + "cy:run": "cypress run --browser chrome", "cy:verify": "cypress verify", "start": "node ./test-server/index.js", - "test": "cypress run" + "test": "cypress run --browser chrome" }, "author": "Meinaart van Straalen", "license": "MIT", diff --git a/cypress/test-server/static/css/fonts.css b/cypress/test-server/static/css/fonts.css new file mode 100644 index 00000000..ada35d5f --- /dev/null +++ b/cypress/test-server/static/css/fonts.css @@ -0,0 +1,33 @@ +/* open-sans-regular - latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: local('Open Sans Regular'), local('OpenSans-Regular'), + url('../fonts/open-sans-v15-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v15-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} +/* open-sans-700 - latin */ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 700; + src: local('Open Sans Bold'), local('OpenSans-Bold'), + url('../fonts/open-sans-v15-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ + url('../fonts/open-sans-v15-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ +} + +html { + -webkit-font-smoothing: subpixel-antialiased; + text-rendering: optimizeLegibility; +} + +body { + font-family: 'Open Sans'; + background-color: #fff; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Open Sans'; + font-weight: 700; +} diff --git a/cypress/test-server/static/fonts/LICENSE.txt b/cypress/test-server/static/fonts/LICENSE.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/cypress/test-server/static/fonts/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/cypress/test-server/static/fonts/open-sans-v15-latin-700.woff b/cypress/test-server/static/fonts/open-sans-v15-latin-700.woff new file mode 100644 index 0000000000000000000000000000000000000000..2523e953cb97117d52681ed859c4a4f5fdbb18cc GIT binary patch literal 18476 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 Zs~4RW#}$`=Xb^z_5^(_ROh5?$004?XtWy90 literal 0 HcmV?d00001 diff --git a/cypress/test-server/static/fonts/open-sans-v15-latin-700.woff2 b/cypress/test-server/static/fonts/open-sans-v15-latin-700.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2b04b15bb70adf99751f55d58b3b9fce20e25c05 GIT binary patch literal 14720 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 literal 0 HcmV?d00001 diff --git a/cypress/test-server/static/fonts/open-sans-v15-latin-regular.woff b/cypress/test-server/static/fonts/open-sans-v15-latin-regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..e495e6f010c94b0b095d287f1811a30b4e5303c4 GIT binary patch literal 17704 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 S;!94Je$jcs3Lw8Xr*8q*m{%hJ literal 0 HcmV?d00001 diff --git a/cypress/test-server/static/stub.html b/cypress/test-server/static/stub.html index 11c88f9a..ce20c818 100644 --- a/cypress/test-server/static/stub.html +++ b/cypress/test-server/static/stub.html @@ -1,12 +1,44 @@ Test + + -
-

Title

-

Paragraph 1

-

Paragraph 2

+
+

Lorem Ipsum

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer dignissim, odio sed interdum porta, urna ex ultricies tellus, non fringilla purus nulla nec augue. Vivamus eget iaculis lorem. Proin blandit dictum enim, vitae efficitur arcu euismod a. Sed sodales nisi volutpat dui convallis ullamcorper. Aenean eget semper metus. Curabitur quis imperdiet lorem. Ut vitae mauris augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut rhoncus augue et scelerisque malesuada. Pellentesque bibendum sit amet tellus sit amet pellentesque. Maecenas eu magna dapibus, tristique est nec, ornare libero. Sed consectetur consequat nisi.

+

Curabitur finibus quam

+

Curabitur finibus quam quam, in viverra nulla dapibus sed. Praesent cursus nec erat ut tempor. Donec pharetra rutrum aliquam. Mauris eget gravida quam. Aenean sodales eros a felis lobortis faucibus. Donec sed luctus purus. Nullam nisi ipsum, scelerisque at felis eu, aliquam condimentum ex. Quisque nec orci at justo faucibus maximus. Suspendisse lobortis id mauris in pellentesque. Praesent et dolor ultricies, vestibulum ipsum vel, auctor lacus. Nullam nec dui id arcu consectetur aliquam.

diff --git a/cypress/test-server/static/stub2.html b/cypress/test-server/static/stub2.html new file mode 100644 index 00000000..bb0b1b05 --- /dev/null +++ b/cypress/test-server/static/stub2.html @@ -0,0 +1,69 @@ + + + Test + + + + +
+

Lorem Ipsum

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer dignissim, odio sed interdum porta, urna ex ultricies tellus, non fringilla purus nulla nec augue. Vivamus eget iaculis lorem. Proin blandit dictum enim, vitae efficitur arcu euismod a. Sed sodales nisi volutpat dui convallis ullamcorper. Aenean eget semper metus. Curabitur quis imperdiet lorem. Ut vitae mauris augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut rhoncus augue et scelerisque malesuada. Pellentesque bibendum sit amet tellus sit amet pellentesque. Maecenas eu magna dapibus, tristique est nec, ornare libero. Sed consectetur consequat nisi.

+

Curabitur finibus quam

+

Curabitur finibus quam quam, in viverra nulla dapibus sed. Praesent cursus nec erat ut tempor. Donec pharetra rutrum aliquam. Mauris eget gravida quam. Aenean sodales eros a felis lobortis faucibus. Donec sed luctus purus. Nullam nisi ipsum, scelerisque at felis eu, aliquam condimentum ex. Quisque nec orci at justo faucibus maximus. Suspendisse lobortis id mauris in pellentesque. Praesent et dolor ultricies, vestibulum ipsum vel, auctor lacus. Nullam nec dui id arcu consectetur aliquam.

+
+ + diff --git a/package-lock.json b/package-lock.json index 00c52932..2a675efb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,302 @@ "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/polyfill": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.0.0.tgz", + "integrity": "sha512-dnrMRkyyr74CRelJwvgnnSUDh2ge2NCTyHVwpOdvRMHtJUyxLtMAfhBN3s64pY41zdw0kgiLPh6S20eb1NcX6Q==", + "requires": { + "core-js": "^2.5.7", + "regenerator-runtime": "^0.11.1" + } + }, + "@jimp/bmp": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.5.4.tgz", + "integrity": "sha512-P/ezH1FuoM3FwS0Dm2ZGkph4x5/rPBzFLEZor7KQkmGUnYEIEG4o0BUcAWFmJOp2HgzbT6O2SfrpJNBOcVACzQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "bmp-js": "^0.1.0", + "core-js": "^2.5.7" + } + }, + "@jimp/core": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.5.4.tgz", + "integrity": "sha512-n3uvHy2ndUKItmbhnRO8xmU8J6KR+v6CQxO9sbeUDpSc3VXc1PkqrA8ZsCVFCjnDFcGBXL+MJeCTyQzq5W9Crw==", + "requires": { + "@jimp/utils": "^0.5.0", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "core-js": "^2.5.7", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/custom": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.5.4.tgz", + "integrity": "sha512-tLfyJoyouDl2J3RPFGfDzTtE+4S8ljqJUmLzy/cmx1n7+xS5TpLPdPskp7UaeAfNTqdF4CNAm94KYoxTZdj2mg==", + "requires": { + "@jimp/core": "^0.5.4", + "core-js": "^2.5.7" + } + }, + "@jimp/gif": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.5.0.tgz", + "integrity": "sha512-HVB4c7b8r/yCpjhCjVNPRFLuujTav5UPmcQcFJjU6aIxmne6e29rAjRJEv3UMamHDGSu/96PzOsPZBO5U+ZGww==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "omggif": "^1.0.9" + } + }, + "@jimp/jpeg": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.5.4.tgz", + "integrity": "sha512-YaPWm+YSGCThNE/jLMckM3Qs6uaMxd/VsHOnEaqu5tGA4GFbfVaWHjKqkNGAFuiNV+HdgKlNcCOF3of+elvzqQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "jpeg-js": "^0.3.4" + } + }, + "@jimp/plugin-blit": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.5.4.tgz", + "integrity": "sha512-WqDYOugv76hF1wnKy7+xPGf9PUbcm9vPW28/jHWn1hjbb2GnusJ2fVEFad76J/1SPfhrQ2Uebf2QCWJuLmOqZg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-blur": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.5.0.tgz", + "integrity": "sha512-5k0PXCA1RTJdITL7yMAyZ5tGQjKLHqFvwdXj/PCoBo5PuMyr0x6qfxmQEySixGk/ZHdDxMi80vYxHdKHjNNgjg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-color": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.5.5.tgz", + "integrity": "sha512-hWeOqNCmLguGYLhSvBrpfCvlijsMEVaLZAOod62s1rzWnujozyKOzm2eZe+W3To6mHbp5RGJNVrIwHBWMab4ug==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "tinycolor2": "^1.4.1" + } + }, + "@jimp/plugin-contain": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.5.4.tgz", + "integrity": "sha512-8YJh4FI3S69unri0nJsWeqVLeVGA77N2R0Ws16iSuCCD/5UnWd9FeWRrSbKuidBG6TdMBaG2KUqSYZeHeH9GOQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-cover": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.5.4.tgz", + "integrity": "sha512-2Rur7b44WiDDgizUI2M2uYWc1RmfhU5KjKS1xXruobjQ0tXkf5xlrPXSushq0hB6Ne0Ss6wv0+/6eQ8WeGHU2w==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-crop": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.5.4.tgz", + "integrity": "sha512-6t0rqn4VazquGk48tO6hFBrQ+nkvC+A1RnR6UM/m8ZtG2/yjpwF0MXcpgJI1Fb+a4Ug7BY1fu2GPcZOhnAVK/g==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-displace": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.5.0.tgz", + "integrity": "sha512-Bec7SQvnmKia4hOXEDjeNVx7vo/1bWqjuV6NO8xbNQcAO3gaCl91c9FjMDhsfAVb0Ou6imhbIuFPrLxorXsecQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-dither": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.5.0.tgz", + "integrity": "sha512-We2WJQsD/Lm8oqBFp/vUv9/5r2avyenL+wNNu/s2b1HqA5O4sPGrjHy9K6vIov0NroQGCQ3bNznLkTmjiHKBcg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-flip": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.5.0.tgz", + "integrity": "sha512-D/ehBQxLMNR7oNd80KXo4tnSET5zEm5mR70khYOTtTlfti/DlLp3qOdjPOzfLyAdqO7Ly4qCaXrIsnia+pfPrA==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-gaussian": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.5.0.tgz", + "integrity": "sha512-Ln4kgxblv0/YzLBDb/J8DYPLhDzKH87Y8yHh5UKv3H+LPKnLaEG3L4iKTE9ivvdocnjmrtTFMYcWv2ERSPeHcg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-invert": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.5.0.tgz", + "integrity": "sha512-/vyKeIi3T7puf+8ruWovTjzDC585EnTwJ+lGOOUYiNPsdn4JDFe1B3xd+Ayv9aCQbXDIlPElZaM9vd/+wqDiIQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-mask": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.5.4.tgz", + "integrity": "sha512-mUJ04pCrUWaJGXPjgoVbzhIQB8cVobj2ZEFlGO3BEAjyylYMrdJlNlsER8dd7UuJ2L/a4ocWtFDdsnuicnBghQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-normalize": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.5.4.tgz", + "integrity": "sha512-Q5W0oEz9wxsjuhvHAJynI/OqXZcmqEAuRONQId7Aw5ulCXSOg9C4y2a67EO7aZAt55T+zMVxI9UpVUpzVvO6hw==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-print": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.5.4.tgz", + "integrity": "sha512-DOZr5TY9WyMWFBD37oz7KpTEBVioFIHQF/gH5b3O5jjFyj4JPMkw7k3kVBve9lIrzIYrvLqe0wH59vyAwpeEFg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "load-bmfont": "^1.4.0" + } + }, + "@jimp/plugin-resize": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.5.4.tgz", + "integrity": "sha512-lXNprNAT0QY1D1vG/1x6urUTlWuZe2dfL29P81ApW2Yfcio471+oqo45moX5FLS0q24xU600g7cHGf2/TzqSfA==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-rotate": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.5.4.tgz", + "integrity": "sha512-SIdUpMc8clObMchy8TnjgHgcXEQM992z5KavgiuOnCuBlsmSHtE3MrXTOyMW0Dn3gqapV9Y5vygrLm/BVtCCsg==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugin-scale": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.5.0.tgz", + "integrity": "sha512-5InIOr3cNtrS5aQ/uaosNf28qLLc0InpNGKFmGFTv8oqZqLch6PtDTjDBZ1GGWsPdA/ljy4Qyy7mJO1QBmgQeQ==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7" + } + }, + "@jimp/plugins": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.5.5.tgz", + "integrity": "sha512-9oF6LbSM/K7YkFCcxaPaD8NUkL/ZY8vT8NIGfQ/NpX+tKQtcsLHcRavHpUC+M1xXShv/QGx9OdBV/jgiu82QYg==", + "requires": { + "@jimp/plugin-blit": "^0.5.4", + "@jimp/plugin-blur": "^0.5.0", + "@jimp/plugin-color": "^0.5.5", + "@jimp/plugin-contain": "^0.5.4", + "@jimp/plugin-cover": "^0.5.4", + "@jimp/plugin-crop": "^0.5.4", + "@jimp/plugin-displace": "^0.5.0", + "@jimp/plugin-dither": "^0.5.0", + "@jimp/plugin-flip": "^0.5.0", + "@jimp/plugin-gaussian": "^0.5.0", + "@jimp/plugin-invert": "^0.5.0", + "@jimp/plugin-mask": "^0.5.4", + "@jimp/plugin-normalize": "^0.5.4", + "@jimp/plugin-print": "^0.5.4", + "@jimp/plugin-resize": "^0.5.4", + "@jimp/plugin-rotate": "^0.5.4", + "@jimp/plugin-scale": "^0.5.0", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/png": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.5.4.tgz", + "integrity": "sha512-J2NU7368zihF1HUZdmpXsL/Hhyf+I3ubmK+6Uz3Uoyvtk1VS7dO3L0io6fJQutfWmPZ4bvu6Ry022oHjbi6QCA==", + "requires": { + "@jimp/utils": "^0.5.0", + "core-js": "^2.5.7", + "pngjs": "^3.3.3" + } + }, + "@jimp/tiff": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.5.4.tgz", + "integrity": "sha512-hr7Zq3eWjAZ+itSwuAObIWMRNv7oHVM3xuEDC2ouP7HfE7woBtyhCyfA7u12KlgtM57gKWeogXqTlewRGVzx6g==", + "requires": { + "core-js": "^2.5.7", + "utif": "^2.0.1" + } + }, + "@jimp/types": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.5.4.tgz", + "integrity": "sha512-nbZXM6TsdpnYHIBd8ZuoxGpvmxc2SqiggY30/bhOP/VJQoDBzm2v/20Ywz5M0snpIK2SdYG52eZPNjfjqUP39w==", + "requires": { + "@jimp/bmp": "^0.5.4", + "@jimp/gif": "^0.5.0", + "@jimp/jpeg": "^0.5.4", + "@jimp/png": "^0.5.4", + "@jimp/tiff": "^0.5.4", + "core-js": "^2.5.7", + "timm": "^1.6.1" + } + }, + "@jimp/utils": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.5.0.tgz", + "integrity": "sha512-7H9RFVU+Li2XmEko0GGyzy7m7JjSc7qa+m8l3fUzYg2GtwASApjKF/LSG2AUQCUmDKFLdfIEVjxvKvZUJFEmpw==", + "requires": { + "core-js": "^2.5.7" } }, "abab": { @@ -32,12 +328,12 @@ }, "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=" }, "accepts": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { "mime-types": "~2.1.18", @@ -45,9 +341,9 @@ } }, "acorn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", - "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", "dev": true }, "acorn-globals": { @@ -58,6 +354,14 @@ "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.2.tgz", + "integrity": "sha512-GXmKIvbrN3TV7aVqAzVFaMW8F8wzVX7voEBRO3bDA64+EX37YSayggRJP5Xig6HYHBkWKpFg9W5gg6orklubhg==", + "dev": true + } } }, "acorn-jsx": { @@ -67,26 +371,26 @@ "dev": true }, "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.0.tgz", + "integrity": "sha512-ugTb7Lq7u4GfWSqqpwE0bGyoBZNMTok/zDBXxfEG0QM50jNlGhIWjRC1pPN7bvV1anhF+bs+/gNcRw+o55Evbg==", "dev": true }, "after": { "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/after/-/after-0.8.2.tgz", "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" }, "ajv": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", - "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -97,25 +401,29 @@ }, "ansi-escapes": { "version": "3.1.0", - "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", "dev": true }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } }, + "any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -420,6 +728,22 @@ "default-require-extensions": "^1.0.0" } }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -452,10 +776,25 @@ }, "array-equal": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", @@ -464,8 +803,8 @@ }, "arraybuffer.slice": { "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU=" }, "arrify": { "version": "1.0.1", @@ -511,8 +850,8 @@ }, "async-limiter": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=" }, "asynckit": { "version": "0.4.0", @@ -549,12 +888,6 @@ "js-tokens": "^3.0.2" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", @@ -574,12 +907,6 @@ "supports-color": "^2.0.0" } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true - }, "strip-ansi": { "version": "3.0.1", "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -704,17 +1031,6 @@ "find-up": "^2.1.0", "istanbul-lib-instrument": "^1.10.1", "test-exclude": "^4.2.1" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - } } }, "babel-plugin-jest-hoist": { @@ -828,12 +1144,6 @@ "requires": { "ms": "2.0.0" } - }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true } } }, @@ -857,14 +1167,13 @@ }, "backo2": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/backo2/-/backo2-1.0.2.tgz", "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", @@ -935,12 +1244,17 @@ }, "base64-arraybuffer": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + }, "base64id": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/base64id/-/base64id-1.0.0.tgz", "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" }, "bcrypt-pbkdf": { @@ -954,22 +1268,35 @@ }, "better-assert": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", "requires": { "callsite": "1.0.0" } }, "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + "version": "0.0.4", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=" }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -999,14 +1326,6 @@ "dev": true, "requires": { "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } } }, "bser": { @@ -1018,15 +1337,29 @@ "node-int64": "^0.4.0" } }, + "buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" + }, "buffer-from": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" }, "bufferutil": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.0.tgz", - "integrity": "sha512-jpnqMVLo7sqfUY2W92RC4jjj9TuiOSkjB0k43TxPcrBSntZwXUOl8Krfd3eVEdApuScpSTwYKntm/dXU2T8gnw==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/bufferutil/-/bufferutil-4.0.0.tgz", + "integrity": "sha1-pQeBYORDdRpOg7b01tfibAWDJqA=", "requires": { "node-gyp-build": "~3.4.0" } @@ -1069,17 +1402,25 @@ "dev": true, "requires": { "callsites": "^0.2.0" + }, + "dependencies": { + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + } } }, "callsite": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/callsite/-/callsite-1.0.0.tgz", "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" }, "callsites": { - "version": "0.2.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true }, "camelcase": { @@ -1107,7 +1448,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1126,12 +1466,6 @@ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", "dev": true }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -1170,6 +1504,12 @@ "restore-cursor": "^2.0.0" } }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", @@ -1213,7 +1553,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -1221,7 +1560,12 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.2.tgz", + "integrity": "sha512-rhP0JSBGYvpcNQj4s5AdShMeE5ahMop96cTeDl/v9qQQm2fYClE2QXZRi8wLzc+GmXSxdIqqbOIAhyObEXDbfQ==", "dev": true }, "combined-stream": { @@ -1242,24 +1586,23 @@ }, "component-bind": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/component-bind/-/component-bind-1.0.0.tgz", "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" }, "component-emitter": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, "component-inherit": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/component-inherit/-/component-inherit-0.0.3.tgz", "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -1273,6 +1616,12 @@ "typedarray": "^0.0.6" } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", @@ -1290,7 +1639,7 @@ }, "cookie": { "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/cookie/-/cookie-0.3.1.tgz", "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" }, "copy-descriptor": { @@ -1302,8 +1651,7 @@ "core-js": { "version": "2.5.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==", - "dev": true + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" }, "core-util-is": { "version": "1.0.2", @@ -1312,14 +1660,12 @@ "dev": true }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", + "lru-cache": "^4.0.1", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -1349,13 +1695,13 @@ } }, "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.0.1.tgz", + "integrity": "sha512-0HdcMZzK6ubMUnsMmQmG0AcLQPvbvb47R0+7CCZQCYgcd8OUWG91CG7sM6GoXgjz+WLl4ArFzHtBMy/QqSF4eg==", "dev": true, "requires": { "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", + "whatwg-mimetype": "^2.1.0", "whatwg-url": "^7.0.0" }, "dependencies": { @@ -1374,8 +1720,8 @@ }, "debug": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "requires": { "ms": "2.0.0" } @@ -1405,17 +1751,6 @@ "dev": true, "requires": { "strip-bom": "^2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } } }, "define-properties": { @@ -1480,12 +1815,40 @@ } } }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", @@ -1495,6 +1858,12 @@ "repeating": "^2.0.0" } }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "dev": true + }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -1502,19 +1871,26 @@ "dev": true }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "version": "2.2.3", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/diff/-/diff-2.2.3.tgz", + "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=" }, "diff2html": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/diff2html/-/diff2html-2.5.0.tgz", - "integrity": "sha512-pnk3EpZyuQyUl7/45KrmZPYIQB/tL03xgijzzkxWqy/UAXyV5qjB+g7ce8mbdSs1G+lO4ykMgjy+7NVN4siS/A==", + "version": "2.4.0", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/diff2html/-/diff2html-2.4.0.tgz", + "integrity": "sha1-3mMjhO76Wn9rDpLq+x+iXSLciKs=", "requires": { "diff": "^3.5.0", "hogan.js": "^3.0.2", - "lodash": "^4.17.11", - "whatwg-fetch": "^3.0.0" + "lodash": "^4.17.10", + "whatwg-fetch": "^2.0.4" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/diff/-/diff-3.5.0.tgz", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=" + } } }, "doctrine": { @@ -1526,6 +1902,11 @@ "esutils": "^2.0.2" } }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", @@ -1545,10 +1926,150 @@ "safer-buffer": "^2.1.0" } }, + "electron-rebuild": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-1.8.2.tgz", + "integrity": "sha512-EeR4dgb6NN7ybxduUWMeeLhU/EuF+FzwFZJfMJXD0bx96K+ttAieCXOn9lTO5nA9Qn3hiS7pEpk8pZ9StpGgSg==", + "dev": true, + "requires": { + "colors": "^1.2.0", + "debug": "^2.6.3", + "detect-libc": "^1.0.3", + "fs-extra": "^3.0.1", + "node-abi": "^2.0.0", + "node-gyp": "^3.6.0", + "ora": "^1.2.0", + "rimraf": "^2.6.1", + "spawn-rx": "^2.0.10", + "yargs": "^7.0.2" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "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-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "^3.0.0" + } + } + } + }, "engine.io": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", - "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "version": "3.2.0", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/engine.io/-/engine.io-3.2.0.tgz", + "integrity": "sha1-VDMlBvQvLtxxaQ0vKkI0k1nzv30=", "requires": { "accepts": "~1.3.4", "base64id": "1.0.0", @@ -1556,12 +2077,24 @@ "debug": "~3.1.0", "engine.io-parser": "~2.1.0", "ws": "~3.3.1" + }, + "dependencies": { + "ws": { + "version": "3.3.3", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/ws/-/ws-3.3.3.tgz", + "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } } }, "engine.io-client": { "version": "3.2.1", - "resolved": "http://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", - "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha1-b1TAR13khxWKGnx30QF4cItq3TY=", "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", @@ -1574,17 +2107,29 @@ "ws": "~3.3.1", "xmlhttprequest-ssl": "~1.5.4", "yeast": "0.1.2" + }, + "dependencies": { + "ws": { + "version": "3.3.3", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/ws/-/ws-3.3.3.tgz", + "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + } } }, "engine.io-parser": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", - "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "version": "2.1.2", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/engine.io-parser/-/engine.io-parser-2.1.2.tgz", + "integrity": "sha1-TA9M/3mq7su9z96maoI8YIVAkZY=", "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", + "blob": "0.0.4", "has-binary2": "~1.0.2" } }, @@ -1624,8 +2169,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.11.0", @@ -1694,6 +2238,31 @@ "text-table": "^0.2.0" }, "dependencies": { + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, "debug": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.0.tgz", @@ -1703,6 +2272,24 @@ "ms": "^2.1.1" } }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "globals": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "mkdirp": { "version": "0.5.1", "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -1732,9 +2319,9 @@ } }, "eslint-config-prettier": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-3.3.0.tgz", - "integrity": "sha512-Bc3bh5bAcKNvs3HOpSi6EfGA2IIp7EzWcg2tS4vP7stnXu/J1opihHDM7jI9JCIckyIDTgZLSWn7J3HY0j2JfA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-3.1.0.tgz", + "integrity": "sha512-QYGfmzuc4q4J6XIhlp8vRKdI/fI0tQfQPy1dME3UOLprE+v4ssH/3W9LM2Q7h5qBcy5m0ehCrBDU2YF8q6OY8w==", "dev": true, "requires": { "get-stdin": "^6.0.0" @@ -1758,6 +2345,15 @@ "requires": { "ms": "2.0.0" } + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } } } }, @@ -1779,6 +2375,34 @@ "requires": { "ms": "2.0.0" } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } } } }, @@ -1789,6 +2413,14 @@ "dev": true, "requires": { "globals": "^11.0.1" + }, + "dependencies": { + "globals": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", + "dev": true + } } }, "eslint-plugin-import": { @@ -1820,7 +2452,7 @@ }, "doctrine": { "version": "1.5.0", - "resolved": "http://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", "dev": true, "requires": { @@ -1833,6 +2465,63 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true } } }, @@ -1879,6 +2568,14 @@ "acorn": "^6.0.2", "acorn-jsx": "^5.0.0", "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", + "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==", + "dev": true + } } }, "esprima": { @@ -1939,21 +2636,13 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - } } }, + "exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=" + }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -2046,9 +2735,9 @@ "dev": true }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, "fast-json-stable-stringify": { @@ -2091,6 +2780,11 @@ "object-assign": "^4.0.1" } }, + "file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==" + }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -2121,27 +2815,40 @@ } }, "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "locate-path": "^2.0.0" } }, "flat-cache": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", - "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.1.tgz", + "integrity": "sha512-BUaXPScuox3BPmS9CGqbsh7tvAGzBEU2Dlnw243WoHjC0vO57faTOvHOkPQkPZZdpvJuwOQhMdAQx3BtdUh6nQ==", "dev": true, "requires": { - "circular-json": "^0.3.1", + "del": "^3.0.0", + "flatted": "^2.0.0", "graceful-fs": "^4.1.2", - "rimraf": "~2.6.2", "write": "^0.2.1" } }, + "flatted": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", + "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -2164,14 +2871,25 @@ "dev": true }, "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", "dev": true, "requires": { "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", + "combined-stream": "1.0.6", "mime-types": "^2.1.12" + }, + "dependencies": { + "combined-stream": { + "version": "1.0.6", + "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + } } }, "fragment-cache": { @@ -2196,8 +2914,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.2.4", @@ -2212,27 +2929,27 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "resolved": false, "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "resolved": false, "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "resolved": false, "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "resolved": false, "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", "dev": true, "optional": true, @@ -2243,13 +2960,13 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "resolved": false, "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { @@ -2259,39 +2976,39 @@ }, "chownr": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "resolved": false, "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "resolved": false, "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": false, "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "resolved": false, "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true }, "debug": { "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "resolved": false, "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "optional": true, @@ -2301,28 +3018,28 @@ }, "deep-extend": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "resolved": false, "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "resolved": false, "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "resolved": false, "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "resolved": false, "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", "dev": true, "optional": true, @@ -2332,14 +3049,14 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": false, "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "resolved": false, "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, @@ -2356,7 +3073,7 @@ }, "glob": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "resolved": false, "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "optional": true, @@ -2371,14 +3088,14 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "resolved": false, "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "resolved": false, "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", "dev": true, "optional": true, @@ -2388,7 +3105,7 @@ }, "ignore-walk": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "resolved": false, "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", "dev": true, "optional": true, @@ -2398,7 +3115,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "resolved": false, "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, @@ -2409,20 +3126,20 @@ }, "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "resolved": false, "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "resolved": false, "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": false, "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { @@ -2431,14 +3148,14 @@ }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": false, "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { @@ -2447,13 +3164,13 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": false, "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, "minipass": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", + "resolved": false, "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", "dev": true, "requires": { @@ -2463,7 +3180,7 @@ }, "minizlib": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "resolved": false, "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", "dev": true, "optional": true, @@ -2473,7 +3190,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": false, "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -2482,14 +3199,14 @@ }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "resolved": false, "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true, "optional": true }, "needle": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", + "resolved": false, "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", "dev": true, "optional": true, @@ -2501,7 +3218,7 @@ }, "node-pre-gyp": { "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", + "resolved": false, "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", "dev": true, "optional": true, @@ -2520,7 +3237,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "resolved": false, "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, @@ -2531,14 +3248,14 @@ }, "npm-bundled": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "resolved": false, "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", "dev": true, "optional": true }, "npm-packlist": { "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "resolved": false, "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", "dev": true, "optional": true, @@ -2549,7 +3266,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "resolved": false, "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, @@ -2562,20 +3279,20 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "resolved": false, "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "resolved": false, "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "resolved": false, "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { @@ -2584,21 +3301,21 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": false, "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": false, "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "resolved": false, "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, @@ -2609,21 +3326,21 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": false, "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "resolved": false, "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", "dev": true, "optional": true }, "rc": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "resolved": false, "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", "dev": true, "optional": true, @@ -2636,7 +3353,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": false, "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true @@ -2645,7 +3362,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": false, "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, @@ -2661,7 +3378,7 @@ }, "rimraf": { "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "resolved": false, "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", "dev": true, "optional": true, @@ -2671,48 +3388,48 @@ }, "safe-buffer": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "resolved": false, "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "resolved": false, "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "resolved": false, "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true }, "semver": { "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "resolved": false, "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "resolved": false, "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "resolved": false, "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": false, "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { @@ -2723,7 +3440,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": false, "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, @@ -2733,7 +3450,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -2742,14 +3459,14 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "resolved": false, "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true }, "tar": { "version": "4.4.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", + "resolved": false, "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", "dev": true, "optional": true, @@ -2765,14 +3482,14 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": false, "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "resolved": false, "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", "dev": true, "optional": true, @@ -2782,18 +3499,30 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "yallist": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "resolved": false, "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", "dev": true } } }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -2806,6 +3535,53 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", @@ -2815,8 +3591,7 @@ "get-stdin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==" }, "get-stream": { "version": "3.0.0", @@ -2843,7 +3618,6 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2872,16 +3646,38 @@ "is-glob": "^2.0.0" } }, + "global": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz", + "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=", + "requires": { + "min-document": "^2.19.0", + "process": "~0.5.1" + } + }, "globals": { - "version": "11.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.9.0.tgz", - "integrity": "sha512-5cJVtyXWH8PiJPVLZzzoIizXx944O4OmRro5MWKx5fT4MgcN7OfaMutPeaTdJCCURwbWdhhcCWcKIffPnmTzBg==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", "dev": true }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + "version": "4.1.11", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "growly": { "version": "1.3.0", @@ -2908,12 +3704,12 @@ "dev": true }, "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", "dev": true, "requires": { - "ajv": "^6.5.5", + "ajv": "^5.3.0", "har-schema": "^2.0.0" } }, @@ -2933,34 +3729,25 @@ "dev": true, "requires": { "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } } }, "has-binary2": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha1-d3asYn8+p3JQz8My2rfd9eT10R0=", "requires": { "isarray": "2.0.1" } }, "has-cors": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/has-cors/-/has-cors-1.1.0.tgz", "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.0", @@ -2968,6 +3755,12 @@ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -3030,11 +3823,18 @@ }, "hogan.js": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/hogan.js/-/hogan.js-3.0.2.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/hogan.js/-/hogan.js-3.0.2.tgz", "integrity": "sha1-TNnhq9QpQUbnZ55B14mHMrAse/0=", "requires": { "mkdirp": "0.3.0", "nopt": "1.0.10" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.0", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", + "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" + } } }, "home-or-tmp": { @@ -3082,12 +3882,22 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "image-size": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", + "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==" + }, "import-local": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", @@ -3096,26 +3906,6 @@ "requires": { "pkg-dir": "^2.0.0", "resolve-cwd": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } } }, "imurmurhash": { @@ -3126,14 +3916,13 @@ }, "indexof": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/indexof/-/indexof-0.0.1.tgz", "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -3142,8 +3931,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inquirer": { "version": "6.2.0", @@ -3214,8 +4002,7 @@ "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" }, "is-ci": { "version": "1.2.1", @@ -3302,6 +4089,11 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-function": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz", + "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU=" + }, "is-generator-fn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", @@ -3326,6 +4118,30 @@ "kind-of": "^3.0.2" } }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -3411,7 +4227,7 @@ }, "isarray": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/isarray/-/isarray-2.0.1.tgz", "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" }, "isexe": { @@ -3677,6 +4493,14 @@ "diff": "^3.2.0", "jest-get-type": "^22.1.0", "pretty-format": "^23.6.0" + }, + "dependencies": { + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + } } }, "jest-docblock": { @@ -3721,7 +4545,7 @@ }, "jest-get-type": { "version": "22.4.3", - "resolved": "http://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", "dev": true }, @@ -3875,6 +4699,14 @@ "strip-bom": "3.0.0", "write-file-atomic": "^2.1.0", "yargs": "^11.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } } }, "jest-serializer": { @@ -3928,12 +4760,6 @@ "source-map": "^0.6.0" }, "dependencies": { - "callsites": { - "version": "2.0.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, "mkdirp": { "version": "0.5.1", "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -3977,15 +4803,32 @@ "merge-stream": "^1.0.1" } }, + "jimp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.5.6.tgz", + "integrity": "sha512-H0nHTu6KgAgQzDxa38ew2dXbnRzKm1w5uEyhMIxqwCQVjwgarOjjkV/avbNLxfxRHAFaNp4rGIc/qm8P+uhX9A==", + "requires": { + "@babel/polyfill": "^7.0.0", + "@jimp/custom": "^0.5.4", + "@jimp/plugins": "^0.5.5", + "@jimp/types": "^0.5.4", + "core-js": "^2.5.7" + } + }, + "jpeg-js": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.4.tgz", + "integrity": "sha512-6IzjQxvnlT8UlklNmDXIJMWxijULjqGrzgqc0OG7YadZdvm7KPQ1j0ehmQQHckgEWOfgpptzcnWgESovxudpTA==" + }, "js-base64": { "version": "2.4.9", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz", "integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==" }, "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "js-yaml": { @@ -4036,28 +4879,11 @@ "whatwg-url": "^6.4.1", "ws": "^5.2.0", "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - } } }, "jsesc": { "version": "1.3.0", - "resolved": "http://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, @@ -4068,9 +4894,9 @@ "dev": true }, "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", "dev": true }, "json-stable-stringify-without-jsonify": { @@ -4093,7 +4919,7 @@ }, "jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { "graceful-fs": "^4.1.6" @@ -4157,16 +4983,32 @@ "type-check": "~0.3.2" } }, + "load-bmfont": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.0.tgz", + "integrity": "sha512-kT63aTAlNhZARowaNYcY29Fn/QYkc52M3l6V1ifRcPewg2lvUZDAj7R6dXjOL9D0sict76op3T5+odumDSF81g==", + "requires": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^2.9.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, "load-json-file": { - "version": "2.0.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", "pify": "^2.0.0", - "strip-bom": "^3.0.0" + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "locate-path": { @@ -4177,14 +5019,6 @@ "requires": { "p-locate": "^2.0.0", "path-exists": "^3.0.0" - }, - "dependencies": { - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } } }, "lodash": { @@ -4192,12 +5026,27 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4292,17 +5141,22 @@ "regex-cache": "^0.4.2" } }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, "mime-db": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", - "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" + "version": "1.36.0", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha1-UCBHjbPH/pOq17vMTc+GnEM2M5c=" }, "mime-types": { - "version": "2.1.21", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", - "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", + "version": "2.1.20", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha1-kwy3GdVx6QNzhSD4RwkRVIyizBk=", "requires": { - "mime-db": "~1.37.0" + "mime-db": "~1.36.0" } }, "mimic-fn": { @@ -4311,11 +5165,18 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4323,8 +5184,7 @@ "minimist": { "version": "0.0.8", "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mixin-deep": { "version": "1.3.1", @@ -4348,13 +5208,16 @@ } }, "mkdirp": { - "version": "0.3.0", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz", - "integrity": "sha1-G79asbqCevI1dRQ0kEJkVfSB/h4=" + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } }, "ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "mute-stream": { @@ -4417,7 +5280,7 @@ }, "negotiator": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, "nice-try": { @@ -4426,10 +5289,67 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-abi": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.5.0.tgz", + "integrity": "sha512-9g2twBGSP6wIR5PW7tXvAWnEWKJDH/VskdXp168xsw9VVxpEGov8K4jsP4/VeoC7b2ZAyzckvMCuQuQlw44lXg==", + "dev": true, + "requires": { + "semver": "^5.4.1" + } + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "http://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "http://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + } + } + }, "node-gyp-build": { "version": "3.4.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.4.0.tgz", - "integrity": "sha512-YoviGBJYGrPdLOKDIQB0sKxuKy/EEsxzooNkOZak4vSTKT/qH0Pa6dj3t1MJjEQGsefih61IyHDmO1WW7xOFfw==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/node-gyp-build/-/node-gyp-build-3.4.0.tgz", + "integrity": "sha1-+PYlB+ZfFSSIsoqsJdBLnXl0jPc=" }, "node-int64": { "version": "0.4.0", @@ -4438,20 +5358,20 @@ "dev": true }, "node-notifier": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.3.0.tgz", - "integrity": "sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.2.1.tgz", + "integrity": "sha512-MIBs+AAd6dJ2SklbbE8RUDRlIVhU8MaNLh1A9SUZDUHPiZkWLFde6UNwG41yQHZEToHgJMXqyVZ9UcS/ReOVTg==", "dev": true, "requires": { "growly": "^1.3.0", - "semver": "^5.5.0", + "semver": "^5.4.1", "shellwords": "^0.1.1", "which": "^1.3.0" } }, "nopt": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/nopt/-/nopt-1.0.10.tgz", "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "requires": { "abbrev": "1" @@ -4487,6 +5407,18 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -4513,7 +5445,7 @@ }, "object-component": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/object-component/-/object-component-0.0.3.tgz", "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" }, "object-copy": { @@ -4622,11 +5554,15 @@ } } }, + "omggif": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.9.tgz", + "integrity": "sha1-3LcCTazVDFK00wPwSALJHAV8dl8=" + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -4648,14 +5584,6 @@ "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - } } }, "optionator": { @@ -4670,11 +5598,31 @@ "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "wordwrap": "~1.0.0" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + } + } + }, + "ora": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-1.4.0.tgz", + "integrity": "sha512-iMK1DOQxzzh2MBlVsU42G80mnrvUhqsMh74phHtDlrcTZPK0pH6o7l7DRshK+0YsxDyEuaOkziVdvM3T0QTzpw==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.0.1", + "log-symbols": "^2.1.0" } }, "os-homedir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, @@ -4691,10 +5639,20 @@ }, "os-tmpdir": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -4716,15 +5674,45 @@ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.7.tgz", + "integrity": "sha512-3HNK5tW4x8o5mO8RuHZp3Ydw9icZXx0RANAOMzlMzx7LVXhMJ4mo3MOBpzyd7r/+RUu8BmndP47LXT+vzjtWcQ==" + }, + "parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha1-Eaw8P/WPfCAgqyJ2kHkQjU36AoU=" + }, + "parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha1-0Di0dtPp3Z2x4RoLDlOiJ5K2kAY=" + }, + "parse-bmfont-xml": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", + "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", + "requires": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.4.5" } }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -4737,6 +5725,15 @@ "is-glob": "^2.0.0" } }, + "parse-headers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.1.tgz", + "integrity": "sha1-aug6eqJanZtwCswoaYzR8e1+lTY=", + "requires": { + "for-each": "^0.3.2", + "trim": "0.0.1" + } + }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -4754,7 +5751,7 @@ }, "parseqs": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", "requires": { "better-assert": "~1.0.0" @@ -4762,7 +5759,7 @@ }, "parseuri": { "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", "requires": { "better-assert": "~1.0.0" @@ -4775,19 +5772,15 @@ "dev": true }, "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true }, "path-is-absolute": { "version": "1.0.1", - "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -4808,12 +5801,14 @@ "dev": true }, "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "pify": "^2.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "performance-now": { @@ -4822,9 +5817,14 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" + }, "pify": { "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, @@ -4843,13 +5843,21 @@ "pinkie": "^2.0.0" } }, + "pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "requires": { + "pngjs": "^3.0.0" + } + }, "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", "dev": true, "requires": { - "find-up": "^1.0.0" + "find-up": "^2.1.0" } }, "pluralize": { @@ -4864,6 +5872,11 @@ "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, + "pngjs": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.3.3.tgz", + "integrity": "sha512-1n3Z4p3IOxArEs1VRXnZ/RXdfEniAUS9jb68g58FIXMNkPJeZd+Qh4Uq7/e0LVxAQGos1eIUrqrt4FpjdnEd+Q==" + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -4895,6 +5908,14 @@ "requires": { "ansi-regex": "^3.0.0", "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } } }, "private": { @@ -4903,6 +5924,11 @@ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, + "process": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz", + "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8=" + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", @@ -4950,9 +5976,9 @@ "dev": true }, "randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", "dev": true, "requires": { "is-number": "^4.0.0", @@ -4975,33 +6001,43 @@ } }, "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "^2.0.0", + "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" + "path-type": "^1.0.0" } }, "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "locate-path": "^2.0.0" + "pinkie-promise": "^2.0.0" } } } @@ -5041,8 +6077,7 @@ "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, "regex-cache": { "version": "0.4.4", @@ -5158,22 +6193,27 @@ }, "require-uncached": { "version": "1.0.3", - "resolved": "http://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", "dev": true, "requires": { "caller-path": "^0.1.0", "resolve-from": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } } }, "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true }, "resolve-cwd": { "version": "2.0.0", @@ -5182,20 +6222,12 @@ "dev": true, "requires": { "resolve-from": "^3.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - } } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, "resolve-url": { @@ -5229,12 +6261,6 @@ "eslint": "^4.19.1" }, "dependencies": { - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", - "dev": true - }, "acorn-jsx": { "version": "3.0.1", "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", @@ -5252,35 +6278,12 @@ } } }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", "dev": true }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, "eslint": { "version": "4.19.1", "resolved": "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", @@ -5358,10 +6361,10 @@ "tmp": "^0.0.33" } }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "globals": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", + "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", "dev": true }, "ignore": { @@ -5392,12 +6395,6 @@ "through": "^2.3.6" } }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, "mkdirp": { "version": "0.5.1", "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -5433,7 +6430,6 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, "requires": { "glob": "^7.0.5" } @@ -5479,12 +6475,12 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -5805,11 +6801,18 @@ } } }, + "sanitize-filename": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", + "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "semver": { "version": "5.6.0", @@ -6019,8 +7022,8 @@ }, "socket.io": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", - "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha1-oGnF/qvuPmshSnW0DOBlLhz7mYA=", "requires": { "debug": "~3.1.0", "engine.io": "~3.2.0", @@ -6032,13 +7035,13 @@ }, "socket.io-adapter": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" }, "socket.io-client": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", - "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha1-3LOBA0NqtFeN2wJmOK4vIbYjZx8=", "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", @@ -6058,8 +7061,8 @@ }, "socket.io-parser": { "version": "3.2.0", - "resolved": "http://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", - "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha1-58Yii2qh+BTmFIrqMltRqpSZ4Hc=", "requires": { "component-emitter": "1.2.1", "debug": "~3.1.0", @@ -6068,8 +7071,8 @@ }, "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" }, "source-map-resolve": { "version": "0.5.2", @@ -6086,8 +7089,8 @@ }, "source-map-support": { "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha1-QbyVOyU0Jn6i1gW8z6e/oxEc7V8=", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -6099,6 +7102,37 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "spawn-rx": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/spawn-rx/-/spawn-rx-2.0.12.tgz", + "integrity": "sha512-gOPXiQQFQ9lTOLuys0iMn3jfxxv9c7zzwhbYLOEbQGvEShHVJ5sSR1oD3Daj88os7jKArDYT7rbOKdvNhe7iEg==", + "dev": true, + "requires": { + "debug": "^2.5.1", + "lodash.assign": "^4.2.0", + "rxjs": "^5.1.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + } + } + }, "spdx-correct": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.2.tgz", @@ -6126,9 +7160,9 @@ } }, "spdx-license-ids": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.2.tgz", - "integrity": "sha512-qky9CVt0lVIECkEsYbNILVnPvycuEBkXoMFLRWsREkomQLevYhtRKC+R91a5TOAQ3bCMjikRwhyaRqj1VYatYg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", "dev": true }, "split-string": { @@ -6147,9 +7181,9 @@ "dev": true }, "sshpk": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.2.tgz", - "integrity": "sha512-Ra/OXQtuh0/enyl4ETZAfTaeksa6BXks5ZcjpSUNrjBr0DvrJKX+1fsKDPpT9TBXgHAFsa4510aNVgI8g/+SzA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz", + "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -6164,9 +7198,9 @@ } }, "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, "static-extend": { @@ -6232,17 +7266,28 @@ "dev": true, "requires": { "ansi-regex": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } } }, "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } }, "strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, @@ -6256,11 +7301,16 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=", + "dev": true + }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", @@ -6277,6 +7327,32 @@ "lodash": "^4.17.10", "slice-ansi": "1.0.0", "string-width": "^2.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + } } }, "test-exclude": { @@ -6290,62 +7366,6 @@ "object-assign": "^4.1.0", "read-pkg-up": "^1.0.1", "require-main-filename": "^1.0.1" - }, - "dependencies": { - "load-json-file": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } } }, "text-table": { @@ -6366,6 +7386,16 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "timm": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.6.1.tgz", + "integrity": "sha512-hqDTYi/bWuDxL2i6T3v6nrvkAQ/1Bc060GSkVEQZp02zTSTB4CHSKsOkliequCftQaNRcjRqUZmpGWs5FfhrNg==" + }, + "tinycolor2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz", + "integrity": "sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g=" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -6383,7 +7413,7 @@ }, "to-array": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/to-array/-/to-array-0.1.4.tgz", "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" }, "to-fast-properties": { @@ -6461,12 +7491,25 @@ "punycode": "^2.1.0" } }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0=" + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -6516,22 +7559,15 @@ }, "ultron": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=" }, "unidiff": { "version": "0.0.4", - "resolved": "https://registry.npmjs.org/unidiff/-/unidiff-0.0.4.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/unidiff/-/unidiff-0.0.4.tgz", "integrity": "sha1-JX/DRqxvE0sLddCIlTIIcqc34iI=", "requires": { "diff": "^2.2.2" - }, - "dependencies": { - "diff": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", - "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k=" - } } }, "union-value": { @@ -6571,8 +7607,8 @@ }, "universalify": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=" }, "unset-value": { "version": "1.0.0", @@ -6649,12 +7685,25 @@ }, "utf-8-validate": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.1.tgz", - "integrity": "sha512-Qef1AuiWWxQeZ1Oa4DTV3ArRafpZvsK+CLrlB8khLfsV+9mwhj58hNSGmel0ns5jYP+3yEwav6vxxW7Gz85bVw==", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/utf-8-validate/-/utf-8-validate-5.0.1.tgz", + "integrity": "sha1-zvH5ARukshb018bd9RiddQWZ/4s=", "requires": { "node-gyp-build": "~3.4.0" } }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=" + }, + "utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "requires": { + "pako": "^1.0.5" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -6755,9 +7804,9 @@ } }, "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" + "version": "2.0.4", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha1-3eal3zFfnTmZGqF2IYU9cguFVm8=" }, "whatwg-mimetype": { "version": "2.2.0", @@ -6791,10 +7840,19 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { @@ -6807,12 +7865,6 @@ "strip-ansi": "^3.0.1" }, "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -6847,8 +7899,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "0.2.1", @@ -6882,13 +7933,23 @@ } }, "ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xhr": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", + "integrity": "sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ==", "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" + "global": "~4.3.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" } }, "xml-name-validator": { @@ -6897,11 +7958,35 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha1-qQKekp09vN7RafPG4oI42VpdWig=" + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "xmlhttprequest-ssl": { "version": "1.5.5", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + }, "y18n": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", @@ -6932,17 +8017,6 @@ "which-module": "^2.0.0", "y18n": "^3.2.1", "yargs-parser": "^9.0.2" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - } } }, "yargs-parser": { @@ -6956,7 +8030,7 @@ }, "yeast": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "resolved": "https://artifactory.tools.bol.com:443/artifactory/api/npm/npm-bol/yeast/-/yeast-0.1.2.tgz", "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" } } diff --git a/package.json b/package.json index 02e82085..9df27e96 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,7 @@ "assets", "docs", "LICENSE", - "tasks", - "utils" + "src" ], "engines": { "node": ">=8.2.1" @@ -41,11 +40,20 @@ }, "dependencies": { "bufferutil": "^4.0.0", + "chalk": "^2.4.1", "diff2html": "^2.4.0", "fs-extra": "^7.0.1", + "get-stdin": "^6.0.0", + "image-size": "^0.6.3", + "jimp": "^0.5.6", "js-base64": "^2.4.9", "lodash": "^4.17.11", + "mkdirp": "^0.5.1", + "pixelmatch": "^4.0.2", + "pngjs": "^3.3.3", "prettier": "^1.15.2", + "rimraf": "^2.6.2", + "sanitize-filename": "^1.6.1", "socket.io": "^2.1.1", "source-map-support": "^0.5.9", "unidiff": "0.0.4", @@ -56,6 +64,7 @@ "cypress": "^3.1.2" }, "devDependencies": { + "electron-rebuild": "^1.8.2", "eslint": "^5.9.0", "eslint-config-airbnb-base": "^13.1.0", "eslint-config-prettier": "^3.1.0", @@ -88,7 +97,26 @@ "no-param-reassign": 0, "no-use-before-define": 0, "global-require": 0, - "no-underscore-dangle": 0 + "no-underscore-dangle": 0, + "object-curly-newline": [ + "error", + { + "ObjectExpression": { + "consistent": true + }, + "ObjectPattern": { + "consistent": true + }, + "ImportDeclaration": { + "multiline": true, + "minProperties": 3 + }, + "ExportDeclaration": { + "multiline": true, + "minProperties": 3 + } + } + ] } }, "eslintIgnore": [ diff --git a/plugin.js b/plugin.js index 3dce1161..ae0173d0 100644 --- a/plugin.js +++ b/plugin.js @@ -1,24 +1,33 @@ -const { initConfig, CONFIG_KEY } = require('./config'); -const { initServer } = require('./save-server'); -const tasks = require('./tasks/index'); +const { initConfig, CONFIG_KEY } = require('./src/config'); +const { initServer } = require('./src/saveServer'); +const tasks = require('./src/tasks/'); /** * Initializes the plugin: - * - registers tasks for `toMatchSnapshot`. + * - registers tasks for `toMatchSnapshot` and `toMatchImageSnapshot`. * - Make config accessible via `Cypress.env`. * @param {Function} on - Method to register tasks * @param {Object} globalConfig - Object containing global Cypress config */ -function initPlugin(on, globalConfig = {}) { +function initPlugin(on, globalConfig = { +}) { const config = initConfig(globalConfig.env[CONFIG_KEY]); initServer(config); - // Adding objects/keys to `Cypress.env` that don't exist doesn't work. - // That's why the config is stringifed and parsed again in `commands.js#fixConfig`. + // Adding sub objects/keys to `Cypress.env` that don't exist in `cypress.json` doesn't work. + // That's why the config is stringified and parsed again in `src/utils/commands/getConfig.js#fixConfig`. globalConfig.env[CONFIG_KEY] = JSON.stringify(config); on('task', tasks); + on('before:browser:launch', (browser = {}, args) => { + if (browser.name === 'chrome') { + args.push('--font-render-hinting=medium'); + args.push('--enable-font-antialiasing'); + args.push('--disable-gpu'); + } + return args; + }); } module.exports = { diff --git a/src/commands/commandNames.js b/src/commands/commandNames.js new file mode 100644 index 00000000..6714e207 --- /dev/null +++ b/src/commands/commandNames.js @@ -0,0 +1,4 @@ +module.exports = { + COMMAND_MATCH_SNAPSHOT: 'toMatchSnapshot', + COMMAND_MATCH_IMAGE_SNAPSHOT: 'toMatchImageSnapshot' +}; diff --git a/src/commands/index.js b/src/commands/index.js new file mode 100644 index 00000000..b4da88fd --- /dev/null +++ b/src/commands/index.js @@ -0,0 +1,7 @@ +const toMatchSnapshot = require('./toMatchSnapshot'); +const toMatchImageSnapshot = require('./toMatchImageSnapshot'); + +module.exports = { + toMatchSnapshot, + toMatchImageSnapshot, +} diff --git a/src/commands/toMatchImageSnapshot.js b/src/commands/toMatchImageSnapshot.js new file mode 100644 index 00000000..48f5f7f4 --- /dev/null +++ b/src/commands/toMatchImageSnapshot.js @@ -0,0 +1,52 @@ +/* globals Cypress, before, after, cy */ +/* eslint-env browser */ +const { merge } = require('lodash'); +const { MATCH_IMAGE } = require('../tasks/taskNames'); +const getTaskData = require('../utils/commands/getTaskData'); +const logMessage = require('../utils/commands/logMessage'); +const { NO_LOG } = require('../constants'); +const { COMMAND_MATCH_IMAGE_SNAPSHOT: commandName } = require('./commandNames'); +const { getImageData } = require('../utils/imageSnapshots'); +const { getConfig, DEFAULT_IMAGE_CONFIG } = require('../config'); + +const SCREENSHOT_CONFIG = { + blackout: ['.snapshot-diff'], + capture: 'fullPage', + log: false, +} + +function afterScreenshot(taskData) { + return ($el, props) => { + // See this url for contents of `props`: + // https://docs.cypress.io/api/commands/screenshot.html#Get-screenshot-info-from-the-onAfterScreenshot-callback + taskData.image = getImageData(props, window.devicePixelRatio); + taskData.isImage = true; + delete taskData.subject; + }; +} + +function toMatchImageSnapshot(subject, commandOptions) { + const config = getConfig(); + const options = merge({}, DEFAULT_IMAGE_CONFIG, config.imageOptions, commandOptions); + + const taskData = getTaskData({ + commandName, + options, + subject, + }); + + const screenShotConfig = merge({}, SCREENSHOT_CONFIG, { + onAfterScreenshot: afterScreenshot(taskData) + }); + + return cy.wrap(subject, NO_LOG) + .screenshot(taskData.snapshotTitle, screenShotConfig) + .then(() => cy.task( + MATCH_IMAGE, + taskData, + NO_LOG + ).then(logMessage) + ); +} + +module.exports = toMatchImageSnapshot; diff --git a/src/commands/toMatchSnapshot.js b/src/commands/toMatchSnapshot.js new file mode 100644 index 00000000..6d2859d4 --- /dev/null +++ b/src/commands/toMatchSnapshot.js @@ -0,0 +1,21 @@ +/* globals Cypress, before, after, cy */ +/* eslint-env browser */ +const { MATCH_TEXT } = require('../tasks/taskNames'); +const getTaskData = require('../utils/commands/getTaskData'); +const logMessage = require('../utils/commands/logMessage'); +const { NO_LOG } = require('../constants'); +const { COMMAND_MATCH_SNAPSHOT: commandName } = require('./commandNames'); + +function toMatchSnapshot(subject, options) { + return cy.task( + MATCH_TEXT, + getTaskData({ + commandName, + options, + subject, + }), + NO_LOG + ).then(logMessage); +} + +module.exports = toMatchSnapshot; diff --git a/config.js b/src/config.js similarity index 83% rename from config.js rename to src/config.js index e3d4fdbd..6ee5d3de 100644 --- a/config.js +++ b/src/config.js @@ -1,11 +1,18 @@ const crypto = require('crypto'); const { merge, cloneDeep } = require('lodash'); -const { TYPE_JSON } = require('./constants'); +const { TYPE_JSON } = require('./dataTypes'); function createToken() { return crypto.randomBytes(64).toString('hex'); } +const DEFAULT_IMAGE_CONFIG = { + createDiffImage: true, + resizeDevicePixelRatio: true, + threshold: 0.1, + thresholdType: 'percent', // can be 'percent' or 'pixel' +}; + const DEFAULT_CONFIG = Object.freeze({ autoCleanUp: false, autopassNewSnapshots: true, @@ -15,6 +22,7 @@ const DEFAULT_CONFIG = Object.freeze({ ignoreExtraFields: false, normalizeJson: true, prettier: true, + imageConfig: DEFAULT_IMAGE_CONFIG, prettierConfig: { html: { parser: 'html', @@ -60,6 +68,7 @@ function getPrettierConfig(dataType) { module.exports = { CONFIG_KEY, + DEFAULT_IMAGE_CONFIG, getConfig, shouldNormalize, getPrettierConfig, diff --git a/src/constants.js b/src/constants.js new file mode 100644 index 00000000..a5867e8a --- /dev/null +++ b/src/constants.js @@ -0,0 +1,8 @@ +module.exports = { + DIR_IMAGE_SNAPSHOTS: '__image_snapshots__', + DIR_SNAPSHOTS: '__snapshots__', + IMAGE_TYPE_DIFF: 'diff', + IMAGE_TYPE_ACTUAL: 'actual', + NO_LOG: { log: false }, + URL_PREFIX: '#cypress-plugin-snapshot-', +} diff --git a/constants.js b/src/dataTypes.js similarity index 70% rename from constants.js rename to src/dataTypes.js index bdf6f010..be862dce 100644 --- a/constants.js +++ b/src/dataTypes.js @@ -1,4 +1,5 @@ module.exports = { TYPE_HTML: 'html', + TYPE_IMAGE: 'image', TYPE_JSON: 'json', -} +}; diff --git a/tasks/paths.js b/src/paths.js similarity index 84% rename from tasks/paths.js rename to src/paths.js index f3ccf22f..9d4f9300 100644 --- a/tasks/paths.js +++ b/src/paths.js @@ -1,8 +1,8 @@ module.exports = { + PATH_BASE64_JS: 'js-base64/base64.min.js', PATH_CSS: './assets/styles.css', PATH_DIFF_CSS: 'diff2html/dist/diff2html.css', PATH_DIFF_JS: 'diff2html/dist/diff2html.js', PATH_JS: './assets/script.js', PATH_SOCKET_JS: 'socket.io-client/dist/socket.io.js', - PATH_BASE64_JS: 'js-base64/base64.min.js' }; diff --git a/save-server.js b/src/saveServer.js similarity index 75% rename from save-server.js rename to src/saveServer.js index ea61ac8e..ab9520ed 100644 --- a/save-server.js +++ b/src/saveServer.js @@ -1,7 +1,7 @@ const http = require('http'); const socketio = require('socket.io'); -const { SAVE } = require('./tasks/task-names'); -const { saveSnapshot } = require('./utils/plugin'); +const { SAVE_TEXT } = require('./tasks/taskNames'); +const { saveSnapshot } = require('./utils/tasks/textSnapshots'); function initServer(config) { if (!config.serverEnabled) { @@ -13,7 +13,7 @@ function initServer(config) { io.on('connection', (client) => { const { token } = client.handshake.query; - client.on(SAVE, (data) => { + client.on(SAVE_TEXT, (data) => { if (token === config.token) { saveSnapshot(data); } diff --git a/tasks/get-file.js b/src/tasks/getFile.js similarity index 78% rename from tasks/get-file.js rename to src/tasks/getFile.js index f00c22dc..928fcfad 100644 --- a/tasks/get-file.js +++ b/src/tasks/getFile.js @@ -1,6 +1,6 @@ const fs = require('fs'); const path = require('path'); -const PATHS = require('./paths'); +const PATHS = require('../paths'); function getFile(filename) { if (Object.values(PATHS).indexOf(filename) === -1) { @@ -8,7 +8,7 @@ function getFile(filename) { } const fullPath = filename.match(/^\.\//) ? - path.join(path.resolve(__dirname, '../', filename)) : + path.join(path.resolve(__dirname, '../../', filename)) : require.resolve(filename); if (!fs.existsSync(fullPath)) { @@ -18,6 +18,4 @@ function getFile(filename) { return fs.readFileSync(fullPath, {encoding: 'utf8'}); } -module.exports = { - getFile, -}; +module.exports = getFile; diff --git a/src/tasks/index.js b/src/tasks/index.js new file mode 100644 index 00000000..22f75928 --- /dev/null +++ b/src/tasks/index.js @@ -0,0 +1,20 @@ +const { + GET_FILE, + MATCH_IMAGE, + MATCH_TEXT, + SAVE_IMAGE, + SAVE_TEXT, +} = require('./taskNames'); +const getFile = require('./getFile'); +const matchImageSnapshot = require('./matchImageSnapshot'); +const matchTextSnapshot = require('./matchTextSnapshot'); +const saveImageSnapshot = require('./saveImageSnapshot'); +const saveTextSnapshot = require('./saveTextSnapshot'); + +module.exports = { + [GET_FILE]: getFile, + [MATCH_IMAGE]: matchImageSnapshot, + [MATCH_TEXT]: matchTextSnapshot, + [SAVE_IMAGE]: saveImageSnapshot, + [SAVE_TEXT]: saveTextSnapshot, +} diff --git a/src/tasks/matchImageSnapshot.js b/src/tasks/matchImageSnapshot.js new file mode 100644 index 00000000..9f51f4af --- /dev/null +++ b/src/tasks/matchImageSnapshot.js @@ -0,0 +1,75 @@ +const { merge, cloneDeep } = require('lodash'); +const rimraf = require('rimraf').sync; +const path = require('path'); +const { getConfig } = require('../config'); +const { getImageSnapshotFilename, getImageData } = require('../utils/imageSnapshots'); +const saveImageSnapshot = require('./saveImageSnapshot'); +const { getImageObject, compareImages, moveActualImageToSnapshotsDirectory, createDiffObject } = require('../utils/tasks/imageSnapshots'); +const resizeImage = require('../utils/tasks/resizeImage'); +const { IMAGE_TYPE_DIFF, IMAGE_TYPE_ACTUAL } = require('../constants'); + +async function matchImageSnapshot(data = {}) { + const { + commandName, + dataType, + image, + options, + snapshotTitle, + subject, + testFile, + } = data; + const actualFilename = getImageSnapshotFilename(testFile, snapshotTitle, IMAGE_TYPE_ACTUAL); + const diffFilename = getImageSnapshotFilename(testFile, snapshotTitle, IMAGE_TYPE_DIFF); + const config = merge({}, cloneDeep(getConfig()), options); + const snapshotFile = getImageSnapshotFilename(testFile, snapshotTitle); + const resized = options.imageConfig.resizeDevicePixelRatio && image.devicePixelRatio !== 1; + if (resized) { + await resizeImage(image.path, actualFilename, image.devicePixelRatio, snapshotFile); + } + if (resized === false) { + moveActualImageToSnapshotsDirectory(data); + } else { + image.path = actualFilename; + } + + const expected = getImageObject(snapshotFile); + const exists = expected !== false; + const autoPassed = (config.autopassNewSnapshots && expected === false); + const actual = exists || resized ? getImageObject(image.path, true) : image; + const passed = expected && compareImages(expected, actual, diffFilename, options); + + actual.resized = resized !== false; + + let updated = false; + + if ((config.updateSnapshots && !passed) || expected === false) { + saveImageSnapshot({ testFile, snapshotTitle, actual }); + updated = true; + } + + if (passed && actual && actual.path) { + rimraf(actual.path); + } + + const diff = passed || autoPassed || !options.createDiffImage ? + undefined : createDiffObject(diffFilename); + + const result = { + actual: getImageData(actual), + commandName, + dataType, + diff, + exists, + expected: getImageData(expected), + passed: passed || autoPassed, + snapshotFile: path.relative(process.cwd(), snapshotFile), + snapshotTitle, + subject, + updated, + isImage: true, + }; + + return result; +} + +module.exports = matchImageSnapshot; diff --git a/tasks/snapshots.js b/src/tasks/matchTextSnapshot.js similarity index 53% rename from tasks/snapshots.js rename to src/tasks/matchTextSnapshot.js index a855d33b..e31e0dd7 100644 --- a/tasks/snapshots.js +++ b/src/tasks/matchTextSnapshot.js @@ -2,48 +2,24 @@ const { merge, cloneDeep } = require('lodash'); +const applyReplace = require('../utils/tasks/applyReplace'); const { + createDiff, + formatDiff, getSnapshot, + subjectToSnapshot, updateSnapshot, -} = require('../utils/plugin'); +} = require('../utils/tasks/textSnapshots'); const { - createDiff, - formatDiff, getSnapshotFilename, - keepKeysFromExpected, - subjectToSnapshot, -} = require('../utils/snapshots'); +} = require('../utils/textSnapshots'); +const keepKeysFromExpected = require('../utils/keepKeysFromExpected'); const { getConfig } = require('../config'); -/** - * Apply optional `replace` functionality coming from `options` supplied to `toMatchSnapshot`. - * - * You can use either an object containing key/value pair or a function to handle replacement. - * - * @param {Object} expected - Object to replace values in - * @param {Object=} replace - Object containing replacements - * @returns {Object} - */ -function applyReplace(expected, replace) { - if (typeof expected !== 'object' || !replace) { - return expected; - } - - if (typeof replace === 'object') { - const jsonString = Object.keys(replace) - .reduce((result, key) => result.replace( - new RegExp(`\\$\\{${key}\\}`, 'g'), - replace[key] - ), JSON.stringify(expected)); - return JSON.parse(jsonString); - } - - return expected; -} - -function matchSnapshot({ +function matchTextSnapshot({ + commandName, dataType, options, snapshotTitle, @@ -71,6 +47,7 @@ function matchSnapshot({ const result = { actual, + commandName, diff, exists, expected, @@ -84,16 +61,4 @@ function matchSnapshot({ return result; } -function saveSnapshot({ - snapshotFile, - snapshotTitle, - subject -}) { - return updateSnapshot(snapshotFile, snapshotTitle, subject); -} - -module.exports = { - applyReplace, - matchSnapshot, - saveSnapshot, -} +module.exports = matchTextSnapshot; diff --git a/src/tasks/saveImageSnapshot.js b/src/tasks/saveImageSnapshot.js new file mode 100644 index 00000000..5997b233 --- /dev/null +++ b/src/tasks/saveImageSnapshot.js @@ -0,0 +1,23 @@ +const fs = require('fs-extra'); +const rimraf = require('rimraf').sync; +const { getImageSnapshotFilename } = require('../utils/imageSnapshots'); +const { IMAGE_TYPE_ACTUAL } = require('../constants'); + +function saveImageSnapshot(data) { + const { + testFile, + snapshotTitle, + } = data; + const filename = getImageSnapshotFilename(testFile, snapshotTitle); + const actualFilename = getImageSnapshotFilename(testFile, snapshotTitle, IMAGE_TYPE_ACTUAL); + rimraf(filename); + + if (fs.existsSync(actualFilename)) { + fs.moveSync(actualFilename, filename); + } + + data.saved = true; + return data; +} + +module.exports = saveImageSnapshot; diff --git a/src/tasks/saveTextSnapshot.js b/src/tasks/saveTextSnapshot.js new file mode 100644 index 00000000..a7e4dbd8 --- /dev/null +++ b/src/tasks/saveTextSnapshot.js @@ -0,0 +1,16 @@ +const { merge } = require('lodash'); +const { updateSnapshot } = require('../utils/tasks/textSnapshots'); + +function saveTextSnapshot(data) { + const { + snapshotFile, + snapshotTitle, + subject + } = data; + updateSnapshot(snapshotFile, snapshotTitle, subject); + return merge({}, data, { + saved: true + }); +} + +module.exports = saveTextSnapshot; diff --git a/src/tasks/taskNames.js b/src/tasks/taskNames.js new file mode 100644 index 00000000..bfc294b3 --- /dev/null +++ b/src/tasks/taskNames.js @@ -0,0 +1,7 @@ +module.exports = { + GET_FILE: 'cypress-plugin-snapshot:getFile', + MATCH_TEXT: 'cypress-plugin-snapshot:matchText', + MATCH_IMAGE: 'cypress-plugin-snapshot:matchImage', + SAVE_TEXT: 'cypress-plugin-snapshot:saveText', + SAVE_IMAGE: 'cypress-plugin-snapshot:saveImage', +}; diff --git a/ui.js b/src/ui.js similarity index 86% rename from ui.js rename to src/ui.js index fbfbaaca..a0e3c7ee 100644 --- a/ui.js +++ b/src/ui.js @@ -1,8 +1,10 @@ /* eslint-env browser */ +const { getServerUrl, CONFIG_KEY } = require('./config'); + const { GET_FILE, - SAVE, -} = require('./tasks/task-names'); + SAVE_TEXT, +} = require('./tasks/taskNames'); const { PATH_CSS, PATH_DIFF_CSS, @@ -10,13 +12,14 @@ const { PATH_JS, PATH_SOCKET_JS, PATH_BASE64_JS, -} = require('./tasks/paths'); -const { getServerUrl, CONFIG_KEY } = require('./config'); +} = require('./paths'); +const { NO_LOG } = require('./constants'); const FILE_CACHE = {}; + function readFile(fileType) { if (!FILE_CACHE[fileType]) { - FILE_CACHE[fileType] = cy.task(GET_FILE, fileType); + FILE_CACHE[fileType] = cy.task(GET_FILE, fileType, NO_LOG); } return FILE_CACHE[fileType]; } @@ -50,7 +53,7 @@ function initUi() { var socket = io('${getServerUrl(config)}'); return (data) => { - socket.emit('${SAVE}', data); + socket.emit('${SAVE_TEXT}', data); }; })(); `); diff --git a/src/utils/commands/cleanupSnapshots.js b/src/utils/commands/cleanupSnapshots.js new file mode 100644 index 00000000..b9dc5edb --- /dev/null +++ b/src/utils/commands/cleanupSnapshots.js @@ -0,0 +1,38 @@ +/* globals Cypress, before, after, cy */ +/* eslint-env browser */ +const { formatNormalizedJson, } = require('../../utils/json'); +const { + getSnapshotFilename, +} = require('../../utils/textSnapshots'); +const { snapshotTitleIsUsed } = require('../../utils/snapshotTitles'); +const getConfig = require('./getConfig'); +const { NO_LOG } = require('../../constants'); + +// Removes unused snapshots from snapshot file +function cleanUpSnapshots() { + const config = getConfig(); + if (!config.autoCleanUp) { + return; + } + + const filename = getSnapshotFilename(Cypress.spec.relative); + cy.readFile(filename, NO_LOG).then((content) => { + if (content) { + const snapshot = JSON.parse(content); + const keys = Object.keys(snapshot); + + const cleanSnapshot = keys + .filter(snapshotTitleIsUsed) + .reduce((result, key) => { + result[key] = snapshot[key]; + return result; + }, {}); + + cy.writeFile(filename, + formatNormalizedJson(cleanSnapshot), + NO_LOG); + } + }); +} + +module.exports = cleanUpSnapshots; diff --git a/src/utils/commands/getConfig.js b/src/utils/commands/getConfig.js new file mode 100644 index 00000000..88f59293 --- /dev/null +++ b/src/utils/commands/getConfig.js @@ -0,0 +1,29 @@ +/* globals Cypress, before, after, cy */ +/* eslint-env browser */ +const { CONFIG_KEY } = require('../../config'); + +/** + * Check if config in `Cypress.env` is stringified JSON. + * If so parse it and set the parsed value back in `Cypress.env`. + */ +function fixConfig() { + if (typeof Cypress === 'undefined') { + throw new Error('Please use from within Cypress.io'); + } + + if (typeof Cypress.env(CONFIG_KEY) === 'string') { + Cypress.env(CONFIG_KEY, JSON.parse(Cypress.env(CONFIG_KEY))); + } +} + +function getConfig() { + fixConfig(); + const config = Cypress.env(CONFIG_KEY); + if (!config) { + throw new Error('Config cannot be found.'); + } + + return config; +} + +module.exports = getConfig; diff --git a/src/utils/commands/getTaskData.js b/src/utils/commands/getTaskData.js new file mode 100644 index 00000000..43fec909 --- /dev/null +++ b/src/utils/commands/getTaskData.js @@ -0,0 +1,47 @@ +const getTestTitle = require('../getTestTitle'); +const { getSnapshotTitle } = require('../snapshotTitles'); +const { + getTestForTask, + getSubject, + isHtml, +} = require('./index'); +const { COMMAND_MATCH_IMAGE_SNAPSHOT } = require('../../commands/commandNames'); +const { TYPE_IMAGE, TYPE_JSON, TYPE_HTML } = require('../../dataTypes'); + +function isImage(commandName) { + return commandName === COMMAND_MATCH_IMAGE_SNAPSHOT; +} + +function getDataType({commandName, subject}) { + if (isImage(commandName)) { + return TYPE_IMAGE; + } + + return isHtml(subject) ? TYPE_HTML : TYPE_JSON; +} + +function getTaskData({ + commandName, + options, + subject: testSubject + } = {}) { + const subjectIsImage = isImage(commandName); + const test = getTestForTask(); + const testTitle = getTestTitle(test); + const testFile = Cypress.spec.absolute; + const snapshotTitle = getSnapshotTitle(test, subjectIsImage); + const subject = subjectIsImage ? testSubject : getSubject(testSubject); + const dataType = getDataType({commandName, subject: testSubject}); + + return { + commandName, + dataType, + options, + snapshotTitle, + subject, + testFile, + testTitle, + }; +} + +module.exports = getTaskData; diff --git a/utils/commands.js b/src/utils/commands/index.js similarity index 54% rename from utils/commands.js rename to src/utils/commands/index.js index ba21440f..c699292a 100644 --- a/utils/commands.js +++ b/src/utils/commands/index.js @@ -1,55 +1,5 @@ /* globals Cypress, before, after, cy */ /* eslint-env browser */ -const { - formatNormalizedJson, - getSnapshotFilename, - snapshotTitleIsUsed, -} = require('../utils/snapshots'); -const { - CONFIG_KEY -} = require('../config'); - -const NO_LOG = { - log: false -}; - -function getConfig() { - fixConfig(); - const config = Cypress.env(CONFIG_KEY); - if (!config) { - throw new Error('Config cannot be found.'); - } - - return config; -} - -// Removes unused snapshots from snapshot file -function cleanUpSnapshots() { - const config = getConfig(); - if (!config.autoCleanUp) { - return; - } - - const filename = getSnapshotFilename(Cypress.spec.relative); - cy.readFile(filename, NO_LOG).then((content) => { - if (content) { - const snapshot = JSON.parse(content); - const keys = Object.keys(snapshot); - - const cleanSnapshot = keys - .filter(snapshotTitleIsUsed) - .reduce((result, key) => { - result[key] = snapshot[key]; - return result; - }, {}); - - cy.writeFile(filename, - formatNormalizedJson(cleanSnapshot), - NO_LOG); - } - }); -} - function getTest() { return Cypress.mocha.getRunner().test; } @@ -65,16 +15,6 @@ function getTestForTask(test) { }; } -/** - * Check if config in `Cypress.env` is stringified JSON. - * If so parse it and set the parsed value back in `Cypress.env`. - */ -function fixConfig() { - if (typeof Cypress.env(CONFIG_KEY) === 'string') { - Cypress.env(CONFIG_KEY, JSON.parse(Cypress.env(CONFIG_KEY))); - } -} - function isElement(obj) { return obj && (obj instanceof Element || (obj.nodeType && obj.nodeType === 1)); } @@ -129,9 +69,6 @@ function isHtml(subject) { } module.exports = { - cleanUpSnapshots, - fixConfig, - getConfig, getSubject, getTest, getTestForTask, diff --git a/src/utils/commands/logMessage.js b/src/utils/commands/logMessage.js new file mode 100644 index 00000000..d2cdf7e6 --- /dev/null +++ b/src/utils/commands/logMessage.js @@ -0,0 +1,57 @@ +const { Base64 } = require('js-base64'); +const { cloneDeep } = require('lodash'); +const { URL_PREFIX } = require('../../constants'); +const { TYPE_IMAGE } = require('../../dataTypes'); + +function getErrorMessage(result) { + if (result.dataType === TYPE_IMAGE) { + return `Snapshots do not match.`; + } + + return `Snapshots do not match:\n${result.diff}`; +} + +function cleanupImage(image) { + if (image) { + image.path = image.relativePath; + delete image.relativePath; + } +} + +function getLogMessage(result) { + const linkResult = cloneDeep(result); + if (linkResult.isImage) { + cleanupImage(linkResult.actual); + cleanupImage(linkResult.expected); + cleanupImage(linkResult.diff); + } + + const args = Base64.encode(JSON.stringify(linkResult)); + const passedMessage = result.expected ? 'Snapshots match' : 'Snapshot created, autopassed'; + const message = result.passed ? + `[${passedMessage}](${URL_PREFIX}${args})` : + `[compare snapshot](${URL_PREFIX}${args})`; + + return message; +} + +function logMessage(result) { + const { subject } = result; + const message = getLogMessage(result); + const log = Cypress.log({ + $el: subject, + name: result.commandName, + displayName: 'snapshot', + message, + consoleProps: () => result, + }); + + if (!result.passed) { + log.set('state', 'failed'); + throw new Error(getErrorMessage(result)); + } + + return subject; +} + +module.exports = logMessage; diff --git a/src/utils/getTestTitle.js b/src/utils/getTestTitle.js new file mode 100644 index 00000000..866982e1 --- /dev/null +++ b/src/utils/getTestTitle.js @@ -0,0 +1,5 @@ +function getTestTitle(test) { + return (test.parent && test.parent.title ? `${getTestTitle(test.parent)} > ` : '') + test.title; +} + +module.exports = getTestTitle; diff --git a/src/utils/imageSnapshots.js b/src/utils/imageSnapshots.js new file mode 100644 index 00000000..df0aad34 --- /dev/null +++ b/src/utils/imageSnapshots.js @@ -0,0 +1,25 @@ +const path = require('path'); +const sanitizeFilename = require('sanitize-filename'); +const { DIR_IMAGE_SNAPSHOTS } = require('../constants'); + +function getImageData(props, devicePixelRatio = 1) { + return props ? { + height: props.height || props.dimensions && props.dimensions.height, + path: props.path, + devicePixelRatio, + relativePath: path.relative(process.cwd(), props.path), + width: props.width || props.dimensions && props.dimensions.width, + } : props; +} + +function getImageSnapshotFilename(testFile, snapshotTitle, type = '') { + const dir = path.join(path.dirname(testFile), DIR_IMAGE_SNAPSHOTS); + const fileType = type ? `.${type}` : ''; + const filename = sanitizeFilename(`${snapshotTitle}${fileType}.png`); + return path.join(dir, filename); +} + +module.exports = { + getImageData, + getImageSnapshotFilename, +}; diff --git a/src/utils/json.js b/src/utils/json.js new file mode 100644 index 00000000..eca9f048 --- /dev/null +++ b/src/utils/json.js @@ -0,0 +1,31 @@ +function formatJson(subject) { + return JSON.stringify(subject, undefined, 2); +} + +function formatNormalizedJson(subject) { + return formatJson(normalizeObject(subject)); +} + +function normalizeObject(subject) { + if (Array.isArray(subject)) { + return subject.map(normalizeObject); + } + + if (typeof subject === 'object' && subject !== null) { + const keys = Object.keys(subject); + keys.sort(); + + return keys.reduce((result, key) => { + result[key] = normalizeObject(subject[key]); + return result; + }, {}); + } + + return subject; +} + +module.exports = { + formatNormalizedJson, + formatJson, + normalizeObject, +}; diff --git a/src/utils/keepKeysFromExpected.js b/src/utils/keepKeysFromExpected.js new file mode 100644 index 00000000..890ffc21 --- /dev/null +++ b/src/utils/keepKeysFromExpected.js @@ -0,0 +1,36 @@ +/** + * Create new object based on `subject` that do only contains fields that exist in `expected` + * @param {Object} subject + * @param {Object} expected + * @returns {Object} + */ +function keepKeysFromExpected(subject, expected, keepConfig) { + const cfg = keepConfig; + + if (Array.isArray(expected) && Array.isArray(subject)) { + const origin = cfg.ignoreExtraArrayItems ? expected : subject; + + const result = origin + .filter((value, index) => index < subject.length) + .map((value, index) => keepKeysFromExpected(subject[index], expected[index] || value, cfg)); + + // Add extra items not existing in expected from subject to result + if (!cfg.ignoreExtraArrayItems && subject.length > expected.length) { + return [...result, ...subject.slice(result.length, subject.length)]; + } + + return result; + } + if (typeof expected === 'object' && typeof subject === 'object') { + const origin = cfg.ignoreExtraFields ? expected : subject; + return Object.keys(origin) + .reduce((result, key) => { + result[key] = keepKeysFromExpected(subject[key], expected[key], cfg); + return result; + }, {}); + } + + return subject; +} + +module.exports = keepKeysFromExpected; diff --git a/src/utils/removeExcludedFields.js b/src/utils/removeExcludedFields.js new file mode 100644 index 00000000..33b56b23 --- /dev/null +++ b/src/utils/removeExcludedFields.js @@ -0,0 +1,20 @@ +function removeExcludedFields(subject, excludedFields) { + if (excludedFields) { + if (Array.isArray(subject)) { + return subject.map(removeExcludedFields); + } + + if (typeof subject === 'object' && subject !== null) { + return Object.keys(subject) + .filter(key => excludedFields.indexOf(key) === -1) + .reduce((result, key) => { + result[key] = removeExcludedFields(subject[key]); + return result; + }, {}); + } + } + + return subject; +} + +module.exports = removeExcludedFields; diff --git a/src/utils/snapshotTitles.js b/src/utils/snapshotTitles.js new file mode 100644 index 00000000..d2ca60d9 --- /dev/null +++ b/src/utils/snapshotTitles.js @@ -0,0 +1,31 @@ +const getTestTitle = require('./getTestTitle'); + +const SNAPSHOTS_TEXT = {} +const SNAPSHOTS_IMAGE = {}; + +const SNAPSHOT_TITLES_TEXT = []; +const SNAPSHOT_TITLES_IMAGE = []; + +function snapshotTitleIsUsed(snapshotTitle, isImage = false) { + return (isImage ? SNAPSHOT_TITLES_IMAGE : SNAPSHOT_TITLES_TEXT).indexOf(snapshotTitle) !== -1; +} + +function getSnapshotTitle(test, isImage = false) { + const testTitle = getTestTitle(test); + const snapshots = isImage ? SNAPSHOTS_IMAGE : SNAPSHOTS_TEXT; + + if (snapshots[testTitle] !== undefined) { + snapshots[testTitle] += 1; + } else { + snapshots[testTitle] = 0; + } + + const snapshotTitle = `${testTitle} #${snapshots[testTitle]}`; + (isImage ? SNAPSHOT_TITLES_IMAGE : SNAPSHOT_TITLES_TEXT).push(snapshotTitle); + return snapshotTitle; +} + +module.exports = { + getSnapshotTitle, + snapshotTitleIsUsed +} diff --git a/src/utils/tasks/applyReplace.js b/src/utils/tasks/applyReplace.js new file mode 100644 index 00000000..78829fa7 --- /dev/null +++ b/src/utils/tasks/applyReplace.js @@ -0,0 +1,27 @@ +/** + * Apply optional `replace` functionality coming from `options` supplied to `toMatchSnapshot`. + * + * You can use either an object containing key/value pair or a function to handle replacement. + * + * @param {Object} expected - Object to replace values in + * @param {Object=} replace - Object containing replacements + * @returns {Object} + */ +function applyReplace(expected, replace) { + if (typeof expected !== 'object' || !replace) { + return expected; + } + + if (typeof replace === 'object') { + const jsonString = Object.keys(replace) + .reduce((result, key) => result.replace( + new RegExp(`\\$\\{${key}\\}`, 'g'), + replace[key] + ), JSON.stringify(expected)); + return JSON.parse(jsonString); + } + + return expected; +} + +module.exports = applyReplace; diff --git a/src/utils/tasks/imageSnapshots.js b/src/utils/tasks/imageSnapshots.js new file mode 100644 index 00000000..4121e359 --- /dev/null +++ b/src/utils/tasks/imageSnapshots.js @@ -0,0 +1,157 @@ +const { createHash } = require('crypto'); +const { PNG } = require('pngjs'); +const fs = require('fs-extra'); +const pixelmatch = require('pixelmatch'); +const { merge } = require('lodash'); +const rimraf = require('rimraf').sync; +const { getImageSnapshotFilename, getImageData } = require('../imageSnapshots'); +const { IMAGE_TYPE_ACTUAL } = require('../../constants'); +const { DEFAULT_IMAGE_CONFIG } = require('../../config'); + +function moveActualImageToSnapshotsDirectory({image, snapshotTitle, testFile} = {}) { + if (image && image.path) { + const filename = getImageSnapshotFilename(testFile, snapshotTitle, IMAGE_TYPE_ACTUAL); + rimraf(filename); + if (fs.existsSync(image.path)) { + fs.moveSync(image.path, filename); + } + image.path = filename; + } +} + +function createDiffObject(filename) { + const imageObject = getImageObject(filename, false); + return getImageData(imageObject); +} + +/** + * Create object containing `image`, `path`, `width`, `height` and `hash` + * property based on an image file. + * + * Returns false if file does not exist. + * + * @param {string} filename - Path to image to read + * @param {boolean} addHash - Add hash to result + */ +function getImageObject(filename, addHash = true) { + const exists = fs.existsSync(filename); + const size = exists ? fs.statSync(filename).size : 0; + + if (size > 0) { + const image = PNG.sync.read(fs.readFileSync(filename)); + const hash = addHash !== false ? + createHash('sha1').update(image.data).digest('base64') : undefined; + + return { + path: filename, + image, + hash, + height: image.height, + width: image.width, + }; + } + + return false; +} + +function createCompareCanvas(width, height, source) { + const canvas = new PNG({ + width, + height, + colorType: 6, + bgColor: { + red: 0, + green: 0, + blue: 0, + alpha: 0, + } + }); + PNG.bitblt(source, canvas, 0, 0, source.width, source.height, 0, 0); + return canvas; +} + +/** + * Create a canvas that can fit both `expected` and `actual` image. + * Makes it easier to compare images (and also nicer diff result). + * @param {*} expected + * @param {*} actual + */ +function makeImagesEqualSize(expected, actual) { + const height = Math.max(expected.height, actual.height); + const width = Math.max(expected.width, actual.width); + actual.image = createCompareCanvas(width, height, actual.image); + expected.image = createCompareCanvas(width, height, expected.image); +} + +function compareImageSizes(expected, actual) { + return expected.width === actual.width && + actual.height === expected.height; +} + +function compareImages(expected, actual, diffFilename, config) { + let passed = false; + rimraf(diffFilename); + + if (actual !== false) { + const hashMatches = expected.hash === actual.hash; + if (hashMatches) { + return true; + } + + const sizeMatch = compareImageSizes(expected, actual); + if (!sizeMatch) { + makeImagesEqualSize(expected, actual); + } + + const imageConfig = merge({}, DEFAULT_IMAGE_CONFIG, config); + const pixelmatchConfig = { + threshold: 0.01, + }; + + const imageWidth = actual.image.width; + const imageHeight = actual.image.height; + + const diffImage = config.createDiffImage ? new PNG({ + height: imageHeight, + width: imageWidth, + }) : null; + + const totalPixels = imageWidth * imageHeight; + const diffPixelCount = pixelmatch( + actual.image.data, + expected.image.data, + diffImage ? diffImage.data : null, + imageWidth, + imageHeight, + pixelmatchConfig + ); + + if (imageConfig.thresholdType === 'pixel') { + passed = diffPixelCount <= imageConfig.threshold; + } else if (imageConfig.thresholdType === 'percent') { + const diffRatio = diffPixelCount / totalPixels; + passed = diffRatio <= imageConfig.threshold; + } else { + throw new Error(`Unknown imageConfig.thresholdType: ${imageConfig.thresholdType}. `+ + `Valid options are "pixel" or "percent".`); + } + + if (!passed && diffImage) { + // Set filter type to Paeth to avoid expensive auto scanline filter detection + // For more information see https://www.w3.org/TR/PNG-Filters.html + const pngBuffer = PNG.sync.write(diffImage, { + filterType: 4 + }); + fs.writeFileSync(diffFilename, pngBuffer); + } + } + + return passed; +} + +module.exports = { + compareImages, + createDiffObject, + getImageObject, + moveActualImageToSnapshotsDirectory +}; diff --git a/src/utils/tasks/resizeImage.js b/src/utils/tasks/resizeImage.js new file mode 100644 index 00000000..a882fa92 --- /dev/null +++ b/src/utils/tasks/resizeImage.js @@ -0,0 +1,25 @@ +const Jimp = require('jimp'); +const fs = require('fs-extra'); +const imageSize = require('image-size'); + +function resizeImage(filename, targetFile, devicePixelRatio) { + if (devicePixelRatio !== 1 && fs.existsSync(filename)) { + const dimensions = imageSize(filename); + const height = Math.floor(dimensions.height / devicePixelRatio); + const width = Math.floor(dimensions.width / devicePixelRatio); + + return Jimp.read(filename) + .then(image => image + .resize(width, height) + .writeAsync(targetFile)) + .then(() => fs.remove(filename)) + .then(() => true) + .catch(err => { + throw new Error(err); + }); + } + + return Promise.resolve(false); +} + +module.exports = resizeImage; diff --git a/utils/plugin.js b/src/utils/tasks/textSnapshots.js similarity index 60% rename from utils/plugin.js rename to src/utils/tasks/textSnapshots.js index 45732d12..6d4018f2 100644 --- a/utils/plugin.js +++ b/src/utils/tasks/textSnapshots.js @@ -1,11 +1,59 @@ const path = require('path'); const fs = require('fs-extra'); const { merge } = require('lodash'); +const unidiff = require('unidiff'); +const prettier = require('prettier'); +const { TYPE_JSON } = require('../../dataTypes'); const { - formatJson, - subjectToSnapshot, -} = require('./snapshots'); -const { TYPE_JSON } = require('../constants'); + getConfig, + shouldNormalize, + getPrettierConfig +} = require('../../config'); +const removeExcludedFields = require('../removeExcludedFields'); +const { formatJson, normalizeObject } = require('../json'); + +function subjectToSnapshot(subject, dataType = TYPE_JSON) { + const config = getConfig(); + let result = subject; + + if (typeof subject === 'object' && shouldNormalize(dataType)) { + result = normalizeObject(subject); + } + + if (dataType === TYPE_JSON) { + result = removeExcludedFields(result, config.excludeFields); + } + + const prettierConfig = getPrettierConfig(dataType); + if (prettierConfig) { + try { + if (typeof result === 'object') { + result = JSON.stringify(result, undefined, 2); + } + + result = prettier.format(result.trim(), prettierConfig).trim(); + } catch(err) { + throw new Error(`Cannot format subject: ${result}`); + } + } + + return result; +} + +function formatDiff(subject) { + if (typeof subject === 'object') { + return formatJson(subject); + } + return String(subject || ''); +} + +function createDiff(expected, actual, snapshotTitle) { + return unidiff.diffAsText(formatDiff(expected), formatDiff(actual), { + aname: snapshotTitle, + bname: snapshotTitle, + context: getConfig().diffLines, + }); +} function getSnapshot(filename, snapshotTitle, dataType = TYPE_JSON) { fs.ensureDirSync(path.dirname(filename)); @@ -29,6 +77,7 @@ function readFile(filename) { // eslint-disable-next-line import/no-dynamic-require content = require(filename); } catch(ex) { + // eslint-disable-next-line no-console console.warn(`Cannot read snapshot file "${filename}" as javascript, falling back to JSON parser:`, ex); const fileContents = fs.readFileSync(filename, 'utf8'); @@ -76,7 +125,10 @@ function saveSnapshot(data) { } module.exports = { + createDiff, + formatDiff, getSnapshot, saveSnapshot, + subjectToSnapshot, updateSnapshot, }; diff --git a/src/utils/textSnapshots.js b/src/utils/textSnapshots.js new file mode 100644 index 00000000..e19fb7a8 --- /dev/null +++ b/src/utils/textSnapshots.js @@ -0,0 +1,12 @@ +const path = require('path'); +const { DIR_SNAPSHOTS } = require('../constants'); + +function getSnapshotFilename(testFile) { + const dir = path.join(path.dirname(testFile), DIR_SNAPSHOTS); + const filename = `${path.basename(testFile)}.snap`; + return path.join(dir, filename); +} + +module.exports = { + getSnapshotFilename, +}; diff --git a/tasks/index.js b/tasks/index.js deleted file mode 100644 index 98cc085f..00000000 --- a/tasks/index.js +++ /dev/null @@ -1,13 +0,0 @@ -const { - GET_FILE, - MATCH, - SAVE -} = require('./task-names'); -const { matchSnapshot, saveSnapshot } = require('./snapshots'); -const { getFile } = require('./get-file'); - -module.exports = { - [GET_FILE]: getFile, - [MATCH]: matchSnapshot, - [SAVE]: saveSnapshot, -} diff --git a/tasks/task-names.js b/tasks/task-names.js deleted file mode 100644 index f2780d24..00000000 --- a/tasks/task-names.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - GET_FILE: 'cypress-plugin-snapshot:getFile', - MATCH: 'cypress-plugin-snapshot:match', - SAVE: 'cypress-plugin-snapshot:save', -}; diff --git a/utils/snapshots.js b/utils/snapshots.js deleted file mode 100644 index 36a02ec1..00000000 --- a/utils/snapshots.js +++ /dev/null @@ -1,176 +0,0 @@ -const unidiff = require('unidiff'); -const path = require('path'); -const prettier = require('prettier'); -const { - getConfig, - shouldNormalize, - getPrettierConfig -} = require('../config'); -const { TYPE_JSON } = require('../constants'); - -const SNAPSHOTS = []; -const SNAPSHOT_TITLES = []; - -function getSnapshotFilename(testFile) { - const dir = path.join(path.dirname(testFile), '__snapshots__'); - const filename = `${path.basename(testFile)}.snap`; - return path.join(dir, filename); -} - -function getTestTitle(test) { - return (test.parent && test.parent.title ? `${getTestTitle(test.parent)} > ` : '') + test.title; -} - -function snapshotTitleIsUsed(snapshotTitle) { - return SNAPSHOT_TITLES.indexOf(snapshotTitle) !== -1; -} - -function getSnapshotTitle(test) { - const testTitle = getTestTitle(test); - - if (SNAPSHOTS[testTitle] !== undefined) { - SNAPSHOTS[testTitle] += 1; - } else { - SNAPSHOTS[testTitle] = 0; - } - - const snapshotTitle = `${testTitle} #${SNAPSHOTS[testTitle]}`; - SNAPSHOT_TITLES.push(snapshotTitle); - return snapshotTitle; -} - -function formatJson(subject) { - return JSON.stringify(subject, undefined, 2); -} - -function formatNormalizedJson(subject) { - return formatJson(normalizeObject(subject)); -} - -function normalizeObject(subject) { - if (Array.isArray(subject)) { - return subject.map(normalizeObject); - } - - if (typeof subject === 'object' && subject !== null) { - const keys = Object.keys(subject); - keys.sort(); - - return keys.reduce((result, key) => { - result[key] = normalizeObject(subject[key]); - return result; - }, {}); - } - - return subject; -} - -function removeExcludedFields(subject) { - const excludedFields = getConfig().excludeFields; - if (excludedFields) { - if (Array.isArray(subject)) { - return subject.map(removeExcludedFields); - } - - if (typeof subject === 'object' && subject !== null) { - return Object.keys(subject) - .filter(key => excludedFields.indexOf(key) === -1) - .reduce((result, key) => { - result[key] = removeExcludedFields(subject[key]); - return result; - }, {}); - } - } - - return subject; -} - -function subjectToSnapshot(subject, dataType = TYPE_JSON) { - let result = subject; - - if (typeof subject === 'object' && shouldNormalize(dataType)) { - result = normalizeObject(subject); - } - - if (dataType === TYPE_JSON) { - result = removeExcludedFields(result); - } - - const prettierConfig = getPrettierConfig(dataType); - if (prettierConfig) { - try { - if (typeof result === 'object') { - result = JSON.stringify(result, undefined, 2); - } - - result = prettier.format(result.trim(), prettierConfig).trim(); - } catch(err) { - throw new Error(`Cannot format subject: ${result}`); - } - } - - return result; -} - -function formatDiff(subject) { - if (typeof subject === 'object') { - return formatJson(subject); - } - return String(subject || ''); -} - -function createDiff(expected, actual, snapshotTitle) { - return unidiff.diffAsText(formatDiff(expected), formatDiff(actual), { - aname: snapshotTitle, - bname: snapshotTitle, - context: getConfig().diffLines, - }); -} - -/** - * Create new object based on `subject` that do only contains fields that exist in `expected` - * @param {Object} subject - * @param {Object} expected - * @returns {Object} - */ -function keepKeysFromExpected(subject, expected, keepConfig) { - const cfg = keepConfig || getConfig(); - - if (Array.isArray(expected) && Array.isArray(subject)) { - const origin = cfg.ignoreExtraArrayItems ? expected : subject; - - const result = origin - .filter((value, index) => index < subject.length) - .map((value, index) => keepKeysFromExpected(subject[index], expected[index] || value, cfg)); - - // Add extra items not existing in expected from subject to result - if (!cfg.ignoreExtraArrayItems && subject.length > expected.length) { - return [...result, ...subject.slice(result.length, subject.length)]; - } - - return result; - } - if (typeof expected === 'object' && typeof subject === 'object') { - const origin = cfg.ignoreExtraFields ? expected : subject; - return Object.keys(origin) - .reduce((result, key) => { - result[key] = keepKeysFromExpected(subject[key], expected[key], cfg); - return result; - }, {}); - } - - return subject; -} - -module.exports = { - createDiff, - formatDiff, - formatJson, - formatNormalizedJson, - getSnapshotFilename, - getSnapshotTitle, - getTestTitle, - keepKeysFromExpected, - snapshotTitleIsUsed, - subjectToSnapshot, -};
+

Lorem Ipsum

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer dignissim, odio sed interdum porta, urna ex ultricies tellus, non fringilla purus nulla nec augue. Vivamus eget iaculis lorem. Proin blandit dictum enim, vitae efficitur arcu euismod a. Sed sodales nisi volutpat dui convallis ullamcorper. Aenean eget semper metus. Curabitur quis imperdiet lorem. Ut vitae mauris augue. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut rhoncus augue et scelerisque malesuada. Pellentesque bibendum sit amet tellus sit amet pellentesque. Maecenas eu magna dapibus, tristique est nec, ornare libero. Sed consectetur consequat nisi.

+

Curabitur finibus quam

+

Curabitur finibus quam quam, in viverra nulla dapibus sed. Praesent cursus nec erat ut tempor. Donec pharetra rutrum aliquam. Mauris eget gravida quam. Aenean sodales eros a felis lobortis faucibus. Donec sed luctus purus. Nullam nisi ipsum, scelerisque at felis eu, aliquam condimentum ex. Quisque nec orci at justo faucibus maximus. Suspendisse lobortis id mauris in pellentesque. Praesent et dolor ultricies, vestibulum ipsum vel, auctor lacus. Nullam nec dui id arcu consectetur aliquam.

+