You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by dk...@apache.org on 2020/07/13 21:21:52 UTC

[sling-org-apache-sling-app-cms] branch master updated (dfded6e -> 22febc7)

This is an automated email from the ASF dual-hosted git repository.

dklco pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git.


    from dfded6e  Removing un-added feature and updating package lock
     new 877a57b  Updating to the latest version of Jackson Databind
     new 34733d4  Updating to the latest dependencies
     new f669145  Minor - Re-adding support for smoke-testing the build artifact
     new ec407ac  Minor - Updating to Bulma 0.9 and remove unneeded dependencies
     new 22febc7  Resizing the editor modals on load

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 builder/pom.xml                                    |    3 +-
 builder/src/main/provisioning/boot.txt             |    4 +-
 builder/src/main/provisioning/scripting.txt        |   15 +-
 .../provisioning/sling-models-jacksonexporter.txt  |    2 +-
 builder/src/main/provisioning/sling-validation.txt |    1 +
 builder/src/main/provisioning/sling.txt            |   17 +-
 .../apache/sling/launchpad/LaunchpadReadyRule.java |  121 ++
 .../java/org/apache/sling/launchpad/SmokeIT.java   |  195 ++++
 .../org/apache/sling/launchpad/package-info.java   |   31 +-
 ui/package-lock.json                               | 1160 +-------------------
 ui/package.json                                    |    5 +-
 ui/src/main/frontend/js/editor.js                  |  209 ++--
 ui/src/main/frontend/scss/editor.scss              |   14 +-
 .../sling-cms/components/pages/editor/body.jsp     |   18 +-
 14 files changed, 502 insertions(+), 1293 deletions(-)
 create mode 100644 builder/src/test/java/org/apache/sling/launchpad/LaunchpadReadyRule.java
 create mode 100644 builder/src/test/java/org/apache/sling/launchpad/SmokeIT.java
 copy api/src/main/java/org/apache/sling/cms/ComponentPolicyManager.java => builder/src/test/java/org/apache/sling/launchpad/package-info.java (54%)


[sling-org-apache-sling-app-cms] 01/05: Updating to the latest version of Jackson Databind

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit 877a57b628d73df2c3a25645b5270d3b8a72fcda
Author: Dan Klco <dk...@apache.org>
AuthorDate: Mon Jul 13 16:41:52 2020 -0400

    Updating to the latest version of Jackson Databind
---
 builder/src/main/provisioning/sling-models-jacksonexporter.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builder/src/main/provisioning/sling-models-jacksonexporter.txt b/builder/src/main/provisioning/sling-models-jacksonexporter.txt
index 7052bc6..a827271 100644
--- a/builder/src/main/provisioning/sling-models-jacksonexporter.txt
+++ b/builder/src/main/provisioning/sling-models-jacksonexporter.txt
@@ -18,7 +18,7 @@
 #
 [feature name=models-jacksonexporter]
 [variables]
-    jackson.version=2.9.9
+    jackson.version=2.11.1
 
 [artifacts]
   org.apache.sling/org.apache.sling.models.jacksonexporter/1.0.8


[sling-org-apache-sling-app-cms] 04/05: Minor - Updating to Bulma 0.9 and remove unneeded dependencies

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit ec407ac1386a731567814af4ae4113e5db3c69d9
Author: Dan Klco <dk...@apache.org>
AuthorDate: Mon Jul 13 17:21:21 2020 -0400

    Minor - Updating to Bulma 0.9 and remove unneeded dependencies
---
 ui/package-lock.json                  | 1160 +--------------------------------
 ui/package.json                       |    5 +-
 ui/src/main/frontend/scss/editor.scss |   14 +-
 3 files changed, 17 insertions(+), 1162 deletions(-)

diff --git a/ui/package-lock.json b/ui/package-lock.json
index 2e19804..a728404 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -4,44 +4,12 @@
     "lockfileVersion": 1,
     "requires": true,
     "dependencies": {
-        "@babel/code-frame": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
-            "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
-            "dev": true,
-            "requires": {
-                "@babel/highlight": "^7.8.3"
-            }
-        },
-        "@babel/highlight": {
-            "version": "7.8.3",
-            "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz",
-            "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==",
-            "dev": true,
-            "requires": {
-                "chalk": "^2.0.0",
-                "esutils": "^2.0.2",
-                "js-tokens": "^4.0.0"
-            }
-        },
         "abbrev": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
             "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
             "dev": true
         },
-        "acorn": {
-            "version": "7.1.1",
-            "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz",
-            "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==",
-            "dev": true
-        },
-        "acorn-jsx": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz",
-            "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
-            "dev": true
-        },
         "ajv": {
             "version": "6.10.2",
             "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
@@ -69,15 +37,6 @@
                 "ansi-wrap": "^0.1.0"
             }
         },
-        "ansi-escapes": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz",
-            "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==",
-            "dev": true,
-            "requires": {
-                "type-fest": "^0.8.1"
-            }
-        },
         "ansi-gray": {
             "version": "0.1.1",
             "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz",
@@ -149,15 +108,6 @@
                 "readable-stream": "^2.0.6"
             }
         },
-        "argparse": {
-            "version": "1.0.10",
-            "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
-            "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
-            "dev": true,
-            "requires": {
-                "sprintf-js": "~1.0.2"
-            }
-        },
         "arr-diff": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
@@ -212,17 +162,6 @@
             "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
             "dev": true
         },
-        "array-includes": {
-            "version": "3.1.1",
-            "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz",
-            "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.17.0",
-                "is-string": "^1.0.5"
-            }
-        },
         "array-initial": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz",
@@ -295,16 +234,6 @@
             "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
             "dev": true
         },
-        "array.prototype.flat": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz",
-            "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.17.0-next.1"
-            }
-        },
         "asn1": {
             "version": "0.2.4",
             "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -326,12 +255,6 @@
             "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
             "dev": true
         },
-        "astral-regex": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
-            "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
-            "dev": true
-        },
         "async-done": {
             "version": "1.3.2",
             "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz",
@@ -549,9 +472,9 @@
             "dev": true
         },
         "bulma": {
-            "version": "0.8.2",
-            "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.8.2.tgz",
-            "integrity": "sha512-vMM/ijYSxX+Sm+nD7Lmc1UgWDy2JcL2nTKqwgEqXuOMU+IGALbXd5MLt/BcjBAPLIx36TtzhzBcSnOP974gcqA=="
+            "version": "0.9.0",
+            "resolved": "https://registry.npmjs.org/bulma/-/bulma-0.9.0.tgz",
+            "integrity": "sha512-rV75CJkubNUroAt0qCRkjznZLoaXq/ctfMXsMvKSL84UetbSyx5REl96e8GoQ04G4Tkw0XF3STECffTOQrbzOQ=="
         },
         "cache-base": {
             "version": "1.0.1",
@@ -570,12 +493,6 @@
                 "unset-value": "^1.0.0"
             }
         },
-        "callsites": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-            "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-            "dev": true
-        },
         "camelcase": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
@@ -617,12 +534,6 @@
                 "supports-color": "^5.3.0"
             }
         },
-        "chardet": {
-            "version": "0.7.0",
-            "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
-            "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
-            "dev": true
-        },
         "chokidar": {
             "version": "2.1.8",
             "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
@@ -690,21 +601,6 @@
                 "source-map": "~0.6.0"
             }
         },
-        "cli-cursor": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
-            "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
-            "dev": true,
-            "requires": {
-                "restore-cursor": "^3.1.0"
-            }
-        },
-        "cli-width": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
-            "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
-            "dev": true
-        },
         "cliui": {
             "version": "3.2.0",
             "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
@@ -841,24 +737,12 @@
                 "source-map": "^0.6.1"
             }
         },
-        "confusing-browser-globals": {
-            "version": "1.0.9",
-            "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz",
-            "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==",
-            "dev": true
-        },
         "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",
-            "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
-            "dev": true
-        },
         "convert-source-map": {
             "version": "1.6.0",
             "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
@@ -954,12 +838,6 @@
             "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
             "dev": true
         },
-        "deep-is": {
-            "version": "0.1.3",
-            "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
-            "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
-            "dev": true
-        },
         "default-compare": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz",
@@ -1051,15 +929,6 @@
             "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
             "dev": true
         },
-        "doctrine": {
-            "version": "3.0.0",
-            "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
-            "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
-            "dev": true,
-            "requires": {
-                "esutils": "^2.0.2"
-            }
-        },
         "duplexer2": {
             "version": "0.0.2",
             "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
@@ -1127,12 +996,6 @@
                 "safer-buffer": "^2.1.0"
             }
         },
-        "emoji-regex": {
-            "version": "8.0.0",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
-            "dev": true
-        },
         "end-of-stream": {
             "version": "1.4.4",
             "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
@@ -1151,44 +1014,6 @@
                 "is-arrayish": "^0.2.1"
             }
         },
-        "es-abstract": {
-            "version": "1.17.4",
-            "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz",
-            "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",
-            "dev": true,
-            "requires": {
-                "es-to-primitive": "^1.2.1",
-                "function-bind": "^1.1.1",
-                "has": "^1.0.3",
-                "has-symbols": "^1.0.1",
-                "is-callable": "^1.1.5",
-                "is-regex": "^1.0.5",
-                "object-inspect": "^1.7.0",
-                "object-keys": "^1.1.1",
-                "object.assign": "^4.1.0",
-                "string.prototype.trimleft": "^2.1.1",
-                "string.prototype.trimright": "^2.1.1"
-            },
-            "dependencies": {
-                "has-symbols": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
-                    "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
-                    "dev": true
-                }
-            }
-        },
-        "es-to-primitive": {
-            "version": "1.2.1",
-            "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
-            "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
-            "dev": true,
-            "requires": {
-                "is-callable": "^1.1.4",
-                "is-date-object": "^1.0.1",
-                "is-symbol": "^1.0.2"
-            }
-        },
         "es5-ext": {
             "version": "0.10.51",
             "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz",
@@ -1239,322 +1064,6 @@
             "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
             "dev": true
         },
