diff --git a/back/methods/starred-module/getStarredModules.js b/back/methods/starred-module/getStarredModules.js new file mode 100644 index 000000000..88c0fa8a9 --- /dev/null +++ b/back/methods/starred-module/getStarredModules.js @@ -0,0 +1,28 @@ +module.exports = function(Self) { + Self.remoteMethodCtx('getStarredModules', { + description: 'returns the starred modules for the current user', + accessType: 'READ', + returns: { + type: 'object', + root: true + }, + http: { + path: `/getStarredModules`, + verb: 'get' + } + }); + + Self.getStarredModules = async ctx => { + const userId = ctx.req.accessToken.userId; + const filter = { + where: { + workerFk: userId + }, + fields: ['moduleFk'] + }; + + const starredModules = await Self.app.models.StarredModule.find(filter); + + return starredModules; + }; +}; diff --git a/back/methods/starred-module/specs/getStarredModules.spec.js b/back/methods/starred-module/specs/getStarredModules.spec.js new file mode 100644 index 000000000..c39ed57e9 --- /dev/null +++ b/back/methods/starred-module/specs/getStarredModules.spec.js @@ -0,0 +1,31 @@ +const app = require('vn-loopback/server/server'); +const LoopBackContext = require('loopback-context'); + +describe('getStarredModules()', () => { + const activeCtx = { + accessToken: {userId: 9}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + const ctx = {req: activeCtx}; + + beforeEach(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + + it(`should return the starred modules for a given user`, async() => { + const newStarred = await app.models.StarredModule.create({workerFk: 9, moduleFk: 'Clients'}); + const starredModules = await app.models.StarredModule.getStarredModules(ctx); + + expect(starredModules.length).toEqual(1); + expect(starredModules[0].moduleFk).toEqual('Clients'); + + // restores + await app.models.StarredModule.destroyById(newStarred.id); + }); +}); diff --git a/back/methods/starred-module/specs/toggleStarredModule.spec.js b/back/methods/starred-module/specs/toggleStarredModule.spec.js new file mode 100644 index 000000000..a765a29a0 --- /dev/null +++ b/back/methods/starred-module/specs/toggleStarredModule.spec.js @@ -0,0 +1,36 @@ +const app = require('vn-loopback/server/server'); +const LoopBackContext = require('loopback-context'); + +describe('toggleStarredModule()', () => { + const activeCtx = { + accessToken: {userId: 9}, + http: { + req: { + headers: {origin: 'http://localhost'} + } + } + }; + const ctx = { + req: activeCtx + }; + + beforeEach(() => { + spyOn(LoopBackContext, 'getCurrentContext').and.returnValue({ + active: activeCtx + }); + }); + + it('should create a new starred module and then remove it by calling the method again with same args', async() => { + const starredModule = await app.models.StarredModule.toggleStarredModule(ctx, 'Orders'); + let starredModules = await app.models.StarredModule.getStarredModules(ctx); + + expect(starredModules.length).toEqual(1); + expect(starredModule.moduleFk).toEqual('Orders'); + expect(starredModule.workerFk).toEqual(activeCtx.accessToken.userId); + + await app.models.StarredModule.toggleStarredModule(ctx, 'Orders'); + starredModules = await app.models.StarredModule.getStarredModules(ctx); + + expect(starredModules.length).toEqual(0); + }); +}); diff --git a/back/methods/starred-module/toggleStarredModule.js b/back/methods/starred-module/toggleStarredModule.js new file mode 100644 index 000000000..38d82eba4 --- /dev/null +++ b/back/methods/starred-module/toggleStarredModule.js @@ -0,0 +1,41 @@ +module.exports = function(Self) { + Self.remoteMethodCtx('toggleStarredModule', { + description: 'creates or deletes a starred module for the current user', + accessType: 'WRITE', + returns: { + type: 'object', + root: true + }, + accepts: { + arg: 'moduleName', + type: 'string', + required: true, + description: 'The module name' + }, + http: { + path: `/toggleStarredModule`, + verb: 'post' + } + }); + + Self.toggleStarredModule = async(ctx, moduleName) => { + const userId = ctx.req.accessToken.userId; + const filter = { + where: { + workerFk: userId, + moduleFk: moduleName + } + }; + + const [starredModule] = await Self.app.models.StarredModule.find(filter); + + if (starredModule) + await starredModule.destroy(); + else { + return Self.app.models.StarredModule.create({ + workerFk: userId, + moduleFk: moduleName + }); + } + }; +}; diff --git a/back/model-config.json b/back/model-config.json index 7759c32fa..418cd4d1f 100644 --- a/back/model-config.json +++ b/back/model-config.json @@ -59,6 +59,9 @@ "Language": { "dataSource": "vn" }, + "Module": { + "dataSource": "vn" + }, "Province": { "dataSource": "vn" }, @@ -71,6 +74,9 @@ "SageWithholding": { "dataSource": "vn" }, + "StarredModule": { + "dataSource": "vn" + }, "TempContainer": { "dataSource": "tempStorage" }, diff --git a/back/models/module.json b/back/models/module.json new file mode 100644 index 000000000..c66649b2e --- /dev/null +++ b/back/models/module.json @@ -0,0 +1,23 @@ +{ + "name": "Module", + "base": "VnModel", + "options": { + "mysql": { + "table": "salix.module" + } + }, + "properties": { + "code": { + "type": "string", + "id": true + } + }, + "acls": [ + { + "accessType": "READ", + "principalType": "ROLE", + "principalId": "$everyone", + "permission": "ALLOW" + } + ] +} diff --git a/back/models/starred-module.js b/back/models/starred-module.js new file mode 100644 index 000000000..f153003ca --- /dev/null +++ b/back/models/starred-module.js @@ -0,0 +1,4 @@ +module.exports = Self => { + require('../methods/starred-module/getStarredModules')(Self); + require('../methods/starred-module/toggleStarredModule')(Self); +}; diff --git a/back/models/starred-module.json b/back/models/starred-module.json new file mode 100644 index 000000000..e383fa17a --- /dev/null +++ b/back/models/starred-module.json @@ -0,0 +1,35 @@ +{ + "name": "StarredModule", + "base": "VnModel", + "options": { + "mysql": { + "table": "vn.starredModule" + } + }, + "properties": { + "id": { + "type": "number", + "id": true + }, + "workerFk": { + "type": "number", + "required": true + }, + "moduleFk": { + "type": "string", + "required": true + } + }, + "relations": { + "worker": { + "type": "belongsTo", + "model": "Worker", + "foreignKey": "workerFk" + }, + "module": { + "type": "belongsTo", + "model": "Module", + "foreignKey": "moduleFk" + } + } +} \ No newline at end of file diff --git a/db/changes/10290-invoiceIn/00-ACL.sql b/db/changes/10290-invoiceIn/00-ACL.sql new file mode 100644 index 000000000..661eb0d48 --- /dev/null +++ b/db/changes/10290-invoiceIn/00-ACL.sql @@ -0,0 +1,3 @@ +INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`) + VALUES + ('StarredModule', '*', '*', 'ALLOW', 'ROLE', 'employee'); diff --git a/db/changes/10290-invoiceIn/00-module.sql b/db/changes/10290-invoiceIn/00-module.sql new file mode 100644 index 000000000..780a0e7fe --- /dev/null +++ b/db/changes/10290-invoiceIn/00-module.sql @@ -0,0 +1,20 @@ +CREATE TABLE `salix`.`module` ( + `code` VARCHAR(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + +INSERT INTO `salix`.`module`(`code`) + VALUES + ('Items'), + ('Orders'), + ('Clients'), + ('Entries'), + ('Travels'), + ('Invoices out'), + ('Suppliers'), + ('Claims'), + ('Routes'), + ('Tickets'), + ('Workers'), + ('Users'), + ('Zones'); \ No newline at end of file diff --git a/db/changes/10290-invoiceIn/01-starredModule.sql b/db/changes/10290-invoiceIn/01-starredModule.sql new file mode 100644 index 000000000..e36777030 --- /dev/null +++ b/db/changes/10290-invoiceIn/01-starredModule.sql @@ -0,0 +1,10 @@ +CREATE TABLE `vn`.`starredModule` ( + `id` INT(11) unsigned NOT NULL AUTO_INCREMENT, + `workerFk` INT(10) NOT NULL, + `moduleFk` VARCHAR(45) COLLATE utf8_unicode_ci NOT NULL, + PRIMARY KEY (`id`), + KEY `starred_workerFk` (`workerFk`), + KEY `starred_moduleFk` (`moduleFk`), + CONSTRAINT `starred_workerFk` FOREIGN KEY (`workerFk`) REFERENCES `vn`.`worker` (`id`) ON UPDATE CASCADE, + CONSTRAINT `starred_moduleFk` FOREIGN KEY (`moduleFk`) REFERENCES `salix`.`module` (`code`) ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; \ No newline at end of file diff --git a/e2e/helpers/selectors.js b/e2e/helpers/selectors.js index ca521f445..4e512ee56 100644 --- a/e2e/helpers/selectors.js +++ b/e2e/helpers/selectors.js @@ -23,6 +23,11 @@ export default { acceptButton: '.vn-confirm.shown button[response=accept]', searchButton: 'vn-searchbar vn-icon[icon="search"]' }, + moduleIndex: { + anyStarredModule: 'vn-home > div:nth-child(1) > div.modules > a', + firstModulePinIcon: 'vn-home a:nth-child(1) vn-icon[icon="push_pin"]', + firstModuleRemovePinIcon: 'vn-home a:nth-child(1) vn-icon[icon="remove_circle"]' + }, clientsIndex: { createClientButton: `vn-float-button` }, diff --git a/e2e/paths/01-login/01_login.spec.js b/e2e/paths/01-salix/01_login.spec.js similarity index 100% rename from e2e/paths/01-login/01_login.spec.js rename to e2e/paths/01-salix/01_login.spec.js diff --git a/e2e/paths/01-salix/02_starred-modules.spec.js b/e2e/paths/01-salix/02_starred-modules.spec.js new file mode 100644 index 000000000..a64b68582 --- /dev/null +++ b/e2e/paths/01-salix/02_starred-modules.spec.js @@ -0,0 +1,43 @@ +import selectors from '../../helpers/selectors'; +import getBrowser from '../../helpers/puppeteer'; + +describe('Starred modules path', async() => { + let browser; + let page; + + beforeAll(async() => { + browser = await getBrowser(); + page = browser.page; + await page.login('employee'); + }); + + afterAll(async() => { + await browser.close(); + }); + + it('should make sure there are no modules pinned yet', async() => { + const count = await page.countElement(selectors.moduleIndex.anyStarredModule); + + expect(count).toEqual(0); + }); + + it('should set a module as favore', async() => { + await page.waitToClick(selectors.moduleIndex.firstModulePinIcon); + const message = await page.waitForSnackbar(); + const count = await page.countElement(selectors.moduleIndex.anyStarredModule); + + expect(message.text).toContain('Data saved!'); + + expect(count).toEqual(1); + }); + + it('should remove the module from favores', async() => { + await page.waitToClick(selectors.moduleIndex.firstModuleRemovePinIcon); + const message = await page.waitForSnackbar(); + const count = await page.countElement(selectors.moduleIndex.anyStarredModule); + + expect(message.text).toContain('Data saved!'); + + expect(count).toEqual(0); + }); +}); diff --git a/front/salix/components/home/home.html b/front/salix/components/home/home.html index ada51d76f..2904d7d70 100644 --- a/front/salix/components/home/home.html +++ b/front/salix/components/home/home.html @@ -1,20 +1,67 @@
+
+ Favorites +
+
+ You can set modules as favorites by clicking their icon + +
- -
- -
-

- - ({{::mod.keyBind}}) - -   -
+ +
+ +
+
+ +
+

+ + ({{::mod.keyBind}}) + +   +
+
+
+
+
+
+
+ +
+ +
+
+ +
+

+ + ({{::mod.keyBind}}) + +   +
diff --git a/front/salix/components/home/home.js b/front/salix/components/home/home.js index 3da49a265..90eed2b30 100644 --- a/front/salix/components/home/home.js +++ b/front/salix/components/home/home.js @@ -9,6 +9,55 @@ export default class Controller extends Component { this.$sce = $sce; } + get modules() { + return this._modules; + } + + set modules(value) { + this._modules = value; + this.getStarredModules(); + } + + countModules() { + this.starredCount = 0; + this.regularCount = 0; + this.modules.forEach(module => { + if (module.starred) this.starredCount ++; + else this.regularCount ++; + }); + } + + getStarredModules() { + this.$http.get('starredModules/getStarredModules') + .then(res => { + if (!res.data.length) return; + + for (let starredModule of res.data) { + const module = this.modules.find(mod => mod.name === starredModule.moduleFk); + module.starred = true; + } + this.countModules(); + }); + } + + toggleStarredModule(module, event) { + if (event.defaultPrevented) return; + event.preventDefault(); + event.stopPropagation(); + + const params = {moduleName: module.name}; + const query = `starredModules/toggleStarredModule`; + this.$http.post(query, params).then(res => { + if (res.data) + module.starred = true; + else + module.starred = false; + + this.vnApp.showSuccess(this.$t('Data saved!')); + this.countModules(); + }); + } + getModuleName(mod) { let getName = mod => { let name = this.$t(mod.name); diff --git a/front/salix/components/home/home.spec.js b/front/salix/components/home/home.spec.js new file mode 100644 index 000000000..09cb7e39b --- /dev/null +++ b/front/salix/components/home/home.spec.js @@ -0,0 +1,75 @@ +import './home'; + +describe('Salix Component vnHome', () => { + let controller; + let $httpBackend; + let $scope; + let $element; + + beforeEach(ngModule('salix')); + + beforeEach(inject(($componentController, $rootScope, _$httpBackend_, _vnApp_, $window) => { + $httpBackend = _$httpBackend_; + $scope = $rootScope.$new(); + $element = angular.element(''); + $window.routes = [{module: 'client', name: 'Clients'}]; + controller = $componentController('vnHome', {$element, $scope, $window}); + })); + + describe('getStarredModules()', () => { + it('should not set any of the modules as starred if there are no starred modules for the user', () => { + const expectedResponse = []; + controller._modules = [{module: 'client', name: 'Clients'}]; + + $httpBackend.whenRoute('GET', 'starredModules/getStarredModules').respond(expectedResponse); + $httpBackend.expectGET('starredModules/getStarredModules').respond(expectedResponse); + controller.getStarredModules(); + $httpBackend.flush(); + + expect(controller._modules.length).toEqual(1); + expect(controller._modules[0].starred).toBeUndefined(); + }); + + it('should set the example module as starred since its the starred module for the user', () => { + const expectedResponse = [{id: 1, moduleFk: 'Clients', workerFk: 9}]; + controller._modules = [{module: 'client', name: 'Clients'}]; + + $httpBackend.whenRoute('GET', 'starredModules/getStarredModules').respond(expectedResponse); + $httpBackend.expectGET('starredModules/getStarredModules').respond(expectedResponse); + controller.getStarredModules(); + $httpBackend.flush(); + + expect(controller._modules.length).toEqual(1); + expect(controller._modules[0].starred).toBe(true); + }); + }); + + describe('toggleStarredModule()', () => { + it(`should set the received module as starred if it wasn't starred`, () => { + const expectedResponse = [{id: 1, moduleFk: 'Clients', workerFk: 9}]; + const event = new Event('target'); + controller._modules = [{module: 'client', name: 'Clients'}]; + + $httpBackend.whenRoute('GET', 'starredModules/getStarredModules').respond(expectedResponse); + $httpBackend.expectPOST('starredModules/toggleStarredModule').respond(expectedResponse); + controller.toggleStarredModule(controller._modules[0], event); + $httpBackend.flush(); + + expect(controller._modules.length).toEqual(1); + expect(controller._modules[0].starred).toBe(true); + }); + + it(`should set the received module as regular if it was starred`, () => { + const event = new Event('target'); + controller._modules = [{module: 'client', name: 'Clients', starred: true}]; + + $httpBackend.whenRoute('GET', 'starredModules/getStarredModules').respond([]); + $httpBackend.expectPOST('starredModules/toggleStarredModule').respond(undefined); + controller.toggleStarredModule(controller._modules[0], event); + $httpBackend.flush(); + + expect(controller._modules.length).toEqual(1); + expect(controller._modules[0].starred).toBe(false); + }); + }); +}); diff --git a/front/salix/components/home/locale/es.yml b/front/salix/components/home/locale/es.yml new file mode 100644 index 000000000..aab63f17e --- /dev/null +++ b/front/salix/components/home/locale/es.yml @@ -0,0 +1,4 @@ +Favorites: Favoritos +You can set modules as favorites by clicking their icon: Puedes establecer módulos como favoritos haciendo clic en el icono +Add to favorites: Añadir a favoritos. +Remove from favorites: Quitar de favoritos. \ No newline at end of file diff --git a/front/salix/components/home/style.scss b/front/salix/components/home/style.scss index 7524d2be3..c8ef6457f 100644 --- a/front/salix/components/home/style.scss +++ b/front/salix/components/home/style.scss @@ -10,28 +10,76 @@ vn-home { text-align: center; margin-bottom: 15px; } + + & .starred-info{ + display: block; + text-align: center; + box-sizing: border-box; + color: $color-font-secondary; + font-size: 1.375rem; + & > .empty { + text-align: center; + box-sizing: border-box; + color: $color-font-secondary; + font-size: 1em; + } + & > vn-icon { + font-size: 1.2rem; + } + } + + & > .top-border { + margin: 0 auto; + flex-direction: row; + float: center; + max-width: 690px; + border-bottom: 2px solid $color-font-secondary; + line-height: 2px; + + > span { + height: 10px; + margin-left: 30px; + background-color: $color-bg; + padding:0 11px; + } + } + & > .modules { + padding: 10px 0 10px 0; display: flex; - flex: 1; - flex-direction: row; - justify-content: center; flex-wrap: wrap; + flex: 1; max-width: 704px; margin: 0 auto; & > a { @extend %clickable-light; - overflow:hidden; - border-radius: 6px; - background-color: $color-button; - color: $color-font-dark; display: flex; flex-direction: column; + overflow:hidden; + justify-content: center; + border-radius: 6px; height: 128px; width: 128px; margin: 8px; padding: 16px; - justify-content: center; + background-color: $color-button; + color: $color-font-dark; + + & .pin { + opacity: 0; + flex-direction: row; + justify-content: left; + height: 20px; + width: 20px; + vn-icon { + margin: auto; + font-size: 1.5rem; + } + } + &:hover .pin { + opacity: 1; + } & > div { height: 70px; @@ -56,10 +104,6 @@ vn-home { color: inherit; margin: 0; line-height: 24px; - - /* & > .bind-letter { - color: #FD0; - } */ } } } diff --git a/package-lock.json b/package-lock.json index 40780aaf6..926d0be5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3482,13 +3482,6 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -4284,13 +4277,6 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -4649,13 +4635,6 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -5268,7 +5247,6 @@ "version": "2.9.1", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", - "dev": true, "optional": true, "requires": { "@types/node": "*" @@ -7261,8 +7239,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" }, "buffer-equal": { "version": "1.0.0", @@ -7554,6 +7531,18 @@ "path-is-absolute": "^1.0.0", "readdirp": "^2.2.1", "upath": "^1.1.1" + }, + "dependencies": { + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1" + } + } } }, "chownr": { @@ -8562,10 +8551,9 @@ "dev": true }, "devtools-protocol": { - "version": "0.0.818844", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.818844.tgz", - "integrity": "sha512-AD1hi7iVJ8OD0aMLQU5VK0XH9LDlA1+BcPIgrAxPfaibx2DbWucuyOhc4oyQCbnvDDO68nN6/LcKfqTP343Jjg==", - "dev": true + "version": "0.0.847576", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.847576.tgz", + "integrity": "sha512-0M8kobnSQE0Jmly7Mhbeq0W/PpZfnuK+WjN2ZRVPbGqYwCHCioAVp84H0TcLimgECcN5H976y5QiXMGBC9JKmg==" }, "diff": { "version": "1.4.0", @@ -9881,7 +9869,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, "requires": { "@types/yauzl": "^2.9.1", "debug": "^4.1.1", @@ -9893,7 +9880,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -9902,7 +9888,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, "requires": { "pump": "^3.0.0" } @@ -9910,8 +9895,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -9999,7 +9983,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, "requires": { "pend": "~1.2.0" } @@ -10376,552 +10359,11 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": 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" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": 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, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "fstream": { "version": "1.0.12", @@ -11113,7 +10555,6 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14635,13 +14076,6 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -15754,13 +15188,6 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -16831,13 +16258,6 @@ "to-regex-range": "^5.0.1" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -17263,13 +16683,6 @@ "path-exists": "^4.0.0" } }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -18367,6 +17780,7 @@ "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -20773,6 +20187,16 @@ "ms": "^2.1.1" } }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -21160,7 +20584,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, "requires": { "p-try": "^2.0.0" } @@ -21447,8 +20870,7 @@ "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, "performance-now": { "version": "2.1.0", @@ -21791,8 +21213,7 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, "promise-inflight": { "version": "1.0.1", @@ -21822,8 +21243,7 @@ "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "prr": { "version": "1.0.1", @@ -21906,19 +21326,18 @@ } }, "puppeteer": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-5.5.0.tgz", - "integrity": "sha512-OM8ZvTXAhfgFA7wBIIGlPQzvyEETzDjeRa4mZRCRHxYL+GNH5WAuYUQdja3rpWZvkX/JKqmuVgbsxDNsDFjMEg==", - "dev": true, + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-7.1.0.tgz", + "integrity": "sha512-lqOLzqCKdh7yUAHvK6LxgOpQrL8Bv1/jvS8MLDXxcNms2rlM3E8p/Wlwc7efbRZ0twxTzUeqjN5EqrTwxOwc9g==", "requires": { "debug": "^4.1.0", - "devtools-protocol": "0.0.818844", + "devtools-protocol": "0.0.847576", "extract-zip": "^2.0.0", - "https-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", "node-fetch": "^2.6.1", "pkg-dir": "^4.2.0", "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", + "proxy-from-env": "^1.1.0", "rimraf": "^3.0.2", "tar-fs": "^2.0.0", "unbzip2-stream": "^1.3.3", @@ -21926,16 +21345,17 @@ }, "dependencies": { "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } }, "debug": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -21944,19 +21364,17 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" } }, "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", "requires": { - "agent-base": "5", + "agent-base": "6", "debug": "4" } }, @@ -21964,7 +21382,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, "requires": { "p-locate": "^4.1.0" } @@ -21972,14 +21389,12 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, "requires": { "p-limit": "^2.2.0" } @@ -21987,14 +21402,12 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, "requires": { "find-up": "^4.0.0" } @@ -22003,16 +21416,14 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } }, "ws": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", - "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==", - "dev": true + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.3.tgz", + "integrity": "sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA==" } } }, @@ -22529,7 +21940,22 @@ "resolved": "https://registry.npmjs.org/require-yaml/-/require-yaml-0.0.1.tgz", "integrity": "sha1-LhsY2RPDuqcqWk03O28Tjd0sMr0=", "requires": { - "js-yaml": "^3.13.1" + "js-yaml": "^4.0.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "requires": { + "argparse": "^2.0.1" + } + } } }, "requires-port": { @@ -25174,7 +24600,6 @@ "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, "requires": { "buffer": "^5.2.1", "through": "^2.3.8" @@ -25183,14 +24608,12 @@ "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, "requires": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -25926,6 +25349,16 @@ "readdirp": "^2.2.1", "upath": "^1.1.1" } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1" + } } } }, @@ -26291,6 +25724,16 @@ "rimraf": "^2.6.3" } }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1" + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -26978,7 +26421,6 @@ "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" diff --git a/package.json b/package.json index 1fe209cf2..cf5f7ac01 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "node-ssh": "^11.0.0", "object-diff": "0.0.4", "object.pick": "^1.3.0", + "puppeteer": "^7.1.0", "read-chunk": "^3.2.0", "request": "^2.88.0", "request-promise-native": "^1.0.8", @@ -88,7 +89,6 @@ "node-sass": "^4.14.1", "nodemon": "^1.19.4", "plugin-error": "^1.0.1", - "puppeteer": "^5.5.0", "raw-loader": "^1.0.0", "sass-loader": "^7.3.1", "style-loader": "^0.23.1",