diff --git a/GapsWeb/src/main/resources/templates/updates.html b/GapsWeb/src/main/resources/templates/updates.html
index 84b9021..cc9f6d5 100755
--- a/GapsWeb/src/main/resources/templates/updates.html
+++ b/GapsWeb/src/main/resources/templates/updates.html
@@ -78,6 +78,13 @@
Updates
+ v0.8.1
+
+ - Added ESLint and requiring during builds
+ - Added faker.js
+ - Added
+
+
v0.8.1
- Updated to Spring Boot 2.3.4-RELEASE
diff --git a/README.md b/README.md
index 3bd3960..0218c9c 100755
--- a/README.md
+++ b/README.md
@@ -179,6 +179,10 @@ Once you've completed at least one search of your plex libraries, you can then v
- [Bootstrap](https://getbootstrap.com/) - UI Framework
- [Spring Boot](https://spring.io/projects/spring-boot) - Server Framework
- [NodeJs](https://nodejs.org/en/) - Testing and Build Environment
+- [Cypress](https://www.cypress.io/) - Fast, easy and reliable testing for anything that runs in a browser.
+- [ESLint](https://eslint.org/) - Find and fix problems in your JavaScript code
+- [Faker.js](https://github.com/marak/Faker.js/) - Generate massive amounts of fake data in the browser and node.js
+- [UglifyJS/ES](https://www.npmjs.com/package/uglify-js) - UglifyJS is a JavaScript parser, minifier, compressor and beautifier toolkit.
## Supporters
@@ -198,4 +202,4 @@ This project would not be possible without the support by these amazing folks. [
## 🎉 Acknowledgements
- [@Knoxie](https://github.com/knoxie) Developer, testing, and support
- Inspiration
- - A missing feature from Plex
+ - I'm an avid movie watcher and this is a missing feature from Plex
diff --git a/build b/build
index c8fd1cd..1415fc9 100755
--- a/build
+++ b/build
@@ -1,8 +1,11 @@
#!/bin/bash
+set -e
VERSION=0.8.1
JAR_VERSION="GapsWeb/target/GapsWeb-$VERSION.jar"
ZIP_VERSION="GapsAsJar-$VERSION.zip"
npm ci
+eslint cypress/integration
+eslint GapsWeb/src/main/resources/static/js
./minify
mvn clean install
docker buildx build --platform linux/s390x,linux/amd64,linux/s390x -t housewrecker/gaps:latest -f Dockerfile --push .
diff --git a/buildAlpha b/buildAlpha
index dc522f2..9260476 100755
--- a/buildAlpha
+++ b/buildAlpha
@@ -1,4 +1,7 @@
#!/bin/bash
+set -e
+eslint cypress/integration
+eslint GapsWeb/src/main/resources/static/js
./minify && mvn clean install
docker build -f Dockerfile -t "housewrecker/gaps:alpha" .
docker push "housewrecker/gaps:alpha"
\ No newline at end of file
diff --git a/cypress/integration/common.js b/cypress/integration/common.js
index cb83c6b..a7313b4 100755
--- a/cypress/integration/common.js
+++ b/cypress/integration/common.js
@@ -18,7 +18,7 @@ export const CYPRESS_VALUES = {
beVisible: 'be.visible',
};
-export function spyOnAddEventListener(win) {
+export function spyOnAddEventListener(win, ...args) {
const winObject = Object.assign(win);
// win = window object in our application
const addListener = winObject.EventTarget.prototype.addEventListener;
@@ -27,7 +27,7 @@ export function spyOnAddEventListener(win) {
// restore the original event listener
winObject.EventTarget.prototype.addEventListener = addListener;
}
- return addListener.apply(this, arguments);
+ return addListener.apply(this, args);
};
}
diff --git a/cypress/integration/configuration/plex.spec.js b/cypress/integration/configuration/plex.spec.js
index 26aa9b0..6924120 100755
--- a/cypress/integration/configuration/plex.spec.js
+++ b/cypress/integration/configuration/plex.spec.js
@@ -11,8 +11,8 @@
/* global cy, it, describe, before */
/* eslint no-undef: "error" */
-import { spyOnAddEventListener } from '../common.js';
import faker from 'faker';
+import { spyOnAddEventListener } from '../common.js';
describe('Plex Configuration Tests', () => {
before(() => {
diff --git a/cypress/integration/configuration/tmdb.spec.js b/cypress/integration/configuration/tmdb.spec.js
index ab91cc9..5bd123c 100755
--- a/cypress/integration/configuration/tmdb.spec.js
+++ b/cypress/integration/configuration/tmdb.spec.js
@@ -11,8 +11,8 @@
/* global cy, it, describe, before */
/* eslint no-undef: "error" */
-import { spyOnAddEventListener } from '../common.js';
import faker from 'faker';
+import { spyOnAddEventListener } from '../common.js';
describe('TMDB Configuration Tests', () => {
before(() => {
diff --git a/cypress/integration/notifications/discord.spec.js b/cypress/integration/notifications/discord.spec.js
index cabd8a3..82f4b4b 100644
--- a/cypress/integration/notifications/discord.spec.js
+++ b/cypress/integration/notifications/discord.spec.js
@@ -11,8 +11,8 @@
/* global cy, describe, it, beforeEach, expect */
/* eslint no-undef: "error" */
-import { CYPRESS_VALUES, nuke } from '../common.js';
import faker from 'faker';
+import { CYPRESS_VALUES, nuke } from '../common.js';
function checkElements(discordWebHookUrl, tmdbApi, plexServer, plexMetadata, plexLibrary, gapsCollections, enabled) {
cy.get('#discordWebHookUrl')
@@ -50,7 +50,7 @@ describe('Check Discord Notification Agent', () => {
expect(body.extras.enabled).to.eq(discord.enabled);
expect(body.extras.notificationTypes.length).to.eq(discord.notificationTypesLength);
expect(body.extras.webHookUrl).to.eq(discord.webHookUrl);
- })
+ });
})
.visit('/configuration')
.then(() => {
@@ -82,16 +82,16 @@ describe('Check Discord Notification Agent', () => {
it('Set Discord Notification Agent Settings', () => {
const dummyAll = {
- "enabled": faker.random.boolean(),
- "notificationTypes": [
- "TEST",
- "TMDB_API_CONNECTION",
- "PLEX_SERVER_CONNECTION",
- "PLEX_METADATA_UPDATE",
- "PLEX_LIBRARY_UPDATE",
- "GAPS_MISSING_COLLECTIONS"
+ enabled: faker.random.boolean(),
+ notificationTypes: [
+ 'TEST',
+ 'TMDB_API_CONNECTION',
+ 'PLEX_SERVER_CONNECTION',
+ 'PLEX_METADATA_UPDATE',
+ 'PLEX_LIBRARY_UPDATE',
+ 'GAPS_MISSING_COLLECTIONS',
],
- "webHookUrl": faker.internet.url()
+ webHookUrl: faker.internet.url(),
};
cy.request('PUT', '/notifications/discord', dummyAll)
@@ -136,11 +136,11 @@ describe('Check Discord Notification Agent', () => {
it('Set TMDB Only Discord Notification Agent Settings', () => {
const tmdbOnly = {
- "enabled": faker.random.boolean(),
- "notificationTypes": [
- "TMDB_API_CONNECTION"
+ enabled: faker.random.boolean(),
+ notificationTypes: [
+ 'TMDB_API_CONNECTION',
],
- "webHookUrl": faker.internet.url()
+ webHookUrl: faker.internet.url(),
};
cy.request('PUT', '/notifications/discord', tmdbOnly)
.then((resp) => {
diff --git a/cypress/integration/notifications/email.spec.js b/cypress/integration/notifications/email.spec.js
index b8ea909..f126d24 100644
--- a/cypress/integration/notifications/email.spec.js
+++ b/cypress/integration/notifications/email.spec.js
@@ -11,8 +11,8 @@
/* global cy, describe, it, beforeEach, expect */
/* eslint no-undef: "error" */
-import { CYPRESS_VALUES, nuke } from '../common.js';
import faker from 'faker';
+import { CYPRESS_VALUES, nuke } from '../common.js';
function checkElements(username, password, mailTo, mailFrom, mailServer, mailPort, mailTransportProtocol, mailSmtpAuth, mailSmtpTlsEnabled, tmdbApi, plexServer, plexMetadata, plexLibrary, gapsCollections, enabled) {
cy.get('#emailUsername')
@@ -135,7 +135,7 @@ describe('Check Email Notification Agent', () => {
it('Set Email Notification Agent Settings', () => {
const email = {
- "enabled": faker.random.boolean(),
+ enabled: faker.random.boolean(),
notificationTypes: ['TEST', 'TMDB_API_CONNECTION', 'PLEX_SERVER_CONNECTION', 'PLEX_METADATA_UPDATE', 'PLEX_LIBRARY_UPDATE', 'GAPS_MISSING_COLLECTIONS'],
username: faker.internet.userName(),
password: faker.internet.password(),
@@ -217,7 +217,7 @@ describe('Check Email Notification Agent', () => {
it('Set TMDB Only Email Notification Agent Settings', () => {
const email = {
- "enabled": faker.random.boolean(),
+ enabled: faker.random.boolean(),
notificationTypes: ['TMDB_API_CONNECTION'],
username: faker.internet.userName(),
password: faker.internet.password(),
diff --git a/cypress/integration/notifications/gotify.spec.js b/cypress/integration/notifications/gotify.spec.js
index 642f012..a3a02f1 100644
--- a/cypress/integration/notifications/gotify.spec.js
+++ b/cypress/integration/notifications/gotify.spec.js
@@ -11,8 +11,8 @@
/* global cy, describe, it, beforeEach, expect */
/* eslint no-undef: "error" */
+import faker from 'faker';
import { CYPRESS_VALUES, nuke } from '../common.js';
-import faker from "faker";
function checkElements(address, token, tmdbApi, plexServer, plexMetadata, plexLibrary, gapsCollections, enabled) {
cy.get('#gotifyAddress')
diff --git a/cypress/integration/notifications/pushBullet.spec.js b/cypress/integration/notifications/pushBullet.spec.js
index 9b1098f..d8a2d4a 100644
--- a/cypress/integration/notifications/pushBullet.spec.js
+++ b/cypress/integration/notifications/pushBullet.spec.js
@@ -11,8 +11,8 @@
/* global cy, describe, it, beforeEach, expect */
/* eslint no-undef: "error" */
+import faker from 'faker';
import { CYPRESS_VALUES, nuke } from '../common.js';
-import faker from "faker";
function checkElements(channelTag, token, tmdbApi, plexServer, plexMetadata, plexLibrary, gapsCollections, enabled) {
cy.get('#pushBulletChannelTag')
@@ -199,13 +199,13 @@ describe('Check PushBullet Notification Agent', () => {
checkElements('', '', CYPRESS_VALUES.notBeChecked, CYPRESS_VALUES.notBeChecked, CYPRESS_VALUES.notBeChecked, CYPRESS_VALUES.notBeChecked, CYPRESS_VALUES.notBeChecked, 'false');
- const channel_tag = faker.random.alphaNumeric();
+ const channelTag = faker.random.alphaNumeric();
const accessToken = faker.random.alphaNumeric();
cy.get('#pushBulletChannelTag')
.clear()
- .type(channel_tag)
- .should('have.value', channel_tag);
+ .type(channelTag)
+ .should('have.value', channelTag);
cy.get('#pushBulletAccessToken')
.clear()
diff --git a/cypress/integration/notifications/pushOver.spec.js b/cypress/integration/notifications/pushOver.spec.js
index 5696354..f50042d 100644
--- a/cypress/integration/notifications/pushOver.spec.js
+++ b/cypress/integration/notifications/pushOver.spec.js
@@ -11,8 +11,8 @@
/* global cy, describe, it, beforeEach, expect */
/* eslint no-undef: "error" */
+import faker from 'faker';
import { CYPRESS_VALUES, nuke } from '../common.js';
-import faker from "faker";
function checkElements(token, user, priority, sound, retry, expire, tmdbApi, plexServer, plexMetadata, plexLibrary, gapsCollections, enabled) {
cy.get('#pushOverToken')
diff --git a/cypress/integration/notifications/slack.spec.js b/cypress/integration/notifications/slack.spec.js
index 3e958ee..32a909b 100644
--- a/cypress/integration/notifications/slack.spec.js
+++ b/cypress/integration/notifications/slack.spec.js
@@ -11,8 +11,8 @@
/* global cy, describe, it, beforeEach, expect */
/* eslint no-undef: "error" */
+import faker from 'faker';
import { CYPRESS_VALUES, nuke } from '../common.js';
-import faker from "faker";
function checkElements(slackWebHookUrl, tmdbApi, plexServer, plexMetadata, plexLibrary, gapsCollections, enabled) {
cy.get('#slackWebHookUrl')
@@ -79,7 +79,7 @@ describe('Check Slack Notification Agent', () => {
it('Set Slack Notification Agent Settings', () => {
const slack = {
- "enabled": faker.random.boolean(),
+ enabled: faker.random.boolean(),
notificationTypes: ['TEST', 'TMDB_API_CONNECTION', 'PLEX_SERVER_CONNECTION', 'PLEX_METADATA_UPDATE', 'PLEX_LIBRARY_UPDATE', 'GAPS_MISSING_COLLECTIONS'],
webHookUrl: faker.internet.url(),
};
@@ -107,7 +107,7 @@ describe('Check Slack Notification Agent', () => {
it('Set TMDB Only Slack Notification Agent Settings', () => {
const slack = {
- "enabled": faker.random.boolean(),
+ enabled: faker.random.boolean(),
notificationTypes: ['TMDB_API_CONNECTION'],
webHookUrl: faker.internet.url(),
};
diff --git a/cypress/integration/notifications/telegram.spec.js b/cypress/integration/notifications/telegram.spec.js
index 71c511e..36fe531 100644
--- a/cypress/integration/notifications/telegram.spec.js
+++ b/cypress/integration/notifications/telegram.spec.js
@@ -11,8 +11,8 @@
/* global cy, describe, it, beforeEach, expect */
/* eslint no-undef: "error" */
+import faker from 'faker';
import { CYPRESS_VALUES, nuke } from '../common.js';
-import faker from "faker";
function checkElements(botId, chatId, tmdbApi, plexServer, plexMetadata, plexLibrary, gapsCollections, enabled) {
cy.get('#telegramBotId')
@@ -64,7 +64,7 @@ describe('Check Telegram Notification Agent', () => {
it('Set Telegram Notification Agent Settings', () => {
const telegram = {
- "enabled": faker.random.boolean(),
+ enabled: faker.random.boolean(),
notificationTypes: ['TEST', 'TMDB_API_CONNECTION', 'PLEX_SERVER_CONNECTION', 'PLEX_METADATA_UPDATE', 'PLEX_LIBRARY_UPDATE', 'GAPS_MISSING_COLLECTIONS'],
chatId: faker.random.alphaNumeric(),
botId: faker.random.alphaNumeric(),
@@ -94,10 +94,10 @@ describe('Check Telegram Notification Agent', () => {
it('Set TMDB Only Telegram Notification Agent Settings', () => {
const telegram = {
- "enabled": faker.random.boolean(),
+ enabled: faker.random.boolean(),
notificationTypes: ['TMDB_API_CONNECTION'],
chatId: faker.random.alphaNumeric(),
- botId: faker.random.alphaNumeric()
+ botId: faker.random.alphaNumeric(),
};
cy.request('PUT', '/notifications/telegram', telegram)
diff --git a/minify b/minify
index fef6ef7..c22576b 100755
--- a/minify
+++ b/minify
@@ -7,13 +7,4 @@ npm run uglifyjs-recommended-js
npm run uglifyjs-common-js
npm run uglifyjs-payload-js
npm run uglifyjs-mislabeled-js
-npm run uglifyjs-alerts-manager-js
-npm run uglifyjs-notification-types-js
-npm run uglifyjs-telegram-notifications-js
-npm run uglifyjs-slack-notifications-js
-npm run uglifyjs-push-bullet-notifications-js
-npm run uglifyjs-gotify-notifications-js
-npm run uglifyjs-email-notifications-js
-npm run uglifyjs-push-over-notifications-js
-npm run uglifyjs-discord-notifications-js
-npm run uglifyjs-schedule-js
\ No newline at end of file
+npm run uglifyjs-modules
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index b632c08..d5f55df 100755
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,7 +8,6 @@
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz",
"integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==",
- "dev": true,
"requires": {
"@babel/highlight": "^7.10.4"
}
@@ -16,14 +15,12 @@
"@babel/helper-validator-identifier": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz",
- "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==",
- "dev": true
+ "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw=="
},
"@babel/highlight": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz",
"integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==",
- "dev": true,
"requires": {
"@babel/helper-validator-identifier": "^7.10.4",
"chalk": "^2.0.0",
@@ -197,6 +194,16 @@
"integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=",
"dev": true
},
+ "@types/minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY="
+ },
+ "@types/normalize-package-data": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
+ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA=="
+ },
"@types/q": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz",
@@ -322,6 +329,11 @@
"es-abstract": "^1.17.0-next.1"
}
},
+ "arrify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
+ "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
+ },
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -447,8 +459,7 @@
"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==",
- "dev": true
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"cachedir": {
"version": "2.3.0",
@@ -482,6 +493,16 @@
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
+ "camelcase-keys": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
+ "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
+ "requires": {
+ "camelcase": "^5.3.1",
+ "map-obj": "^4.0.0",
+ "quick-lru": "^4.0.1"
+ }
+ },
"caniuse-api": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
@@ -1072,6 +1093,22 @@
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
+ "decamelize-keys": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz",
+ "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
+ "requires": {
+ "decamelize": "^1.1.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
+ }
+ }
+ },
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
@@ -1613,8 +1650,7 @@
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extract-zip": {
"version": "1.7.0",
@@ -1930,6 +1966,11 @@
"har-schema": "^2.0.0"
}
},
+ "hard-rejection": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
+ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA=="
+ },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -1965,8 +2006,7 @@
"hosted-git-info": {
"version": "2.8.8",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz",
- "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==",
- "dev": true
+ "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg=="
},
"hsl-regex": {
"version": "1.0.0",
@@ -2178,6 +2218,11 @@
"integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
"dev": true
},
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4="
+ },
"is-promise": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz",
@@ -2252,8 +2297,7 @@
"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
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
"js-yaml": {
"version": "3.13.1",
@@ -2275,6 +2319,11 @@
"resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
},
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
+ },
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@@ -2330,6 +2379,11 @@
"verror": "1.10.0"
}
},
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+ },
"lazy-ass": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz",
@@ -2346,6 +2400,11 @@
"type-check": "~0.4.0"
}
},
+ "lines-and-columns": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
+ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA="
+ },
"listr": {
"version": "0.14.3",
"resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
@@ -2626,11 +2685,137 @@
}
}
},
+ "map-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz",
+ "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g=="
+ },
"mdn-data": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
"integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA=="
},
+ "meow": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-7.0.1.tgz",
+ "integrity": "sha512-tBKIQqVrAHqwit0vfuFPY3LlzJYkEOFyKa3bPgxzNl6q/RtN8KQ+ALYEASYuFayzSAsjlhXj/JZ10rH85Q6TUw==",
+ "requires": {
+ "@types/minimist": "^1.2.0",
+ "arrify": "^2.0.1",
+ "camelcase": "^6.0.0",
+ "camelcase-keys": "^6.2.2",
+ "decamelize-keys": "^1.1.0",
+ "hard-rejection": "^2.1.0",
+ "minimist-options": "^4.0.2",
+ "normalize-package-data": "^2.5.0",
+ "read-pkg-up": "^7.0.1",
+ "redent": "^3.0.0",
+ "trim-newlines": "^3.0.0",
+ "type-fest": "^0.13.1",
+ "yargs-parser": "^18.1.3"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.0.0.tgz",
+ "integrity": "sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w=="
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "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==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "parse-json": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz",
+ "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==",
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "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=="
+ },
+ "read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "requires": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg=="
+ }
+ }
+ },
+ "read-pkg-up": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
+ "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
+ "requires": {
+ "find-up": "^4.1.0",
+ "read-pkg": "^5.2.0",
+ "type-fest": "^0.8.1"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA=="
+ }
+ }
+ },
+ "type-fest": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="
+ }
+ }
+ },
"merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@@ -2672,6 +2857,11 @@
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true
},
+ "min-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
+ "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
+ },
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -2686,6 +2876,23 @@
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
+ "minimist-options": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
+ "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
+ "requires": {
+ "arrify": "^1.0.1",
+ "is-plain-obj": "^1.1.0",
+ "kind-of": "^6.0.3"
+ },
+ "dependencies": {
+ "arrify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
+ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
+ }
+ }
+ },
"mkdirp": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
@@ -2721,7 +2928,6 @@
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
"resolve": "^1.10.0",
@@ -2732,8 +2938,7 @@
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
}
}
},
@@ -2942,8 +3147,7 @@
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
},
"path-type": {
"version": "4.0.0",
@@ -3616,6 +3820,11 @@
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
"dev": true
},
+ "quick-lru": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
+ "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g=="
+ },
"ramda": {
"version": "0.26.1",
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz",
@@ -3693,6 +3902,22 @@
"picomatch": "^2.2.1"
}
},
+ "redent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
+ "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
+ "requires": {
+ "indent-string": "^4.0.0",
+ "strip-indent": "^3.0.0"
+ },
+ "dependencies": {
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
+ }
+ }
+ },
"regexpp": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz",
@@ -3722,7 +3947,6 @@
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
"integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
"requires": {
"path-parse": "^1.0.6"
}
@@ -3860,11 +4084,19 @@
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
+ "source-map-support": {
+ "version": "0.5.19",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"spdx-correct": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
- "dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
"spdx-license-ids": "^3.0.0"
@@ -3873,14 +4105,12 @@
"spdx-exceptions": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
},
"spdx-expression-parse": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
"spdx-license-ids": "^3.0.0"
@@ -3889,8 +4119,7 @@
"spdx-license-ids": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz",
- "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==",
- "dev": true
+ "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw=="
},
"sprintf-js": {
"version": "1.0.3",
@@ -4023,6 +4252,14 @@
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
+ "strip-indent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
+ "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "requires": {
+ "min-indent": "^1.0.0"
+ }
+ },
"strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -4164,6 +4401,23 @@
}
}
},
+ "terser": {
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+ "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
+ }
+ }
+ },
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -4208,6 +4462,11 @@
"punycode": "^2.1.1"
}
},
+ "trim-newlines": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz",
+ "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA=="
+ },
"tsconfig-paths": {
"version": "3.9.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz",
@@ -4283,6 +4542,39 @@
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.0.tgz",
"integrity": "sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA=="
},
+ "uglifyjs-folder": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/uglifyjs-folder/-/uglifyjs-folder-2.0.0.tgz",
+ "integrity": "sha512-jQGpQ9TxgDE8p0M6jEmCZDquMf2k6O34yPUHnwZSSzKbOSqJA32CIjtsfWDP/CPTnTVfDur/IUOwnNb5mBN0lQ==",
+ "requires": {
+ "extend": "3.0.2",
+ "globby": "11.0.1",
+ "graceful-fs": "4.2.4",
+ "meow": "7.0.1",
+ "mkdirp": "1.0.4",
+ "terser": "4.8.0"
+ },
+ "dependencies": {
+ "globby": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz",
+ "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==",
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.1.1",
+ "ignore": "^5.1.4",
+ "merge2": "^1.3.0",
+ "slash": "^3.0.0"
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+ }
+ }
+ },
"uniq": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
@@ -4370,7 +4662,6 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
"requires": {
"spdx-correct": "^3.0.0",
"spdx-expression-parse": "^3.0.0"
diff --git a/package.json b/package.json
index b629033..79f7dc5 100755
--- a/package.json
+++ b/package.json
@@ -8,7 +8,8 @@
"faker": "^5.1.0",
"postcss-cli": "^7.1.1",
"uglify-es": "^3.3.9",
- "uglify-js": "^3.10.0"
+ "uglify-js": "^3.10.0",
+ "uglifyjs-folder": "^2.0.0"
},
"devDependencies": {
"cypress": "^5.3.0",
@@ -23,19 +24,8 @@
"uglifyjs-configuration-js": "uglifyjs GapsWeb/src/main/resources/static/js/configuration.js --compress --output GapsWeb/src/main/resources/static/js/configuration.min.js",
"uglifyjs-libraries-js": "uglifyjs GapsWeb/src/main/resources/static/js/libraries.js --compress --output GapsWeb/src/main/resources/static/js/libraries.min.js",
"uglifyjs-recommended-js": "uglifyjs GapsWeb/src/main/resources/static/js/recommended.js --compress --output GapsWeb/src/main/resources/static/js/recommended.min.js",
- "uglifyjs-common-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/common.js --compress --output GapsWeb/src/main/resources/static/js/modules/common.min.js",
- "uglifyjs-payload-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/payload.js --compress --output GapsWeb/src/main/resources/static/js/modules/payload.min.js",
- "uglifyjs-alerts-manager-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/alerts-manager.js --compress --output GapsWeb/src/main/resources/static/js/modules/alerts-manager.min.js",
"uglifyjs-mislabeled-js": "uglifyjs GapsWeb/src/main/resources/static/js/mislabeled.js --compress --output GapsWeb/src/main/resources/static/js/mislabeled.min.js",
- "uglifyjs-notification-types-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/notification-types.js --compress --output GapsWeb/src/main/resources/static/js/modules/notification-types.min.js",
- "uglifyjs-telegram-notifications-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/telegram-notifications.js --compress --output GapsWeb/src/main/resources/static/js/modules/telegram-notifications.min.js",
- "uglifyjs-slack-notifications-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/slack-notifications.js --compress --output GapsWeb/src/main/resources/static/js/modules/slack-notifications.min.js",
- "uglifyjs-push-bullet-notifications-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/push-bullet-notifications.js --compress --output GapsWeb/src/main/resources/static/js/modules/push-bullet-notifications.min.js",
- "uglifyjs-gotify-notifications-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/gotify-notifications.js --compress --output GapsWeb/src/main/resources/static/js/modules/gotify-notifications.min.js",
- "uglifyjs-email-notifications-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/email-notifications.js --compress --output GapsWeb/src/main/resources/static/js/modules/email-notifications.min.js",
- "uglifyjs-discord-notifications-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/discord-notifications.js --compress --output GapsWeb/src/main/resources/static/js/modules/discord-notifications.min.js",
- "uglifyjs-push-over-notifications-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/push-over-notifications.js --output GapsWeb/src/main/resources/static/js/modules/push-over-notifications.min.js",
- "uglifyjs-schedule-js": "uglifyjs GapsWeb/src/main/resources/static/js/modules/schedule.js --compress --output GapsWeb/src/main/resources/static/js/modules/schedule.min.js"
+ "uglifyjs-modules": "uglifyjs-folder GapsWeb/src/main/resources/static/js/modules/ -eo GapsWeb/src/main/resources/static/js/modules/ --pattern \"**/*.js,GapsWeb/src/main/resources/static/js/modules/ -eo GapsWeb/src/main/resources/static/js/modules/ --pattern \"**/*.js,GapsWeb/src/main/resources/static/js/modules/ -eo GapsWeb/src/main/resources/static/js/modules/*/*min.js\"*/*min.js\"\n"
},
"repository": {
"type": "git",