-        "eslint": {
-            "version": "6.8.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz",
-            "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
-            "dev": true,
-            "requires": {
-                "@babel/code-frame": "^7.0.0",
-                "ajv": "^6.10.0",
-                "chalk": "^2.1.0",
-                "cross-spawn": "^6.0.5",
-                "debug": "^4.0.1",
-                "doctrine": "^3.0.0",
-                "eslint-scope": "^5.0.0",
-                "eslint-utils": "^1.4.3",
-                "eslint-visitor-keys": "^1.1.0",
-                "espree": "^6.1.2",
-                "esquery": "^1.0.1",
-                "esutils": "^2.0.2",
-                "file-entry-cache": "^5.0.1",
-                "functional-red-black-tree": "^1.0.1",
-                "glob-parent": "^5.0.0",
-                "globals": "^12.1.0",
-                "ignore": "^4.0.6",
-                "import-fresh": "^3.0.0",
-                "imurmurhash": "^0.1.4",
-                "inquirer": "^7.0.0",
-                "is-glob": "^4.0.0",
-                "js-yaml": "^3.13.1",
-                "json-stable-stringify-without-jsonify": "^1.0.1",
-                "levn": "^0.3.0",
-                "lodash": "^4.17.14",
-                "minimatch": "^3.0.4",
-                "mkdirp": "^0.5.1",
-                "natural-compare": "^1.4.0",
-                "optionator": "^0.8.3",
-                "progress": "^2.0.0",
-                "regexpp": "^2.0.1",
-                "semver": "^6.1.2",
-                "strip-ansi": "^5.2.0",
-                "strip-json-comments": "^3.0.1",
-                "table": "^5.2.3",
-                "text-table": "^0.2.0",
-                "v8-compile-cache": "^2.0.3"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                    "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==",
-                    "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"
-                    },
-                    "dependencies": {
-                        "semver": {
-                            "version": "5.7.1",
-                            "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
-                            "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
-                            "dev": true
-                        }
-                    }
-                },
-                "debug": {
-                    "version": "4.1.1",
-                    "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-                    "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-                    "dev": true,
-                    "requires": {
-                        "ms": "^2.1.1"
-                    }
-                },
-                "glob-parent": {
-                    "version": "5.1.0",
-                    "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz",
-                    "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==",
-                    "dev": true,
-                    "requires": {
-                        "is-glob": "^4.0.1"
-                    }
-                },
-                "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
-                },
-                "semver": {
-                    "version": "6.3.0",
-                    "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-                    "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-                    "dev": true
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                }
-            }
-        },
-        "eslint-config-airbnb-base": {
-            "version": "14.1.0",
-            "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz",
-            "integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==",
-            "dev": true,
-            "requires": {
-                "confusing-browser-globals": "^1.0.9",
-                "object.assign": "^4.1.0",
-                "object.entries": "^1.1.1"
-            }
-        },
-        "eslint-import-resolver-node": {
-            "version": "0.3.3",
-            "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz",
-            "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==",
-            "dev": true,
-            "requires": {
-                "debug": "^2.6.9",
-                "resolve": "^1.13.1"
-            },
-            "dependencies": {
-                "resolve": {
-                    "version": "1.16.1",
-                    "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.16.1.tgz",
-                    "integrity": "sha512-rmAglCSqWWMrrBv/XM6sW0NuRFiKViw/W4d9EbC4pt+49H8JwHy+mcGmALTEg504AUDcLTvb1T2q3E9AnmY+ig==",
-                    "dev": true,
-                    "requires": {
-                        "path-parse": "^1.0.6"
-                    }
-                }
-            }
-        },
-        "eslint-module-utils": {
-            "version": "2.6.0",
-            "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz",
-            "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==",
-            "dev": true,
-            "requires": {
-                "debug": "^2.6.9",
-                "pkg-dir": "^2.0.0"
-            }
-        },
-        "eslint-plugin-import": {
-            "version": "2.20.2",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz",
-            "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==",
-            "dev": true,
-            "requires": {
-                "array-includes": "^3.0.3",
-                "array.prototype.flat": "^1.2.1",
-                "contains-path": "^0.1.0",
-                "debug": "^2.6.9",
-                "doctrine": "1.5.0",
-                "eslint-import-resolver-node": "^0.3.2",
-                "eslint-module-utils": "^2.4.1",
-                "has": "^1.0.3",
-                "minimatch": "^3.0.4",
-                "object.values": "^1.1.0",
-                "read-pkg-up": "^2.0.0",
-                "resolve": "^1.12.0"
-            },
-            "dependencies": {
-                "doctrine": {
-                    "version": "1.5.0",
-                    "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
-                    "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
-                    "dev": true,
-                    "requires": {
-                        "esutils": "^2.0.2",
-                        "isarray": "^1.0.0"
-                    }
-                },
-                "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"
-                    }
-                },
-                "load-json-file": {
-                    "version": "2.0.0",
-                    "resolved": "https://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"
-                    }
-                },
-                "strip-bom": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
-                    "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
-                    "dev": true
-                }
-            }
-        },
-        "eslint-scope": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
-            "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
-            "dev": true,
-            "requires": {
-                "esrecurse": "^4.1.0",
-                "estraverse": "^4.1.1"
-            }
-        },
-        "eslint-utils": {
-            "version": "1.4.3",
-            "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
-            "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
-            "dev": true,
-            "requires": {
-                "eslint-visitor-keys": "^1.1.0"
-            }
-        },
-        "eslint-visitor-keys": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz",
-            "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==",
-            "dev": true
-        },
-        "espree": {
-            "version": "6.1.2",
-            "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz",
-            "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==",
-            "dev": true,
-            "requires": {
-                "acorn": "^7.1.0",
-                "acorn-jsx": "^5.1.0",
-                "eslint-visitor-keys": "^1.1.0"
-            }
-        },
-        "esprima": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
-            "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
-            "dev": true
-        },
-        "esquery": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
-            "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
-            "dev": true,
-            "requires": {
-                "estraverse": "^4.0.0"
-            }
-        },
-        "esrecurse": {
-            "version": "4.2.1",
-            "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
-            "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
-            "dev": true,
-            "requires": {
-                "estraverse": "^4.1.0"
-            }
-        },
-        "estraverse": {
-            "version": "4.3.0",
-            "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
-            "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
-            "dev": true
-        },
-        "esutils": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-            "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-            "dev": true
-        },
         "expand-brackets": {
             "version": "2.1.4",
             "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
@@ -1626,17 +1135,6 @@
                 }
             }
         },
-        "external-editor": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
-            "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
-            "dev": true,
-            "requires": {
-                "chardet": "^0.7.0",
-                "iconv-lite": "^0.4.24",
-                "tmp": "^0.0.33"
-            }
-        },
         "extglob": {
             "version": "2.0.4",
             "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
@@ -1732,30 +1230,6 @@
             "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
             "dev": true
         },
-        "fast-levenshtein": {
-            "version": "2.0.6",
-            "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
-            "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
-            "dev": true
-        },
-        "figures": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz",
-            "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
-            "dev": true,
-            "requires": {
-                "escape-string-regexp": "^1.0.5"
-            }
-        },
-        "file-entry-cache": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
-            "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
-            "dev": true,
-            "requires": {
-                "flat-cache": "^2.0.1"
-            }
-        },
         "fill-range": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -1820,34 +1294,6 @@
             "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
             "dev": true
         },
-        "flat-cache": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
-            "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
-            "dev": true,
-            "requires": {
-                "flatted": "^2.0.0",
-                "rimraf": "2.6.3",
-                "write": "1.0.3"
-            },
-            "dependencies": {
-                "rimraf": {
-                    "version": "2.6.3",
-                    "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
-                    "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
-                    "dev": true,
-                    "requires": {
-                        "glob": "^7.1.3"
-                    }
-                }
-            }
-        },
-        "flatted": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
-            "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==",
-            "dev": true
-        },
         "flush-write-stream": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
@@ -2512,12 +1958,6 @@
             "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
             "dev": true
         },
-        "functional-red-black-tree": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
-            "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
-            "dev": true
-        },
         "gauge": {
             "version": "2.7.4",
             "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
@@ -2669,15 +2109,6 @@
                 "which": "^1.2.14"
             }
         },
-        "globals": {
-            "version": "12.3.0",
-            "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz",
-            "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==",
-            "dev": true,
-            "requires": {
-                "type-fest": "^0.8.1"
-            }
-        },
         "globule": {
             "version": "1.3.2",
             "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz",
@@ -3015,15 +2446,6 @@
                 "har-schema": "^2.0.0"
             }
         },
-        "has": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-            "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
-            "dev": true,
-            "requires": {
-                "function-bind": "^1.1.1"
-            }
-        },
         "has-ansi": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@@ -3118,37 +2540,6 @@
                 "sshpk": "^1.7.0"
             }
         },
-        "iconv-lite": {
-            "version": "0.4.24",
-            "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
-            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
-            "dev": true,
-            "requires": {
-                "safer-buffer": ">= 2.1.2 < 3"
-            }
-        },
-        "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
-        },
-        "import-fresh": {
-            "version": "3.2.1",
-            "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz",
-            "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==",
-            "dev": true,
-            "requires": {
-                "parent-module": "^1.0.0",
-                "resolve-from": "^4.0.0"
-            }
-        },
-        "imurmurhash": {
-            "version": "0.1.4",
-            "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
-            "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
-            "dev": true
-        },
         "in-publish": {
             "version": "2.0.1",
             "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
@@ -3183,81 +2574,7 @@
             "version": "1.3.5",
             "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
             "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
-            "dev": true
-        },
-        "inquirer": {
-            "version": "7.0.4",
-            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz",
-            "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==",
-            "dev": true,
-            "requires": {
-                "ansi-escapes": "^4.2.1",
-                "chalk": "^2.4.2",
-                "cli-cursor": "^3.1.0",
-                "cli-width": "^2.0.0",
-                "external-editor": "^3.0.3",
-                "figures": "^3.0.0",
-                "lodash": "^4.17.15",
-                "mute-stream": "0.0.8",
-                "run-async": "^2.2.0",
-                "rxjs": "^6.5.3",
-                "string-width": "^4.1.0",
-                "strip-ansi": "^5.1.0",
-                "through": "^2.3.6"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "5.0.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
-                    "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
-                    "dev": true
-                },
-                "is-fullwidth-code-point": {
-                    "version": "3.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
-                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "4.2.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
-                    "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^8.0.0",
-                        "is-fullwidth-code-point": "^3.0.0",
-                        "strip-ansi": "^6.0.0"
-                    },
-                    "dependencies": {
-                        "strip-ansi": {
-                            "version": "6.0.0",
-                            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
-                            "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
-                            "dev": true,
-                            "requires": {
-                                "ansi-regex": "^5.0.0"
-                            }
-                        }
-                    }
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    },
-                    "dependencies": {
-                        "ansi-regex": {
-                            "version": "4.1.0",
-                            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                            "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                            "dev": true
-                        }
-                    }
-                }
-            }
+            "dev": true
         },
         "interpret": {
             "version": "1.4.0",
@@ -3322,12 +2639,6 @@
             "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
             "dev": true
         },
-        "is-callable": {
-            "version": "1.1.5",
-            "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz",
-            "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==",
-            "dev": true
-        },
         "is-data-descriptor": {
             "version": "0.1.4",
             "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -3348,12 +2659,6 @@
                 }
             }
         },
-        "is-date-object": {
-            "version": "1.0.2",
-            "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
-            "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
-            "dev": true
-        },
         "is-descriptor": {
             "version": "0.1.6",
             "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
@@ -3444,21 +2749,6 @@
                 "isobject": "^3.0.1"
             }
         },
-        "is-promise": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
-            "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
-            "dev": true
-        },
-        "is-regex": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
-            "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
-            "dev": true,
-            "requires": {
-                "has": "^1.0.3"
-            }
-        },
         "is-relative": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
@@ -3468,29 +2758,6 @@
                 "is-unc-path": "^1.0.0"
             }
         },
-        "is-string": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz",
-            "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==",
-            "dev": true
-        },
-        "is-symbol": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
-            "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
-            "dev": true,
-            "requires": {
-                "has-symbols": "^1.0.1"
-            },
-            "dependencies": {
-                "has-symbols": {
-                    "version": "1.0.1",
-                    "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
-                    "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
-                    "dev": true
-                }
-            }
-        },
         "is-typedarray": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -3563,22 +2830,6 @@
             "integrity": "sha512-fiUvdfCaAXoQTHdKMgTvg6IkecXDcVz6V5rlftUTclF9IKBjMizvSdQaCl/z/6TApDeby5NL+axYou3i0mu1Pg==",
             "dev": true
         },
-        "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
-        },
-        "js-yaml": {
-            "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"
-            }
-        },
         "jsbn": {
             "version": "0.1.1",
             "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
@@ -3670,16 +2921,6 @@
                 "flush-write-stream": "^1.0.2"
             }
         },
-        "levn": {
-            "version": "0.3.0",
-            "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
-            "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
-            "dev": true,
-            "requires": {
-                "prelude-ls": "~1.1.2",
-                "type-check": "~0.3.2"
-            }
-        },
         "liftoff": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
@@ -3709,28 +2950,10 @@
                 "strip-bom": "^2.0.0"
             }
         },
-        "locate-path": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
-            "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
-            "dev": true,
-            "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": {
-            "version": "4.17.15",
-            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
-            "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+            "version": "4.17.19",
+            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz",
+            "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==",
             "dev": true
         },
         "lodash._basecopy": {
@@ -3997,12 +3220,6 @@
                 "mime-db": "1.44.0"
             }
         },
-        "mimic-fn": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-            "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-            "dev": true
-        },
         "minimatch": {
             "version": "3.0.4",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -4098,12 +3315,6 @@
             "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==",
             "dev": true
         },
-        "mute-stream": {
-            "version": "0.0.8",
-            "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
-            "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
-            "dev": true
-        },
         "nan": {
             "version": "2.14.0",
             "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
@@ -4129,12 +3340,6 @@
                 "to-regex": "^3.0.1"
             }
         },
-        "natural-compare": {
-            "version": "1.4.0",
-            "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
-            "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
-            "dev": true
-        },
         "neo-async": {
             "version": "2.6.1",
             "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
@@ -4146,12 +3351,6 @@
             "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
             "dev": true
         },
-        "nice-try": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-            "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-            "dev": true
-        },
         "node-gyp": {
             "version": "3.8.0",
             "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
@@ -4332,12 +3531,6 @@
                 }
             }
         },
-        "object-inspect": {
-            "version": "1.7.0",
-            "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
-            "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
-            "dev": true
-        },
         "object-keys": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
@@ -4377,18 +3570,6 @@
                 "isobject": "^3.0.0"
             }
         },
-        "object.entries": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz",
-            "integrity": "sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.17.0-next.1",
-                "function-bind": "^1.1.1",
-                "has": "^1.0.3"
-            }
-        },
         "object.map": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
@@ -4418,18 +3599,6 @@
                 "make-iterator": "^1.0.0"
             }
         },
-        "object.values": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
-            "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "es-abstract": "^1.17.0-next.1",
-                "function-bind": "^1.1.1",
-                "has": "^1.0.3"
-            }
-        },
         "once": {
             "version": "1.4.0",
             "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -4439,29 +3608,6 @@
                 "wrappy": "1"
             }
         },
-        "onetime": {
-            "version": "5.1.0",
-            "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
-            "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
-            "dev": true,
-            "requires": {
-                "mimic-fn": "^2.1.0"
-            }
-        },
-        "optionator": {
-            "version": "0.8.3",
-            "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
-            "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
-            "dev": true,
-            "requires": {
-                "deep-is": "~0.1.3",
-                "fast-levenshtein": "~2.0.6",
-                "levn": "~0.3.0",
-                "prelude-ls": "~1.1.2",
-                "type-check": "~0.3.2",
-                "word-wrap": "~1.2.3"
-            }
-        },
         "ordered-read-streams": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz",
@@ -4502,39 +3648,6 @@
                 "os-tmpdir": "^1.0.0"
             }
         },
-        "p-limit": {
-            "version": "1.3.0",
-            "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
-            "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
-            "dev": true,
-            "requires": {
-                "p-try": "^1.0.0"
-            }
-        },
-        "p-locate": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
-            "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
-            "dev": true,
-            "requires": {
-                "p-limit": "^1.1.0"
-            }
-        },
-        "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
-        },
-        "parent-module": {
-            "version": "1.0.1",
-            "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
-            "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-            "dev": true,
-            "requires": {
-                "callsites": "^3.0.0"
-            }
-        },
         "parse-filepath": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
@@ -4594,12 +3707,6 @@
             "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
             "dev": true
         },
-        "path-key": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-            "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
-            "dev": true
-        },
         "path-parse": {
             "version": "1.0.6",
             "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
@@ -4659,26 +3766,6 @@
                 "pinkie": "^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"
-            },
-            "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"
-                    }
-                }
-            }
-        },
         "plugin-error": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz",
@@ -4697,12 +3784,6 @@
             "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
             "dev": true
         },
-        "prelude-ls": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
-            "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
-            "dev": true
-        },
         "pretty-hrtime": {
             "version": "1.0.3",
             "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
@@ -4714,12 +3795,6 @@
             "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
             "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
         },
-        "progress": {
-            "version": "2.0.3",
-            "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
-            "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
-            "dev": true
-        },
         "pseudomap": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
@@ -4845,12 +3920,6 @@
                 "safe-regex": "^1.1.0"
             }
         },
-        "regexpp": {
-            "version": "2.0.1",
-            "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
-            "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
-            "dev": true
-        },
         "remove-bom-buffer": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz",
@@ -4975,12 +4044,6 @@
                 "global-modules": "^1.0.0"
             }
         },
-        "resolve-from": {
-            "version": "4.0.0",
-            "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-            "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-            "dev": true
-        },
         "resolve-options": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz",
@@ -4996,16 +4059,6 @@
             "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
             "dev": true
         },
-        "restore-cursor": {
-            "version": "3.1.0",
-            "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
-            "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
-            "dev": true,
-            "requires": {
-                "onetime": "^5.1.0",
-                "signal-exit": "^3.0.2"
-            }
-        },
         "ret": {
             "version": "0.1.15",
             "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
@@ -5021,24 +4074,6 @@
                 "glob": "^7.1.3"
             }
         },
-        "run-async": {
-            "version": "2.3.0",
-            "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
-            "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
-            "dev": true,
-            "requires": {
-                "is-promise": "^2.1.0"
-            }
-        },
-        "rxjs": {
-            "version": "6.5.4",
-            "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz",
-            "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==",
-            "dev": true,
-            "requires": {
-                "tslib": "^1.9.0"
-            }
-        },
         "safe-buffer": {
             "version": "5.1.2",
             "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@@ -5305,46 +4340,12 @@
                 }
             }
         },
-        "shebang-command": {
-            "version": "1.2.0",
-            "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-            "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
-            "dev": true,
-            "requires": {
-                "shebang-regex": "^1.0.0"
-            }
-        },
-        "shebang-regex": {
-            "version": "1.0.0",
-            "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-            "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
-            "dev": true
-        },
         "signal-exit": {
             "version": "3.0.2",
             "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
             "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
             "dev": true
         },
-        "slice-ansi": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
-            "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
-            "dev": true,
-            "requires": {
-                "ansi-styles": "^3.2.0",
-                "astral-regex": "^1.0.0",
-                "is-fullwidth-code-point": "^2.0.0"
-            },
-            "dependencies": {
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                }
-            }
-        },
         "snapdragon": {
             "version": "0.8.2",
             "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
@@ -5544,12 +4545,6 @@
                 "extend-shallow": "^3.0.0"
             }
         },
-        "sprintf-js": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
-            "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
-            "dev": true
-        },
         "sshpk": {
             "version": "1.16.1",
             "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
@@ -5636,26 +4631,6 @@
                 "strip-ansi": "^3.0.0"
             }
         },
-        "string.prototype.trimleft": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
-            "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "function-bind": "^1.1.1"
-            }
-        },
-        "string.prototype.trimright": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
-            "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
-            "dev": true,
-            "requires": {
-                "define-properties": "^1.1.3",
-                "function-bind": "^1.1.1"
-            }
-        },
         "string_decoder": {
             "version": "1.1.1",
             "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@@ -5691,12 +4666,6 @@
                 "get-stdin": "^4.0.1"
             }
         },
-        "strip-json-comments": {
-            "version": "3.0.1",
-            "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
-            "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
-            "dev": true
-        },
         "supports-color": {
             "version": "5.5.0",
             "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -5716,58 +4685,6 @@
                 "es6-symbol": "^3.1.1"
             }
         },
-        "table": {
-            "version": "5.4.6",
-            "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
-            "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
-            "dev": true,
-            "requires": {
-                "ajv": "^6.10.2",
-                "lodash": "^4.17.14",
-                "slice-ansi": "^2.1.0",
-                "string-width": "^3.0.0"
-            },
-            "dependencies": {
-                "ansi-regex": {
-                    "version": "4.1.0",
-                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
-                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
-                    "dev": true
-                },
-                "emoji-regex": {
-                    "version": "7.0.3",
-                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
-                    "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
-                    "dev": true
-                },
-                "is-fullwidth-code-point": {
-                    "version": "2.0.0",
-                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
-                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
-                    "dev": true
-                },
-                "string-width": {
-                    "version": "3.1.0",
-                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
-                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
-                    "dev": true,
-                    "requires": {
-                        "emoji-regex": "^7.0.1",
-                        "is-fullwidth-code-point": "^2.0.0",
-                        "strip-ansi": "^5.1.0"
-                    }
-                },
-                "strip-ansi": {
-                    "version": "5.2.0",
-                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
-                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
-                    "dev": true,
-                    "requires": {
-                        "ansi-regex": "^4.1.0"
-                    }
-                }
-            }
-        },
         "tar": {
             "version": "2.2.2",
             "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
@@ -5790,18 +4707,6 @@
                 "source-map-support": "~0.5.12"
             }
         },
-        "text-table": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
-            "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
-            "dev": true
-        },
-        "through": {
-            "version": "2.3.8",
-            "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-            "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
-            "dev": true
-        },
         "through2": {
             "version": "2.0.5",
             "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
@@ -5827,15 +4732,6 @@
             "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=",
             "dev": true
         },
-        "tmp": {
-            "version": "0.0.33",
-            "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
-            "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
-            "dev": true,
-            "requires": {
-                "os-tmpdir": "~1.0.2"
-            }
-        },
         "to-absolute-glob": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz",
@@ -5922,12 +4818,6 @@
                 "glob": "^7.1.2"
             }
         },
-        "tslib": {
-            "version": "1.10.0",
-            "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
-            "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
-            "dev": true
-        },
         "tunnel-agent": {
             "version": "0.6.0",
             "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -5949,21 +4839,6 @@
             "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==",
             "dev": true
         },
-        "type-check": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
-            "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
-            "dev": true,
-            "requires": {
-                "prelude-ls": "~1.1.2"
-            }
-        },
-        "type-fest": {
-            "version": "0.8.1",
-            "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
-            "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
-            "dev": true
-        },
         "typedarray": {
             "version": "0.0.6",
             "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
@@ -6116,12 +4991,6 @@
             "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
             "dev": true
         },
-        "v8-compile-cache": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz",
-            "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==",
-            "dev": true
-        },
         "v8flags": {
             "version": "3.2.0",
             "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
@@ -6253,12 +5122,6 @@
                 "string-width": "^1.0.2 || 2"
             }
         },
-        "word-wrap": {
-            "version": "1.2.3",
-            "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
-            "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
-            "dev": true
-        },
         "wordwrap": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
@@ -6280,15 +5143,6 @@
             "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
             "dev": true
         },
-        "write": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
-            "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
-            "dev": true,
-            "requires": {
-                "mkdirp": "^0.5.1"
-            }
-        },
         "wysihtml": {
             "version": "0.6.0-beta1",
             "resolved": "https://registry.npmjs.org/wysihtml/-/wysihtml-0.6.0-beta1.tgz",
diff --git a/ui/package.json b/ui/package.json
index 797bb42..1bc6fa0 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -3,7 +3,7 @@
     "version": "1.0.0",
     "description": "Scripts to power the front-end of Apache Sling's CMS example.",
     "dependencies": {
-        "bulma": "^0.8.2",
+        "bulma": "^0.9.0",
         "gulp-noop": "^1.0.0",
         "handlebars": "^4.7.6",
         "jam-icons": "^2.0.0",
@@ -13,9 +13,6 @@
         "wysihtml": "^0.6.0-beta1"
     },
     "devDependencies": {
-        "eslint": "^6.8.0",
-        "eslint-config-airbnb-base": "^14.1.0",
-        "eslint-plugin-import": "^2.20.2",
         "gulp": "^4.0.2",
         "gulp-clean-css": "^4.3.0",
         "gulp-cli": "^2.2.1",
diff --git a/ui/src/main/frontend/scss/editor.scss b/ui/src/main/frontend/scss/editor.scss
index cd26fb9..25762da 100644
--- a/ui/src/main/frontend/scss/editor.scss
+++ b/ui/src/main/frontend/scss/editor.scss
@@ -17,22 +17,26 @@
  * under the License.
  */
 .sling-cms-editor {
-  @import 'fonts';
-  @import 'overrides';
+  @import "fonts";
+  @import "overrides";
   @import "../../../../node_modules/bulma/sass/utilities/_all.sass";
-  @import "../../../../node_modules/bulma/sass/base/_all.sass";
+  @import "../../../../node_modules/bulma/sass/helpers/_all.sass";
   @import "../../../../node_modules/bulma/sass/elements/box.sass";
   @import "../../../../node_modules/bulma/sass/elements/button.sass";
   @import "../../../../node_modules/bulma/sass/form/_all.sass";
   @import "../../../../node_modules/bulma/sass/elements/icon.sass";
   @import "../../../../node_modules/bulma/sass/components/level.sass";
   @import "../../../../node_modules/bulma/sass/components/modal.sass";
-  font-family: "Open Sans",sans-serif;
+  font-family: "Open Sans", sans-serif;
 
   * {
     box-sizing: border-box;
   }
 
+  .button {
+    text-decoration: none;
+  }
+
   [draggable] {
     -moz-user-select: none;
     -khtml-user-select: none;
@@ -98,7 +102,7 @@
 }
 
 .sling-cms-component {
-  border: 1px solid rgba(0,0,0,0.0);
+  border: 1px solid rgba(0, 0, 0, 0);
 }
 
 .sling-cms-component__is-active {


[sling-org-apache-sling-app-cms] 02/05: Updating to the latest dependencies

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit 34733d4a05bd028ba1764115e0985113b1385761
Author: Dan Klco <dk...@apache.org>
AuthorDate: Mon Jul 13 17:15:52 2020 -0400

    Updating to the latest dependencies
---
 builder/src/main/provisioning/boot.txt             |  4 ++--
 builder/src/main/provisioning/scripting.txt        | 15 +++++++--------
 builder/src/main/provisioning/sling-validation.txt |  1 +
 builder/src/main/provisioning/sling.txt            | 17 +++++++++++------
 4 files changed, 21 insertions(+), 16 deletions(-)

diff --git a/builder/src/main/provisioning/boot.txt b/builder/src/main/provisioning/boot.txt
index 81008e1..fccfa6f 100644
--- a/builder/src/main/provisioning/boot.txt
+++ b/builder/src/main/provisioning/boot.txt
@@ -48,7 +48,7 @@
     org.apache.servicemix.specs/org.apache.servicemix.specs.jaxb-api-2.2/2.9.0
     org.apache.servicemix.bundles/org.apache.servicemix.bundles.jaxb-impl/2.2.11_1
     org.slf4j/slf4j-api/${slf4j.version}
-    org.apache.sling/org.apache.sling.commons.log/5.1.10
+    org.apache.sling/org.apache.sling.commons.log/5.1.12
     org.apache.sling/org.apache.sling.commons.logservice/1.1.0
     org.apache.sling/org.apache.sling.commons.johnzon/1.2.2
     org.slf4j/jcl-over-slf4j/${slf4j.version}
@@ -58,7 +58,7 @@
     org.apache.sling/org.apache.sling.commons.osgi/2.4.0
     org.apache.sling/org.apache.sling.installer.core/3.11.2
     org.apache.sling/org.apache.sling.installer.provider.file/1.2.2
-    org.apache.sling/org.apache.sling.installer.factory.configuration/1.3.0
+    org.apache.sling/org.apache.sling.installer.factory.configuration/1.3.2
     org.apache.felix/org.apache.felix.configadmin/1.9.16
     org.apache.felix/org.apache.felix.eventadmin/1.5.0
     org.apache.aries/org.apache.aries.util/1.1.3
diff --git a/builder/src/main/provisioning/scripting.txt b/builder/src/main/provisioning/scripting.txt
index e513051..ce66e92 100644
--- a/builder/src/main/provisioning/scripting.txt
+++ b/builder/src/main/provisioning/scripting.txt
@@ -21,19 +21,18 @@
 
 [artifacts]
     org.apache.sling/org.apache.sling.scripting.api/2.2.0
-    org.apache.sling/org.apache.sling.scripting.core/2.2.0
+    org.apache.sling/org.apache.sling.scripting.core/2.3.0
     org.apache.sling/org.apache.sling.scripting.javascript/3.1.2
-    org.apache.sling/org.apache.sling.scripting.jsp/2.4.2
+    org.apache.sling/org.apache.sling.scripting.jsp/2.5.0
     org.apache.sling/org.apache.sling.scripting.jsp-api/1.0.2
     org.apache.sling/org.apache.sling.scripting.el-api/1.0.2
     org.apache.sling/org.apache.sling.scripting.jsp.taglib/2.4.0
     org.antlr/antlr4-runtime/4.7.2
-    org.apache.sling/org.apache.sling.scripting.sightly.runtime/1.2.0-1.4.0
-    org.apache.sling/org.apache.sling.scripting.sightly.compiler/1.2.4-1.4.0
-    org.apache.sling/org.apache.sling.scripting.sightly.compiler.java/1.1.4-1.4.0
-    org.apache.sling/org.apache.sling.scripting.sightly/1.3.2-1.4.0
-    org.apache.sling/org.apache.sling.scripting.sightly.js.provider/1.1.0
-    org.apache.sling/org.apache.sling.scripting.sightly.models.provider/1.0.10
+    org.apache.sling/org.apache.sling.scripting.sightly.runtime/1.2.2-1.4.0
+    org.apache.sling/org.apache.sling.scripting.sightly.compiler/1.2.6-1.4.0
+    org.apache.sling/org.apache.sling.scripting.sightly.compiler.java/1.2.0-1.4.0
+    org.apache.sling/org.apache.sling.scripting.sightly/1.4.0-1.4.0
+    org.apache.sling/org.apache.sling.scripting.sightly.js.provider/1.2.0
     org.apache.sling/org.apache.sling.scripting.sightly.repl/1.0.6
     org.apache.servicemix.bundles/org.apache.servicemix.bundles.rhino/1.7.10_1
 
diff --git a/builder/src/main/provisioning/sling-validation.txt b/builder/src/main/provisioning/sling-validation.txt
index 3635ee1..9201a7c 100644
--- a/builder/src/main/provisioning/sling-validation.txt
+++ b/builder/src/main/provisioning/sling-validation.txt
@@ -22,6 +22,7 @@
 [artifacts]
     org.apache.sling/org.apache.sling.validation.api/1.0.0
     org.apache.sling/org.apache.sling.validation.core/1.0.4
+    org.apache.sling/org.apache.sling.models.validation-impl/1.0.0
 
 [:repoinit]
     create service user sling-validation
diff --git a/builder/src/main/provisioning/sling.txt b/builder/src/main/provisioning/sling.txt
index 4ba0b95..e5962d8 100644
--- a/builder/src/main/provisioning/sling.txt
+++ b/builder/src/main/provisioning/sling.txt
@@ -47,7 +47,7 @@
     commons-fileupload/commons-fileupload/1.4
     org.apache.sling/org.apache.sling.commons.log.webconsole/1.0.0
     org.apache.sling/org.apache.sling.api/2.22.0
-    org.apache.sling/org.apache.sling.auth.core/1.4.6
+    org.apache.sling/org.apache.sling.auth.core/1.4.8
     
 [artifacts startLevel=10]
     org.apache.felix/org.apache.felix.http.sslfilter/1.2.6
@@ -85,10 +85,10 @@
     org.apache.httpcomponents/httpcore-osgi/4.4.12
     org.apache.httpcomponents/httpclient-osgi/4.5.10
     org.apache.sling/org.apache.sling.adapter/2.1.10
-    org.apache.sling/org.apache.sling.auth.form/1.0.16
+    org.apache.sling/org.apache.sling.auth.form/1.0.20
     org.apache.sling/org.apache.sling.bundleresource.impl/2.3.2
     org.apache.sling/org.apache.sling.commons.classloader/1.4.4
-    org.apache.sling/org.apache.sling.commons.compiler/2.3.6
+    org.apache.sling/org.apache.sling.commons.compiler/2.4.0
     org.apache.sling/org.apache.sling.commons.fsclassloader/1.0.12
     org.apache.sling/org.apache.sling.commons.mime/2.2.2
     org.apache.sling/org.apache.sling.commons.scheduler/2.7.6
@@ -100,9 +100,9 @@
     org.apache.sling/org.apache.sling.installer.provider.jcr/3.2.2
     org.apache.sling/org.apache.sling.installer.hc/2.0.2
     org.apache.jackrabbit.vault/org.apache.jackrabbit.vault/3.4.4
-    org.apache.sling/org.apache.sling.installer.factory.packages/1.0.2
+    org.apache.sling/org.apache.sling.installer.factory.packages/1.0.4
     org.apache.sling/org.apache.sling.jcr.contentloader/2.3.0
-    org.apache.sling/org.apache.sling.jcr.resource/3.0.20
+    org.apache.sling/org.apache.sling.jcr.resource/3.0.22
     org.apache.sling/org.apache.sling.models.api/1.3.8
     org.apache.sling/org.apache.sling.models.impl/1.4.12
     org.apache.sling/org.apache.sling.resourceresolver/1.6.16
@@ -110,7 +110,7 @@
     org.apache.sling/org.apache.sling.serviceuser.webconsole/1.0.2
     org.apache.sling/org.apache.sling.servlets.get/2.1.40
     org.apache.sling/org.apache.sling.servlets.post/2.3.36
-    org.apache.sling/org.apache.sling.servlets.resolver/2.6.4
+    org.apache.sling/org.apache.sling.servlets.resolver/2.7.2
     org.apache.sling/org.apache.sling.xss/2.2.2
     javax.mail/mail/1.5.0-b01
     org.apache.geronimo.bundles/jstl/1.2_1
@@ -213,3 +213,8 @@
       "org.apache.sling.jcr.resource:validation\=sling-readall"
     ]
 
+  org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-installer-factories
+    user.mapping=[
+      "org.apache.sling.installer.factory.packages\=sling-package-install"
+    ]
+


[sling-org-apache-sling-app-cms] 03/05: Minor - Re-adding support for smoke-testing the build artifact

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit f669145cb8faf09518476d2eb6dee2af6074b7aa
Author: Dan Klco <dk...@apache.org>
AuthorDate: Mon Jul 13 17:20:26 2020 -0400

    Minor - Re-adding support for smoke-testing the build artifact
---
 builder/pom.xml                                    |   3 +-
 .../apache/sling/launchpad/LaunchpadReadyRule.java | 121 +++++++++++++
 .../java/org/apache/sling/launchpad/SmokeIT.java   | 195 +++++++++++++++++++++
 .../org/apache/sling/launchpad/package-info.java   |  30 ++++
 4 files changed, 347 insertions(+), 2 deletions(-)

diff --git a/builder/pom.xml b/builder/pom.xml
index d3a2898..a2277ba 100644
--- a/builder/pom.xml
+++ b/builder/pom.xml
@@ -26,7 +26,7 @@
 
     <properties>
         <sling.java.version>8</sling.java.version>
-        <IT.expected.bundles.count>125</IT.expected.bundles.count>
+        <IT.expected.bundles.count>208</IT.expected.bundles.count>
         <cms.version>${project.parent.version}</cms.version>
     </properties>
 
@@ -163,4 +163,3 @@
         </dependency>
     </dependencies>
 </project>
-
diff --git a/builder/src/test/java/org/apache/sling/launchpad/LaunchpadReadyRule.java b/builder/src/test/java/org/apache/sling/launchpad/LaunchpadReadyRule.java
new file mode 100644
index 0000000..5b7815d
--- /dev/null
+++ b/builder/src/test/java/org/apache/sling/launchpad/LaunchpadReadyRule.java
@@ -0,0 +1,121 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.launchpad;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.ConnectException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.junit.rules.ExternalResource;
+
+public class LaunchpadReadyRule extends ExternalResource {
+
+    private static final int TRIES = 60;
+    private static final int WAIT_BETWEEN_TRIES_MILLIS = 1000;
+
+    private final List<Check> checks = new ArrayList<>();
+
+    public LaunchpadReadyRule(int launchpadPort) {
+
+        checks.add(new Check("http://localhost:" + launchpadPort + "/server/default/jcr:root/content"));
+        checks.add(new Check("http://localhost:" + launchpadPort + "/content/apache/sling-apache-org/index.html") {
+            @Override
+            public String runCheck(HttpResponse response) throws Exception {
+                try (InputStreamReader isr = new InputStreamReader(response.getEntity().getContent());
+                        BufferedReader reader = new BufferedReader(isr)) {
+
+                    String line;
+                    while ((line = reader.readLine()) != null) {
+                        if (line.contains("Apache Sling - Bringing Back the Fun!")) {
+                            return null;
+                        }
+                    }
+                }
+
+                return "Did not find 'ready' marker in the response body";
+            }
+        });
+    }
+
+    @Override
+    protected void before() throws Throwable {
+
+        try (CloseableHttpClient client = HttpClients.createDefault()) {
+            for (Check check : checks) {
+                runCheck(client, check);
+            }
+        }
+    }
+
+    private void runCheck(CloseableHttpClient client, Check check) throws Exception {
+
+        String lastFailure = null;
+        HttpGet get = new HttpGet(check.getUrl());
+        
+        for (int i = 0; i < TRIES; i++) {
+            try (CloseableHttpResponse response = client.execute(get)) {
+
+                if (response.getStatusLine().getStatusCode() != 200) {
+                    lastFailure = "Status code is " + response.getStatusLine();
+                    Thread.sleep(WAIT_BETWEEN_TRIES_MILLIS);
+                    continue;
+                }
+
+                lastFailure = check.runCheck(response);
+                if (lastFailure == null) {
+                    return;
+                }
+            } catch ( ConnectException e ) {
+                lastFailure = e.getClass().getName() + " : " + e.getMessage();
+            }
+
+            Thread.sleep(WAIT_BETWEEN_TRIES_MILLIS);
+        }
+        
+        throw new RuntimeException(String.format("Launchpad not ready. Failed check for URL %s with message '%s'",
+                check.getUrl(), lastFailure));
+    }
+
+    static class Check {
+        private String url;
+
+        public Check(String url) {
+            this.url = url;
+        }
+
+        public String getUrl() {
+            return url;
+        }
+
+        /**
+         * @param response the HttpResponse
+         * @return null if check check was successful, an error description otherwise
+         * @throws Exception
+         */
+        public String runCheck(HttpResponse response) throws Exception {
+            return null;
+        }
+    }
+
+}
diff --git a/builder/src/test/java/org/apache/sling/launchpad/SmokeIT.java b/builder/src/test/java/org/apache/sling/launchpad/SmokeIT.java
new file mode 100644
index 0000000..71676dc
--- /dev/null
+++ b/builder/src/test/java/org/apache/sling/launchpad/SmokeIT.java
@@ -0,0 +1,195 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+package org.apache.sling.launchpad;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
+
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.felix.utils.json.JSONParser;
+import org.apache.http.Header;
+import org.apache.http.HttpHost;
+import org.apache.http.auth.AuthScope;
+import org.apache.http.auth.UsernamePasswordCredentials;
+import org.apache.http.client.CredentialsProvider;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.protocol.HttpClientContext;
+import org.apache.http.impl.auth.BasicScheme;
+import org.apache.http.impl.client.BasicAuthCache;
+import org.apache.http.impl.client.BasicCredentialsProvider;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.hamcrest.CoreMatchers;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+public class SmokeIT {
+
+    private static final int LAUNCHPAD_PORT = Integer.getInteger("launchpad.http.port", 8080);
+    private static final int EXPECTED_BUNDLES_COUNT = Integer.getInteger("IT.expected.bundles.count", Integer.MAX_VALUE);
+
+    @ClassRule
+    public static LaunchpadReadyRule LAUNCHPAD = new LaunchpadReadyRule(LAUNCHPAD_PORT);
+    private HttpClientContext httpClientContext;
+
+    @Before
+    public void prepareHttpContext() {
+
+        CredentialsProvider credsProvider = new BasicCredentialsProvider();
+        UsernamePasswordCredentials creds = new UsernamePasswordCredentials("admin", "admin");
+        credsProvider.setCredentials(new AuthScope("localhost", LAUNCHPAD_PORT), creds);
+
+        BasicAuthCache authCache = new BasicAuthCache();
+        BasicScheme basicAuth = new BasicScheme();
+        authCache.put(new HttpHost("localhost", LAUNCHPAD_PORT, "http"), basicAuth);
+
+        httpClientContext = HttpClientContext.create();
+        httpClientContext.setCredentialsProvider(credsProvider);
+        httpClientContext.setAuthCache(authCache);
+    }
+
+    private CloseableHttpClient newClient() {
+
+        return HttpClientBuilder.create()
+                .setDefaultCredentialsProvider(httpClientContext.getCredentialsProvider())
+                .build();
+    }
+
+    @Test
+    public void verifyAllBundlesStarted() throws Exception {
+
+        try ( CloseableHttpClient client = newClient() ) {
+
+            HttpGet get = new HttpGet("http://localhost:" + LAUNCHPAD_PORT + "/system/console/bundles.json");
+
+            // pass the context to ensure preemptive basic auth is used
+            // https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html
+            try ( CloseableHttpResponse response = client.execute(get, httpClientContext) ) {
+
+                if ( response.getStatusLine().getStatusCode() != 200 ) {
+                    fail("Unexpected status line " + response.getStatusLine());
+                }
+
+                Header contentType = response.getFirstHeader("Content-Type");
+                assertThat("Content-Type header", contentType.getValue(), CoreMatchers.startsWith("application/json"));
+
+                Map<String, Object> obj = new JSONParser(response.getEntity().getContent()).getParsed();
+
+                @SuppressWarnings("unchecked")
+                List<Object> status = (List<Object>) obj.get("s");
+
+                @SuppressWarnings("unchecked")
+                List<Object> bundles = (List<Object>) obj.get("data");
+                if(bundles.size() < EXPECTED_BUNDLES_COUNT) {
+                    fail("Expected at least " + EXPECTED_BUNDLES_COUNT + " bundles, got " + bundles.size());
+                }
+
+                BundleStatus bs = new BundleStatus(status);
+
+                if ( bs.resolvedBundles != 0 || bs.installedBundles != 0 ) {
+
+                    StringBuilder out = new StringBuilder();
+                    out.append("Expected all bundles to be active, but instead got ")
+                        .append(bs.resolvedBundles).append(" resolved bundles, ")
+                        .append(bs.installedBundles).append(" installed bundlles: ");
+
+                    for ( int i = 0 ; i < bundles.size(); i++ ) {
+                        @SuppressWarnings("unchecked")
+                        Map<String, Object> bundle = (Map<String, Object>) bundles.get(i);
+
+                        String bundleState = (String) bundle.get("state");
+                        String bundleSymbolicName = (String) bundle.get("symbolicName");
+                        String bundleVersion = (String) bundle.get("version");
+
+                        switch ( bundleState ) {
+                            case "Active":
+                            case "Fragment":
+                                continue;
+
+                            default:
+                                out.append("\n- ").append(bundleSymbolicName).append(" ").append(bundleVersion).append(" is in state " ).append(bundleState);
+                        }
+                    }
+
+                    fail(out.toString());
+                }
+            }
+        }
+    }
+
+    @Test
+    public void ensureRepositoryIsStarted() throws Exception {
+        try ( CloseableHttpClient client = newClient() ) {
+
+            HttpGet get = new HttpGet("http://localhost:" + LAUNCHPAD_PORT + "/server/default/jcr:root/content");
+
+            try ( CloseableHttpResponse response = client.execute(get) ) {
+
+                if ( response.getStatusLine().getStatusCode() != 200 ) {
+                    fail("Unexpected status line " + response.getStatusLine());
+                }
+
+                Header contentType = response.getFirstHeader("Content-Type");
+                assertThat("Content-Type header", contentType.getValue(), equalTo("text/xml"));
+
+                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+                dbf.setNamespaceAware(true);
+                DocumentBuilder db = dbf.newDocumentBuilder();
+                Document document = db.parse(response.getEntity().getContent());
+
+                Element docElement = document.getDocumentElement();
+                NamedNodeMap attrs = docElement.getAttributes();
+
+                Node nameAttr = attrs.getNamedItemNS("http://www.jcp.org/jcr/sv/1.0", "name");
+                assertThat("no 'name' attribute found", nameAttr, notNullValue());
+                assertThat("Invalid name attribute value", nameAttr.getNodeValue(), equalTo("content"));
+            }
+        }
+    }
+
+    static class BundleStatus {
+
+        long totalBundles;
+        long activeBundles;
+        long activeFragments;
+        long resolvedBundles;
+        long installedBundles;
+
+        public BundleStatus(List<Object> array) {
+
+            totalBundles = (Long)array.get(0);
+            activeBundles = (Long)array.get(1);
+            activeFragments = (Long)array.get(2);
+            resolvedBundles = (Long)array.get(3);
+            installedBundles = (Long)array.get(4);
+
+        }
+    }
+}
diff --git a/builder/src/test/java/org/apache/sling/launchpad/package-info.java b/builder/src/test/java/org/apache/sling/launchpad/package-info.java
new file mode 100644
index 0000000..f70e5e8
--- /dev/null
+++ b/builder/src/test/java/org/apache/sling/launchpad/package-info.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+/**
+ * <h1>Smoke tests for the Sling Launchpad</h1>
+ * 
+ * <p>This package contains a minimal set of tests for the Sling launchpad. The
+ * tests validate that the launchpad is correctly assembled and that there are
+ * no obvious mistakes such as bundles that can't be wired. More extensive
+ * tests must be placed in specific test projects.</p>
+ * 
+ * <p>The launchpad tests don't depend on other Sling bundles,to prevent circular
+ * dependencies. As such, there is some duplication of code ( at least intent, if 
+ * not implementation ) with some of the testing projects. This is another 
+ * argument for keeping the tests minimal.</p>
+ */
+package org.apache.sling.launchpad;
\ No newline at end of file


[sling-org-apache-sling-app-cms] 05/05: Resizing the editor modals on load

Posted by dk...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

dklco pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git

commit 22febc7ac7f46584a392aca6f8d02c88593c6876
Author: Dan Klco <dk...@apache.org>
AuthorDate: Mon Jul 13 17:21:41 2020 -0400

    Resizing the editor modals on load
---
 ui/src/main/frontend/js/editor.js                  | 209 ++++++++++++---------
 .../sling-cms/components/pages/editor/body.jsp     |  18 +-
 2 files changed, 134 insertions(+), 93 deletions(-)

diff --git a/ui/src/main/frontend/js/editor.js b/ui/src/main/frontend/js/editor.js
index aaafd25..752f47a 100644
--- a/ui/src/main/frontend/js/editor.js
+++ b/ui/src/main/frontend/js/editor.js
@@ -28,12 +28,12 @@ if (!window.CMSEditor) {
       // closing the modal
       CMSEditor.util.attachClick(
         document,
-        '.sling-cms-editor .modal-close, .sling-cms-editor .modal-background',
+        ".sling-cms-editor .modal-close, .sling-cms-editor .modal-background",
         () => {
           CMSEditor.ui.hideModal();
-        },
+        }
       );
-      window.addEventListener('keypress', (e) => {
+      window.addEventListener("keypress", (e) => {
         if (e.keyCode === 27 && CMSEditor.ui.modalDisplayed === true) {
           CMSEditor.ui.hideModal();
         }
@@ -53,17 +53,17 @@ if (!window.CMSEditor) {
         }
 
         // mouse button down over the element
-        CMSEditor.draggable.addEventListener('mousedown', (evt) => {
-          if (!evt.target.matches('.modal-title, .modal-title *')) {
+        CMSEditor.draggable.addEventListener("mousedown", (evt) => {
+          if (!evt.target.matches(".modal-title, .modal-title *")) {
             return;
           }
           mouseX = evt.clientX;
           mouseY = evt.clientY;
           mouseDown = true;
         });
-        CMSEditor.draggable.addEventListener('mouseup', moveComplete);
-        document.addEventListener('mouseout', moveComplete);
-        document.addEventListener('mousemove', (event) => {
+        CMSEditor.draggable.addEventListener("mouseup", moveComplete);
+        document.addEventListener("mouseout", moveComplete);
+        document.addEventListener("mousemove", (event) => {
           if (!mouseDown) {
             return;
           }
@@ -76,8 +76,8 @@ if (!window.CMSEditor) {
       modalDisplayed: false,
       hideModal() {
         if (CMSEditor.ui.modalDisplayed) {
-          if (document.querySelector('.sling-cms-editor .modal')) {
-            document.querySelector('.sling-cms-editor .modal').remove();
+          if (document.querySelector(".sling-cms-editor .modal")) {
+            document.querySelector(".sling-cms-editor .modal").remove();
           }
           CMSEditor.ui.modalDisplayed = false;
         }
@@ -85,17 +85,17 @@ if (!window.CMSEditor) {
       reloadComponent(ip, cb) {
         let path = ip;
         let component = document.querySelector(
-          `.sling-cms-component[data-sling-cms-resource-path="${path}"]`,
+          `.sling-cms-component[data-sling-cms-resource-path="${path}"]`
         );
-        let forceReload = component && component.dataset.reload === 'true';
+        let forceReload = component && component.dataset.reload === "true";
         while (!component && path.length > 1) {
-          const pathArr = path.split('/');
+          const pathArr = path.split("/");
           pathArr.pop();
-          path = pathArr.join('/');
+          path = pathArr.join("/");
           component = document.querySelector(
-            `.sling-cms-component[data-sling-cms-resource-path="${path}"]`,
+            `.sling-cms-component[data-sling-cms-resource-path="${path}"]`
           );
-          if (component && component.dataset.reload === 'true') {
+          if (component && component.dataset.reload === "true") {
             forceReload = true;
           }
         }
@@ -106,8 +106,8 @@ if (!window.CMSEditor) {
         fetch(
           `/cms/page/pagewrapper.html${path}?forceResourceType=${component.dataset.slingCmsResourceType}`,
           {
-            redirect: 'manual',
-          },
+            redirect: "manual",
+          }
         )
           .then((response) => {
             if (!response.ok) {
@@ -117,39 +117,41 @@ if (!window.CMSEditor) {
             return response.text();
           })
           .then((html) => {
-            const tmp = document.createElement('div');
+            const tmp = document.createElement("div");
             tmp.innerHTML = html;
             CMSEditor.util.attachEvents(tmp);
-            component.replaceWith(tmp.querySelector('.sling-cms-component'));
+            component.replaceWith(tmp.querySelector(".sling-cms-component"));
             tmp.remove();
             CMSEditor.ui.hideModal();
             cb();
           });
       },
       showModal(url, t) {
-        const title = t || '';
+        const title = t || "";
         if (CMSEditor.ui.modalDisplayed) {
           CMSEditor.ui.hideModal();
         }
-        document.querySelector('.sling-cms-editor-final').innerHTML = '<div class="modal"><div class="modal-background"></div><div class="modal-content"><div class="box"><h3 class="modal-title"></h3><section class="modal-body"></section></div></div><button class="modal-close is-large" aria-label="close"></button>';
+
+        document.querySelector(".sling-cms-editor-final").innerHTML =
+          '<div class="modal"><div class="modal-background"></div><div class="modal-content"><div class="box"><h3 class="modal-title"></h3><section class="modal-body"></section></div></div><button class="modal-close is-large" aria-label="close"></button>';
         document.querySelector(
-          '.sling-cms-editor .modal-title',
+          ".sling-cms-editor .modal-title"
         ).innerText = title;
         document.querySelector(
-          '.sling-cms-editor .modal-body',
+          ".sling-cms-editor .modal-body"
         ).innerHTML = `<iframe class="modal-frame" src="${url}"></iframe>`;
         document
-          .querySelector('.sling-cms-editor .modal')
-          .classList.add('is-active');
+          .querySelector(".sling-cms-editor .modal")
+          .classList.add("is-active");
         CMSEditor.util.attachClick(
           document,
-          '.sling-cms-editor .modal-background, .sling-cms-editor .modal-close',
+          ".sling-cms-editor .modal-background, .sling-cms-editor .modal-close",
           () => {
             CMSEditor.ui.hideModal();
-          },
+          }
         );
         CMSEditor.ui.draggable(
-          document.querySelector('.sling-cms-editor .modal-content'),
+          document.querySelector(".sling-cms-editor .modal-content")
         );
         CMSEditor.ui.modalDisplayed = true;
       },
@@ -157,7 +159,7 @@ if (!window.CMSEditor) {
     util: {
       attachClick(ctx, exp, cb) {
         ctx.querySelectorAll(exp).forEach((el) => {
-          el.addEventListener('click', cb, false);
+          el.addEventListener("click", cb, false);
         });
       },
       attachDrag(ed) {
@@ -165,72 +167,72 @@ if (!window.CMSEditor) {
         let dragActive = false;
         function handleOver(evt) {
           evt.preventDefault();
-          document.querySelectorAll('.sling-cms-droptarget').forEach((dt) => {
-            dt.classList.remove('sling-cms-droptarget__is-over');
+          document.querySelectorAll(".sling-cms-droptarget").forEach((dt) => {
+            dt.classList.remove("sling-cms-droptarget__is-over");
           });
-          evt.target.classList.add('sling-cms-droptarget__is-over');
+          evt.target.classList.add("sling-cms-droptarget__is-over");
         }
         function handleLeave(evt) {
-          evt.target.classList.remove('sling-cms-droptarget__is-over');
+          evt.target.classList.remove("sling-cms-droptarget__is-over");
         }
         function handleDrop(evt) {
           evt.preventDefault();
 
-          const sourcePath = evt.dataTransfer.getData('path');
-          const sourceName = evt.dataTransfer.getData('name');
+          const sourcePath = evt.dataTransfer.getData("path");
+          const sourceName = evt.dataTransfer.getData("name");
           const targetPath = `${evt.target.dataset.path}/${sourceName}`;
 
           async function move() {
             const formData = new FormData();
-            formData.append('_charset_', 'utf-8');
+            formData.append("_charset_", "utf-8");
             if (sourcePath !== targetPath) {
-              formData.append(':dest', targetPath);
-              formData.append(':operation', 'move');
+              formData.append(":dest", targetPath);
+              formData.append(":operation", "move");
             }
-            formData.append(':nameHint', sourceName);
-            formData.append(':order', evt.target.dataset.order);
+            formData.append(":nameHint", sourceName);
+            formData.append(":order", evt.target.dataset.order);
             let ui;
-            if (typeof Sling !== 'undefined') {
+            if (typeof Sling !== "undefined") {
               ui = Sling.CMS.ui;
             } else {
               ui = window.parent.Sling.CMS.ui;
             }
             const response = await fetch(sourcePath, {
-              method: 'POST',
+              method: "POST",
               body: formData,
-              cache: 'no-cache',
+              cache: "no-cache",
               headers: {
-                Accept: 'application/json',
+                Accept: "application/json",
               },
             });
             const res = await response.json();
             if (!response.ok) {
               ui.confirmMessage(
-                'Failed to move',
-                res['status.message'] || response.statusText,
-                () => {},
+                "Failed to move",
+                res["status.message"] || response.statusText,
+                () => {}
               );
             } else {
-              ui.confirmReload(res, 'success');
+              ui.confirmReload(res, "success");
             }
-            evt.target.classList.remove('sling-cms-droptarget__is-over');
+            evt.target.classList.remove("sling-cms-droptarget__is-over");
           }
           if (evt.target.dataset.create) {
             const formData = new FormData();
-            formData.append('_charset_', 'utf-8');
-            formData.append('jcr:primaryType', 'nt:unstructured');
+            formData.append("_charset_", "utf-8");
+            formData.append("jcr:primaryType", "nt:unstructured");
             let ui;
-            if (typeof Sling !== 'undefined') {
+            if (typeof Sling !== "undefined") {
               ui = Sling.CMS.ui;
             } else {
               ui = window.parent.Sling.CMS.ui;
             }
             fetch(evt.target.dataset.path, {
-              method: 'POST',
+              method: "POST",
               body: formData,
-              cache: 'no-cache',
+              cache: "no-cache",
               headers: {
-                Accept: 'application/json',
+                Accept: "application/json",
               },
             })
               .then((response) => {
@@ -251,83 +253,90 @@ if (!window.CMSEditor) {
         }
         function activateTargets() {
           if (dragActive) {
-            document.querySelectorAll('.sling-cms-droptarget').forEach((dt) => {
-              dt.classList.add('sling-cms-droptarget__is-active');
-              dt.addEventListener('dragover', handleOver);
-              dt.addEventListener('dragleave', handleLeave);
-              dt.addEventListener('drop', handleDrop);
+            document.querySelectorAll(".sling-cms-droptarget").forEach((dt) => {
+              dt.classList.add("sling-cms-droptarget__is-active");
+              dt.addEventListener("dragover", handleOver);
+              dt.addEventListener("dragleave", handleLeave);
+              dt.addEventListener("drop", handleDrop);
             });
           }
         }
         function deactivateTargets() {
           dragActive = false;
-          document.querySelectorAll('.sling-cms-droptarget').forEach((dt) => {
-            dt.classList.remove('sling-cms-droptarget__is-active');
-            dt.removeEventListener('dragover', handleOver);
-            dt.removeEventListener('dragleave', handleLeave);
-            dt.removeEventListener('drop', handleDrop);
+          document.querySelectorAll(".sling-cms-droptarget").forEach((dt) => {
+            dt.classList.remove("sling-cms-droptarget__is-active");
+            dt.removeEventListener("dragover", handleOver);
+            dt.removeEventListener("dragleave", handleLeave);
+            dt.removeEventListener("drop", handleDrop);
           });
           if (dragImage) {
             dragImage.remove();
           }
         }
-        ed.addEventListener('dragstart', (evt) => {
+        ed.addEventListener("dragstart", (evt) => {
           const event = evt;
           event.stopPropagation();
           dragActive = true;
-          event.dataTransfer.effectAllowed = 'move';
-          dragImage = document.createElement('div');
+          event.dataTransfer.effectAllowed = "move";
+          dragImage = document.createElement("div");
           dragImage.setAttribute(
-            'style',
-            `position: absolute; left: 0px; top: 0px; width: ${ed.offsetWidth}px; height: ${ed.offsetHeight}px; padding: 0.5em; background: grey; z-index: -1`,
+            "style",
+            `position: absolute; left: 0px; top: 0px; width: ${ed.offsetWidth}px; height: ${ed.offsetHeight}px; padding: 0.5em; background: grey; z-index: -1`
           );
-          dragImage.innerText = ed.querySelector('.level-right').innerText;
+          dragImage.innerText = ed.querySelector(".level-right").innerText;
           document.body.appendChild(dragImage);
           event.dataTransfer.setDragImage(dragImage, 20, 20);
           event.dataTransfer.setData(
-            'path',
-            ed.closest('.sling-cms-component').dataset.slingCmsResourcePath,
+            "path",
+            ed.closest(".sling-cms-component").dataset.slingCmsResourcePath
           );
-          const resourceType = ed.closest('.sling-cms-component').dataset.slingCmsResourceType;
+          const resourceType = ed.closest(".sling-cms-component").dataset
+            .slingCmsResourceType;
           event.dataTransfer.setData(
-            'name',
-            resourceType.substr(resourceType.lastIndexOf('/') + 1) + '_' + Math.random().toString(36).substring(2)
+            "name",
+            resourceType.substr(resourceType.lastIndexOf("/") + 1) +
+              "_" +
+              Math.random().toString(36).substring(2)
           );
-          
+
           setTimeout(activateTargets, 10);
         });
-        ed.addEventListener('dragend', deactivateTargets);
+        ed.addEventListener("dragend", deactivateTargets);
       },
       attachEvents(ctx) {
         function handleClick(event) {
           event.preventDefault();
           CMSEditor.ui.showModal(this.href, this.title);
         }
-        CMSEditor.util.attachClick(ctx, '.sling-cms-editor .action-button', handleClick);
-        if (ctx.matches && ctx.matches('.sling-cms-component')) {
+        CMSEditor.util.attachClick(
+          ctx,
+          ".sling-cms-editor .action-button",
+          handleClick
+        );
+        if (ctx.matches && ctx.matches(".sling-cms-component")) {
           CMSEditor.util.attachHover(ctx);
         }
-        ctx.querySelectorAll('.sling-cms-component').forEach((c) => {
+        ctx.querySelectorAll(".sling-cms-component").forEach((c) => {
           CMSEditor.util.attachHover(c);
         });
         ctx
-          .querySelectorAll('.sling-cms-editor')
+          .querySelectorAll(".sling-cms-editor")
           .forEach(CMSEditor.util.attachDrag);
       },
       attachHover(ctx) {
         function resetActive() {
           document
-            .querySelectorAll('.sling-cms-component__is-active')
+            .querySelectorAll(".sling-cms-component__is-active")
             .forEach((a) => {
-              a.classList.remove('sling-cms-component__is-active');
+              a.classList.remove("sling-cms-component__is-active");
             });
         }
-        ctx.addEventListener('mouseover', (evt) => {
+        ctx.addEventListener("mouseover", (evt) => {
           resetActive();
-          ctx.classList.add('sling-cms-component__is-active');
+          ctx.classList.add("sling-cms-component__is-active");
           evt.stopPropagation();
         });
-        ctx.addEventListener('mouseleave', resetActive);
+        ctx.addEventListener("mouseleave", resetActive);
       },
       findParent(el, exp) {
         if (el === null || el.parentElement === null) {
@@ -343,13 +352,31 @@ if (!window.CMSEditor) {
   window.CMSEditor = CMSEditor;
   window.onbeforeunload = () => {
     if (CMSEditor.ui.modalDisplayed) {
-      return 'Are you sure you want to leave this page?';
+      return "Are you sure you want to leave this page?";
     }
     return null;
   };
-  if (document.readyState === 'complete') {
+  if (document.readyState === "complete") {
     window.CMSEditor.init();
   } else {
-    document.addEventListener('DOMContentLoaded', CMSEditor.init, false);
+    document.addEventListener("DOMContentLoaded", CMSEditor.init, false);
   }
 }
+
+window.addEventListener("message", (event) => {
+  if (event.data.action === "slingcms.editorloaded") {
+    const modalBody = document.querySelector(
+      ".sling-cms-editor-final .modal-body"
+    );
+
+    const height = event.data.height;
+    if (height && modalBody && typeof height === "number") {
+      const innerHeight = document.querySelector(
+        ".sling-cms-editor-final .modal-background"
+      ).clientHeight;
+      if (height < innerHeight - 50) {
+        modalBody.style.height = `${height}px`;
+      }
+    }
+  }
+});
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/pages/editor/body.jsp b/ui/src/main/resources/jcr_root/libs/sling-cms/components/pages/editor/body.jsp
index d3cb509..4b0d83c 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/pages/editor/body.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/components/pages/editor/body.jsp
@@ -18,6 +18,20 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <body>
-	<sling:include path="container" resourceType="sling-cms/components/general/container"  />
-	<sling:call script="scripts.jsp" />
+    <sling:include path="container" resourceType="sling-cms/components/general/container"  />
+    <sling:call script="scripts.jsp" />
+    <script>
+    if (window.parent) {
+        document.onreadystatechange = () => {
+            if (document.readyState == "complete") {
+                window.parent.postMessage({
+                        action: "slingcms.editorloaded",
+                        height: document.querySelector("form").clientHeight + 20,
+                    },
+                    window.location.origin
+                );
+            }
+        };
+    }
+    </script>
 </body>
\ No newline at end of file