From acda43a3cc76fb5c9b07b035139e34443a5102fb Mon Sep 17 00:00:00 2001 From: bourgeoa Date: Tue, 19 Nov 2019 23:14:40 +0100 Subject: [PATCH 01/17] mime-type named container gets mime-type --- lib/ldp-container.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ldp-container.js b/lib/ldp-container.js index d075c1ea9..4f727e6fe 100644 --- a/lib/ldp-container.js +++ b/lib/ldp-container.js @@ -122,7 +122,7 @@ function addStats (resourceGraph, reqUri, stats, filename) { ns.stat('size'), stats.size) - if (mime.lookup(filename)) { // Is the file has a well-known type, + if (!reqUri.endsWith('/') && mime.lookup(filename)) { // Is the file has a well-known type, let type = 'http://www.w3.org/ns/iana/media-types/' + mime.lookup(filename) + '#Resource' resourceGraph.add( resourceGraph.sym(reqUri), From f8bbae899ba2e72e2ca5bb58a57b2f0948c78d55 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 21 Nov 2019 01:21:26 +0000 Subject: [PATCH 02/17] fix: package.json & package-lock.json to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JS-HANDLEBARS-534988 --- package-lock.json | 24 ++++++++++++++++-------- package.json | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb07ca5d7..0a579e20d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "solid-server", - "version": "5.2.1", + "version": "5.2.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4495,9 +4495,9 @@ "dev": true }, "handlebars": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.3.tgz", - "integrity": "sha512-VupOxR91xcGojfINrzMqrvlyYbBs39sXIrWa7YdaQWeBudOlvKEGvCczMfJPgnuwHE/zyH1M6J+IUP6cgDVyxg==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", @@ -10375,13 +10375,21 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "uglify-js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", - "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "version": "3.6.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.9.tgz", + "integrity": "sha512-pcnnhaoG6RtrvHJ1dFncAe8Od6Nuy30oaJ82ts6//sGSXOP5UjBMEthiProjXmMNHOfd93sqlkztifFMcb+4yw==", "optional": true, "requires": { - "commander": "~2.20.0", + "commander": "~2.20.3", "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true + } } }, "uid-safe": { diff --git a/package.json b/package.json index b4ad7225d..8c9f92ecd 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "get-folder-size": "^2.0.0", "glob": "^7.1.1", "global-tunnel-ng": "^2.1.0", - "handlebars": "^4.3.3", + "handlebars": "^4.5.3", "http-proxy-middleware": "^0.18.0", "inquirer": "^1.0.2", "into-stream": "^5.0.0", From 7b41b2f4d4066d2a44cdf595cb4acd848e92caa9 Mon Sep 17 00:00:00 2001 From: Arne Hassel Date: Sun, 24 Nov 2019 14:11:50 +0100 Subject: [PATCH 03/17] Upgraded to mashlib@1.2.0 Making use of the new context object --- package-lock.json | 606 +++++++++++++--------------------------------- package.json | 2 +- 2 files changed, 171 insertions(+), 437 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb07ca5d7..48fbfb93c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "solid-server", - "version": "5.2.1", + "version": "5.2.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -8,6 +8,7 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, "requires": { "@babel/highlight": "^7.0.0" } @@ -72,6 +73,7 @@ "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -82,6 +84,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -90,6 +93,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -99,12 +103,14 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -541,6 +547,14 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.6.8.tgz", "integrity": "sha512-aX+gFgA5GHcDi89KG5keey2zf0WfZk/HAQotEamsK2kbey+8yGKcson0hbK8E+v0NArlCJQCqMP161YhV6ZXLg==" }, + "@types/rdflib": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/rdflib/-/rdflib-1.0.5.tgz", + "integrity": "sha512-rsYG0JaezYmQmh3sTP7CrYlFxOi45+p87yTyuQSWyYLNccGNXWYn6Cnrl/RKfK1zNEU8LH7bQ8tJNIIA0Vu3eQ==", + "requires": { + "rdflib": "*" + } + }, "@types/restify": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/@types/restify/-/restify-4.3.6.tgz", @@ -748,6 +762,7 @@ "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" } @@ -2060,11 +2075,6 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", @@ -2144,9 +2154,9 @@ "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" }, "caniuse-lite": { - "version": "1.0.30001008", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001008.tgz", - "integrity": "sha512-b8DJyb+VVXZGRgJUa30cbk8gKHZ3LOZTBLaUEEVr2P4xpmFigOCc62CO4uzquW641Ouq1Rm9N+rWLWdSYDaDIw==" + "version": "1.0.30001011", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001011.tgz", + "integrity": "sha512-h+Eqyn/YA6o6ZTqpS86PyRmNWOs1r54EBDcd2NTwwfsXQ8re1B38SnB+p2RKF8OUsyEIjeDU8XGec1RGO/wYCg==" }, "canonicalize": { "version": "1.0.1", @@ -2203,16 +2213,11 @@ "dev": true }, "chat-pane": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/chat-pane/-/chat-pane-1.3.0.tgz", - "integrity": "sha512-yxOHFAhiwYHT3Cj4E18W94h+wwUv17NRuaN+fXcO/ahh7SBCglcDoGZOUq5DNilXRRroBZ5PMpYa7Otsl/CBzg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chat-pane/-/chat-pane-2.0.0.tgz", + "integrity": "sha512-rd1y8C+uaZz3i5BpkoL6IfGiiNZf10fcZBv+jBOlJHEh3/+QTUN+VI+YiXmx4lMC02AC2A18CRErybEZNhpgWA==", "requires": { - "babel-preset-env": "^1.6.1", - "babel-preset-metalab": "^1.0.0", - "mime-types": "^2.1.13", - "pane-registry": ">1.0.0", - "rdflib": ">=0.17.0", - "solid-ui": ">=0.12.0" + "solid-ui": "^2.0.0" } }, "check-error": { @@ -2391,6 +2396,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -2398,18 +2404,14 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "colorette": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.1.0.tgz", "integrity": "sha512-6S062WDQUXi6hOfkO/sBPVwE5ASXY4G2+b4atvhJfSsuUUhIaUKlkjLe9692Ipyt5/a+IPF5aVTu3V5gvXq5cg==" }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, "combine-source-map": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", @@ -2550,42 +2552,11 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, "contacts-pane": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/contacts-pane/-/contacts-pane-1.0.4.tgz", - "integrity": "sha512-okwoTyQkh+aqbnpeVIESv+kvUI22rX6G0QuYIRWzLdL2diBFOsZcdoAA/Y9y3DA9+X0bRD4HyD6kyEUeYTDcfg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/contacts-pane/-/contacts-pane-2.0.0.tgz", + "integrity": "sha512-ONSJebr5acC2QeD8wlmKHH6jmbyRzG4W41do58fAjTW3dEw0VSQJfqw2Foo95uXOdUC9ypqwHIToei2aIYINpA==", "requires": { - "babel-preset-env": "^1.6.1", - "babel-preset-metalab": "^1.0.0", - "mime-types": "^2.1.13", - "pane-registry": ">=1.0.0", - "rdflib": ">=0.17.0", - "solid-ui": "^0.13.0" - }, - "dependencies": { - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" - }, - "solid-namespace": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.2.0.tgz", - "integrity": "sha512-yQGQlTNDVtcMfzLz7OwL6Z8lJy9rN1ep0MgX28DPcja0DtA5pu1MzTpBVD9kvXl9X6eSEX73I7IYt0cUim0DrA==" - }, - "solid-ui": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-0.13.0.tgz", - "integrity": "sha512-Nt43NR2yreF7SVIEqWzNpgVYusNeKEqzqwcHDW2vjUoqFdJy5iq0hWFHy0N7JoeN8TfRRJq6xH4vJ/6ZX7LMUw==", - "requires": { - "escape-html": "^1.0.3", - "mime-types": "^2.1.20", - "node-uuid": "^1.4.7", - "rdflib": "^0.21.1", - "solid-auth-client": "^2.2.13", - "solid-auth-tls": "^0.1.2", - "solid-namespace": "0.2.0" - } - } + "solid-ui": "^2.0.0" } }, "content-disposition": { @@ -2726,6 +2697,15 @@ "cross-spawn": "^6.0.5" } }, + "cross-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.4.tgz", + "integrity": "sha512-MSHgpjQqgbT/94D4CyADeNoYh52zMkCX4pcJvPP5WqPsLFMKjr2TCMg381ox5qI0ii2dPwaLx/00477knXqXVw==", + "requires": { + "node-fetch": "2.6.0", + "whatwg-fetch": "3.0.0" + } + }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", @@ -3040,7 +3020,8 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true }, "diffie-hellman": { "version": "5.0.3", @@ -3218,9 +3199,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.305", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.305.tgz", - "integrity": "sha512-jBEhRZ3eeJWf3eAnGYB1vDy09uBQpZWshC5fxiiIRofA9L3vkpa3SxsXleVS2MvuYir15oTVxzWPsOwj7KBzUw==" + "version": "1.3.312", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.312.tgz", + "integrity": "sha512-/Nk6Hvwt+RfS9X3oA4IXpWqpcnS7cdWsTMP4AmrP8hPpxtZbHemvTEYzjAKghk28aS9zIV8NwGHNt8H+6OmJug==" }, "elliptic": { "version": "6.5.0", @@ -3570,7 +3551,8 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esrecurse": { "version": "4.2.1", @@ -3980,28 +3962,6 @@ "locate-path": "^3.0.0" } }, - "findup-sync": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz", - "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=", - "requires": { - "glob": "~5.0.0" - }, - "dependencies": { - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, "flat-cache": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", @@ -4026,61 +3986,11 @@ } }, "folder-pane": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/folder-pane/-/folder-pane-1.1.0.tgz", - "integrity": "sha512-DI9KJryqBjSov406BERKTsUn9pov3BPYThhjE4TTTAOUmSBYI/EU8EMXsInrWjfdYR6PpIeo1ooNq30X4aMg0A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/folder-pane/-/folder-pane-2.0.0.tgz", + "integrity": "sha512-nSsl9a44Gee0df2bGxLtQMoz093f5VlS+7exnBKTHVSjsdIGaTnLDTe70HJ87MoBtpInIs/+dCLgFG8lnwjH8Q==", "requires": { - "babel-preset-env": "^1.6.1", - "babel-preset-metalab": "^1.0.0", - "mime-types": "^2.1.13", - "pane-registry": "^1.0.4", - "rdflib": "^1.0.4", - "solid-ui": "^1.1.0" - }, - "dependencies": { - "async": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", - "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==" - }, - "jsonld": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", - "integrity": "sha512-f0rusl5v8aPKS3jApT5fhYsdTC/JpyK1PoJ+ZtYYtZXoyb1J0Z///mJqLwrfL/g4NueFSqPymDYIi1CcSk7b8Q==", - "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - }, - "n3": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.0.tgz", - "integrity": "sha512-qTbZPDpEc/+dUHMpC/WUi4bQbFdnKsb2ra/bE+pWdSvshzQeZLhCYtKQk4kQytTn2b625//eDBZYNda2wBjcfw==" - }, - "rdflib": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.0.6.tgz", - "integrity": "sha512-j7seUD0l/xG6pNOgY2kMGre5s3r410ojVBvkpPSqmG1asMmJylMrY65xDYHrGlrIeI1W/bmE2ti5uImv8vs8vw==", - "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.6.2", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" - } - } + "solid-ui": "^2.0.0" } }, "follow-redirects": { @@ -4538,7 +4448,8 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-symbols": { "version": "1.0.0", @@ -5230,61 +5141,11 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "issue-pane": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/issue-pane/-/issue-pane-1.1.0.tgz", - "integrity": "sha512-HFBThkvmmcgSB5AlZ88e3eCeUXAzRA8f5x76lRfHJPYDHn48tUioG8itbaAS/nFHuR7ESBw8aLJ1XpP8R67c4A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/issue-pane/-/issue-pane-2.0.0.tgz", + "integrity": "sha512-grU7nXv01yhBBYI92QXnmOlN+NVJKd7j4BAgaNle3JgxCYJwGH2h1Iw/YjbnQQr0n7H3PAntr6kbYOQ8prB5pA==", "requires": { - "babel-preset-env": "^1.6.1", - "babel-preset-metalab": "^1.0.0", - "mime-types": "^2.1.13", - "pane-registry": "^1.0.4", - "rdflib": "^1.0.4", - "solid-ui": "^1.1.0" - }, - "dependencies": { - "async": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", - "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==" - }, - "jsonld": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", - "integrity": "sha512-f0rusl5v8aPKS3jApT5fhYsdTC/JpyK1PoJ+ZtYYtZXoyb1J0Z///mJqLwrfL/g4NueFSqPymDYIi1CcSk7b8Q==", - "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - }, - "n3": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.0.tgz", - "integrity": "sha512-qTbZPDpEc/+dUHMpC/WUi4bQbFdnKsb2ra/bE+pWdSvshzQeZLhCYtKQk4kQytTn2b625//eDBZYNda2wBjcfw==" - }, - "rdflib": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.0.6.tgz", - "integrity": "sha512-j7seUD0l/xG6pNOgY2kMGre5s3r410ojVBvkpPSqmG1asMmJylMrY65xDYHrGlrIeI1W/bmE2ti5uImv8vs8vw==", - "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.6.2", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" - } - } + "solid-ui": "^2.0.0" } }, "istanbul-lib-coverage": { @@ -5395,6 +5256,7 @@ "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -5782,15 +5644,15 @@ } }, "mashlib": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/mashlib/-/mashlib-1.1.7.tgz", - "integrity": "sha512-2siUfcuxslMxHvTlhGrl4Oj3/P+72BFVYQt5itT0MUWC2aICpqF4K04Nq1Q9u9kOd9ORmW6+IR38CLQU15qPVw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mashlib/-/mashlib-1.2.0.tgz", + "integrity": "sha512-Dos4rGS8GLSMftJ8I51YDTbdddFYshpV35jtf3gqNSH86QbJ/3Ajasxc0M0CgnDRmyew9yFETkWGehHlmhZ81w==", "requires": { "normalize.css": "^8.0.1", "rdflib": "^1.0.4", "solid-namespace": "^0.2.0", - "solid-panes": "^2.0.4", - "solid-ui": "^1.2.5" + "solid-panes": "^3.0.0", + "solid-ui": "^2.0.0" }, "dependencies": { "async": { @@ -5818,9 +5680,9 @@ } }, "n3": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.0.tgz", - "integrity": "sha512-qTbZPDpEc/+dUHMpC/WUi4bQbFdnKsb2ra/bE+pWdSvshzQeZLhCYtKQk4kQytTn2b625//eDBZYNda2wBjcfw==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.3.tgz", + "integrity": "sha512-ZDUJFB9CpnPuWJA75ONOukLKFV762o5Qhl6SvqjvDb+NP6x9WJ/b1L3GUtXXkbwRTCdVVQfmC/vDhgKs7uBR5w==" }, "rdflib": { "version": "1.0.6", @@ -5859,61 +5721,11 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "meeting-pane": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/meeting-pane/-/meeting-pane-1.1.0.tgz", - "integrity": "sha512-e2gAa1cp5Q0fWe/0r1iA7qjieucAF56l0D6C/KQrXMQcCNo628qsd11v730v/2BHsuZUIIuCvAsiUUtxiI3ukA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/meeting-pane/-/meeting-pane-2.0.0.tgz", + "integrity": "sha512-0RrZicEJrvPg1YYP0MBMhHPfHnLfdD00G6XNg5Dbau00uXh1QB7Ylzg3XSZnbxn0n48TZ+A/OP73l4PzRbteWA==", "requires": { - "babel-preset-env": "^1.6.1", - "babel-preset-metalab": "^1.0.0", - "mime-types": "^2.1.13", - "pane-registry": "^1.0.4", - "rdflib": "^1.0.4", - "solid-ui": "^1.1.0" - }, - "dependencies": { - "async": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", - "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==" - }, - "jsonld": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", - "integrity": "sha512-f0rusl5v8aPKS3jApT5fhYsdTC/JpyK1PoJ+ZtYYtZXoyb1J0Z///mJqLwrfL/g4NueFSqPymDYIi1CcSk7b8Q==", - "requires": { - "canonicalize": "^1.0.1", - "rdf-canonize": "^1.0.2", - "request": "^2.88.0", - "semver": "^5.6.0", - "xmldom": "0.1.19" - }, - "dependencies": { - "xmldom": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.19.tgz", - "integrity": "sha1-Yx/Ad3bv2EEYvyUXGzftTQdaCrw=" - } - } - }, - "n3": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.0.tgz", - "integrity": "sha512-qTbZPDpEc/+dUHMpC/WUi4bQbFdnKsb2ra/bE+pWdSvshzQeZLhCYtKQk4kQytTn2b625//eDBZYNda2wBjcfw==" - }, - "rdflib": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-1.0.6.tgz", - "integrity": "sha512-j7seUD0l/xG6pNOgY2kMGre5s3r410ojVBvkpPSqmG1asMmJylMrY65xDYHrGlrIeI1W/bmE2ti5uImv8vs8vw==", - "requires": { - "@babel/runtime": "^7.5.5", - "async": "^3.1.x", - "jsonld": "^1.6.2", - "n3": "^1.2.0", - "solid-auth-cli": "^1.0.8", - "solid-auth-client": "^2.3.0", - "xmldom": "^0.1.27" - } - } + "solid-ui": "^2.0.0" } }, "merge-descriptors": { @@ -6879,15 +6691,11 @@ "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" }, "pane-registry": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-1.0.4.tgz", - "integrity": "sha512-uX00yWpcjcNpaTjOHBvJyzFuWQIdF+S0oZTQOTXO8r7fpBhOMiw+fzEk3zeAE7SmLxJzbf2E/HTMusOx3eA6mg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pane-registry/-/pane-registry-2.0.0.tgz", + "integrity": "sha512-Mt1H4qFPmfJudTV1a97oqBLSzAHDMPr1PfholAB905+CvacDTGCJMl4sOaG+eZotmsVJPUpgOEpq+Y1JCQHOHg==", "requires": { - "babel-preset-env": "^1.6.1", - "babel-preset-metalab": "^1.0.0", - "mime-types": "^2.1.13", - "rdflib": ">=0.17.0", - "solid-ui": ">=0.11.3" + "@types/rdflib": "^1.0.5" } }, "parents": { @@ -8973,16 +8781,16 @@ } }, "solid-auth-cli": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/solid-auth-cli/-/solid-auth-cli-1.0.8.tgz", - "integrity": "sha512-cZYNLM6/BDwbcywsrfFRIrGVjTPc/f3snubabqd1WRCvNwW7wkvpo0yvoHp3NQjVAfKHw5kIrZtaV8IRHPK/KQ==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/solid-auth-cli/-/solid-auth-cli-1.0.10.tgz", + "integrity": "sha512-fEvgpdr429peDFmXQk2FDeD14bGsHccT+4Pn7l8Gw6b3aCWYCaCXxkSEdiHkSt6N6rGx0sGiq9Yp3DB9Z/I6kg==", "requires": { "@solid/cli": "^0.1.1", "async": "^2.6.1", - "isomorphic-fetch": "^2.2.1", + "cross-fetch": "^3.0.4", "jsonld": "^1.4.0", "n3": "^1.0.3", - "solid-rest": "^1.0.7" + "solid-rest": "^1.0.9" }, "dependencies": { "async": { @@ -8993,6 +8801,35 @@ "lodash": "^4.17.14" } }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, "jsonld": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", @@ -9006,9 +8843,38 @@ } }, "n3": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.3.tgz", + "integrity": "sha512-ZDUJFB9CpnPuWJA75ONOukLKFV762o5Qhl6SvqjvDb+NP6x9WJ/b1L3GUtXXkbwRTCdVVQfmC/vDhgKs7uBR5w==" + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "solid-rest": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/solid-rest/-/solid-rest-1.0.9.tgz", + "integrity": "sha512-+V8h180TkQhGK9BkLfzm4aSJZaqyEst0TmBkvlXB1bchoO2F7+yM//m6HAZBbTnDcDhf1jsrt34nfNgXf6t8tg==", + "requires": { + "concat-stream": "^2.0.0", + "fs-extra": "^8.0.1", + "mime-types": "^2.1.24", + "node-fetch": "^2.6.0" + } + }, + "string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.0.tgz", - "integrity": "sha512-qTbZPDpEc/+dUHMpC/WUi4bQbFdnKsb2ra/bE+pWdSvshzQeZLhCYtKQk4kQytTn2b625//eDBZYNda2wBjcfw==" + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } }, "xmldom": { "version": "0.1.19", @@ -9043,58 +8909,32 @@ } }, "solid-panes": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/solid-panes/-/solid-panes-2.0.4.tgz", - "integrity": "sha512-xRLUcPfp115xqDMGkYK7DMxN0r7TTMGGbRF2gKmsojn9l1P8c6Ro5tUl3WPLLtR7yGc5oOJIhQWMjj4sa6rSpQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/solid-panes/-/solid-panes-3.0.0.tgz", + "integrity": "sha512-JWQEL9sTx6c1+60s/iizVQleZjx28iXJt/GH/2EKDpEEffiBFs/OZB3mB0rnTJfKPhgq4p+GQ5heDTbA1BSeCw==", "requires": { "@babel/polyfill": "^7.4.4", "@solid/better-simple-slideshow": "^0.1.0", "babel-preset-env": "^1.6.1", "babel-preset-metalab": "^1.0.0", - "chat-pane": "^1.3.0", - "contacts-pane": "^1.0.4", - "folder-pane": "^1.1.0", - "issue-pane": "^1.1.0", - "meeting-pane": "^1.1.0", + "chat-pane": "^2.0.0", + "contacts-pane": "^2.0.0", + "folder-pane": "^2.0.0", + "issue-pane": "^2.0.0", + "meeting-pane": "^2.0.0", "mime-types": "^2.1.24", - "pane-registry": "^1.0.4", + "pane-registry": "^2.0.0", "rdflib": "^1.0.6", "solid-namespace": "^0.2.0", - "solid-ui": "^1.2.5", - "source-pane": "^1.0.3", - "ts-lint": "^4.5.1", - "tslint": "^5.19.0", - "tslint-config-standard": "^8.0.1" + "solid-ui": "^2.0.0", + "source-pane": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, "async": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz", "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==" }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "diff": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz", - "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==" - }, "jsonld": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-1.8.1.tgz", @@ -9115,9 +8955,9 @@ } }, "n3": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.0.tgz", - "integrity": "sha512-qTbZPDpEc/+dUHMpC/WUi4bQbFdnKsb2ra/bE+pWdSvshzQeZLhCYtKQk4kQytTn2b625//eDBZYNda2wBjcfw==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.3.tgz", + "integrity": "sha512-ZDUJFB9CpnPuWJA75ONOukLKFV762o5Qhl6SvqjvDb+NP6x9WJ/b1L3GUtXXkbwRTCdVVQfmC/vDhgKs7uBR5w==" }, "rdflib": { "version": "1.0.6", @@ -9137,42 +8977,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.2.0.tgz", "integrity": "sha512-yQGQlTNDVtcMfzLz7OwL6Z8lJy9rN1ep0MgX28DPcja0DtA5pu1MzTpBVD9kvXl9X6eSEX73I7IYt0cUim0DrA==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "requires": { - "tslib": "^1.8.1" - } } } }, @@ -9237,9 +9041,9 @@ } }, "solid-ui": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-1.2.5.tgz", - "integrity": "sha512-ZL70bU6Sw3Kwec2Piuu7miGaGvKmS89M2uzfb8rwkaB7nU1+v88mFbGl42PRcK16pS0eFrcR3g21+ydQ90xOmQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-2.0.0.tgz", + "integrity": "sha512-rz4PqG8U5s9Il719tVtRWGK4r195HivVIOLR3XjVmDL3m2isvynVIWGxb7ezIQj+NjQrh8sBkKkFIbDTMmhUDA==", "requires": { "@babel/runtime": "^7.6.2", "escape-html": "^1.0.3", @@ -9252,9 +9056,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.2.tgz", - "integrity": "sha512-JONRbXbTXc9WQE2mAZd1p0Z3DZ/6vaQIkgYMSTP3KjRCyd7rCZCcfhCyX+YjwcKxcZ82UrxbRD358bpExNgrjw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.7.4.tgz", + "integrity": "sha512-r24eVUUr0QqNZa+qrImUk8fn5SPhHq+IfYvIoIMg0do3GdK9sMdiLKP3GYVVaxpPKORgm8KRKaNTEhAjgIpLMw==", "requires": { "regenerator-runtime": "^0.13.2" } @@ -9284,9 +9088,9 @@ } }, "n3": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.0.tgz", - "integrity": "sha512-qTbZPDpEc/+dUHMpC/WUi4bQbFdnKsb2ra/bE+pWdSvshzQeZLhCYtKQk4kQytTn2b625//eDBZYNda2wBjcfw==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.3.3.tgz", + "integrity": "sha512-ZDUJFB9CpnPuWJA75ONOukLKFV762o5Qhl6SvqjvDb+NP6x9WJ/b1L3GUtXXkbwRTCdVVQfmC/vDhgKs7uBR5w==" }, "node-uuid": { "version": "1.4.8", @@ -9373,16 +9177,11 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "source-pane": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/source-pane/-/source-pane-1.0.3.tgz", - "integrity": "sha512-wmIQAf3o290d784vrhWydHECIYpXRwX3wJlI0doxgX8mAnNs77qmqi+bIjWhQaGFbg3QjkwbAhxuVjRkHITsQg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-pane/-/source-pane-2.0.0.tgz", + "integrity": "sha512-csQNsXnkdIWc9heN/I11w0bl2N26bR4Ii3DjvZszM79iHwl0JDhln1NNBuiGe0b4Fnp2j27HQCwCaX7PwY5N2g==", "requires": { - "babel-preset-env": "^1.6.1", - "babel-preset-metalab": "^1.0.0", - "mime-types": "^2.1.13", - "pane-registry": ">=1.0.0", - "rdflib": ">=0.17.0", - "solid-ui": ">=0.11.3" + "solid-ui": "^2.0.0" } }, "spawn-sync": { @@ -9451,7 +9250,8 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "sshpk": { "version": "1.16.1", @@ -10227,77 +10027,11 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, - "ts-lint": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/ts-lint/-/ts-lint-4.5.1.tgz", - "integrity": "sha1-nCK3t7hitnMk3RvSE6hFwDp/uMA=", - "requires": { - "babel-code-frame": "^6.20.0", - "colors": "^1.1.2", - "diff": "^3.0.1", - "findup-sync": "~0.3.0", - "glob": "^7.1.1", - "optimist": "~0.6.0", - "resolve": "^1.1.7", - "tsutils": "^1.1.0" - } - }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" - }, - "tslint-config-standard": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/tslint-config-standard/-/tslint-config-standard-8.0.1.tgz", - "integrity": "sha512-OWG+NblgjQlVuUS/Dmq3ax2v5QDZwRx4L0kEuDi7qFY9UI6RJhhNfoCV1qI4el8Fw1c5a5BTrjQJP0/jhGXY/Q==", - "requires": { - "tslint-eslint-rules": "^5.3.1" - } - }, - "tslint-eslint-rules": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz", - "integrity": "sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w==", - "requires": { - "doctrine": "0.7.2", - "tslib": "1.9.0", - "tsutils": "^3.0.0" - }, - "dependencies": { - "doctrine": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.2.tgz", - "integrity": "sha1-fLhgNZujvpDgQLJrcpzkv6ZUxSM=", - "requires": { - "esutils": "^1.1.6", - "isarray": "0.0.1" - } - }, - "esutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz", - "integrity": "sha1-wBzKqa5LiXxtDD4hCuUvPHqEQ3U=" - }, - "tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "requires": { - "tslib": "^1.8.1" - } - } - } - }, - "tsutils": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-1.9.1.tgz", - "integrity": "sha1-ufmrROVa+WgYMdXyjQrur1x1DLA=" + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true }, "tty-browserify": { "version": "0.0.1", diff --git a/package.json b/package.json index b4ad7225d..9dfe4b08b 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "ip-range-check": "0.0.2", "is-ip": "^2.0.0", "li": "^1.0.1", - "mashlib": "^1.1.7", + "mashlib": "^1.2.0", "mime-types": "^2.1.11", "mkdir-recursive": "^0.4.0", "negotiator": "^0.6.0", From a42e766666a18ce4b5e5fe86812173ccbc8ab2d9 Mon Sep 17 00:00:00 2001 From: Arne Hassel Date: Mon, 2 Dec 2019 09:01:14 +0100 Subject: [PATCH 04/17] Upgraded mashlib@1.2.1 --- package-lock.json | 46 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 48fbfb93c..267e2fba6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2154,9 +2154,9 @@ "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" }, "caniuse-lite": { - "version": "1.0.30001011", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001011.tgz", - "integrity": "sha512-h+Eqyn/YA6o6ZTqpS86PyRmNWOs1r54EBDcd2NTwwfsXQ8re1B38SnB+p2RKF8OUsyEIjeDU8XGec1RGO/wYCg==" + "version": "1.0.30001013", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001013.tgz", + "integrity": "sha512-hOAXaWKuq/UVFgYawxIOdPdyMQdYcwOCDOjnZcKn7wCgFUrhP7smuNZjGLuJlPSgE6aRA4cRJ+bGSrhtEt7ZAg==" }, "canonicalize": { "version": "1.0.1", @@ -3199,9 +3199,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.312", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.312.tgz", - "integrity": "sha512-/Nk6Hvwt+RfS9X3oA4IXpWqpcnS7cdWsTMP4AmrP8hPpxtZbHemvTEYzjAKghk28aS9zIV8NwGHNt8H+6OmJug==" + "version": "1.3.321", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.321.tgz", + "integrity": "sha512-jJy/BZK2s2eAjMPXVMSaCmo7/pSY2aKkfQ+LoAb5Wk39qAhyP9r8KU74c4qTgr9cD/lPUhJgReZxxqU0n5puog==" }, "elliptic": { "version": "6.5.0", @@ -3986,11 +3986,11 @@ } }, "folder-pane": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/folder-pane/-/folder-pane-2.0.0.tgz", - "integrity": "sha512-nSsl9a44Gee0df2bGxLtQMoz093f5VlS+7exnBKTHVSjsdIGaTnLDTe70HJ87MoBtpInIs/+dCLgFG8lnwjH8Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/folder-pane/-/folder-pane-2.0.1.tgz", + "integrity": "sha512-TD+9y3Dask8MHglStD29cHpu9+IvYQE09UCd9rqqvV95rBs6BkYmdH8XNoMnEIl9uMv7uWB7Ewl1jIRJqoKB7w==", "requires": { - "solid-ui": "^2.0.0" + "solid-ui": "^2.0.1" } }, "follow-redirects": { @@ -5644,15 +5644,15 @@ } }, "mashlib": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mashlib/-/mashlib-1.2.0.tgz", - "integrity": "sha512-Dos4rGS8GLSMftJ8I51YDTbdddFYshpV35jtf3gqNSH86QbJ/3Ajasxc0M0CgnDRmyew9yFETkWGehHlmhZ81w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/mashlib/-/mashlib-1.2.1.tgz", + "integrity": "sha512-Lin3+QU4n0r8DoW2nabJC1bw+RyDLhDBhee65AFEdpQ4A6hJNepunxfQVoFmSWRbFd81enej9hinl1OToTgUIg==", "requires": { "normalize.css": "^8.0.1", "rdflib": "^1.0.4", "solid-namespace": "^0.2.0", - "solid-panes": "^3.0.0", - "solid-ui": "^2.0.0" + "solid-panes": "^3.0.1", + "solid-ui": "^2.0.1" }, "dependencies": { "async": { @@ -8909,9 +8909,9 @@ } }, "solid-panes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/solid-panes/-/solid-panes-3.0.0.tgz", - "integrity": "sha512-JWQEL9sTx6c1+60s/iizVQleZjx28iXJt/GH/2EKDpEEffiBFs/OZB3mB0rnTJfKPhgq4p+GQ5heDTbA1BSeCw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/solid-panes/-/solid-panes-3.0.1.tgz", + "integrity": "sha512-8QdgRO1/qbEaoucKoqcMZOlotPJqm1HEkR6sNobc4XlPBupfdzGghtQ6quFfkFIMdg7tCViskOOj5rcCVf9+3g==", "requires": { "@babel/polyfill": "^7.4.4", "@solid/better-simple-slideshow": "^0.1.0", @@ -8919,14 +8919,14 @@ "babel-preset-metalab": "^1.0.0", "chat-pane": "^2.0.0", "contacts-pane": "^2.0.0", - "folder-pane": "^2.0.0", + "folder-pane": "^2.0.1", "issue-pane": "^2.0.0", "meeting-pane": "^2.0.0", "mime-types": "^2.1.24", "pane-registry": "^2.0.0", "rdflib": "^1.0.6", "solid-namespace": "^0.2.0", - "solid-ui": "^2.0.0", + "solid-ui": "^2.0.1", "source-pane": "^2.0.0" }, "dependencies": { @@ -9041,9 +9041,9 @@ } }, "solid-ui": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-2.0.0.tgz", - "integrity": "sha512-rz4PqG8U5s9Il719tVtRWGK4r195HivVIOLR3XjVmDL3m2isvynVIWGxb7ezIQj+NjQrh8sBkKkFIbDTMmhUDA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/solid-ui/-/solid-ui-2.0.1.tgz", + "integrity": "sha512-K8DVWxNBsqdFgtqMmxziFao5tV9GjUy8EW131mtPYt+581zkZHGZJ2kO6Xq8BCFloOlz1ESlE6/rAC7NnQtSEw==", "requires": { "@babel/runtime": "^7.6.2", "escape-html": "^1.0.3", diff --git a/package.json b/package.json index 9dfe4b08b..d0c50b148 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "ip-range-check": "0.0.2", "is-ip": "^2.0.0", "li": "^1.0.1", - "mashlib": "^1.2.0", + "mashlib": "^1.2.1", "mime-types": "^2.1.11", "mkdir-recursive": "^0.4.0", "negotiator": "^0.6.0", From 5b0192fcda35343ebbce2636db235a7e05a68eaf Mon Sep 17 00:00:00 2001 From: jaxoncreed Date: Tue, 10 Dec 2019 15:32:19 -0500 Subject: [PATCH 05/17] Updated default node version to v13.2.0 --- .nvmrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.nvmrc b/.nvmrc index 441501581..c9adaee4a 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v8.16.0 +v13.2.0 From 05f58bbe9c16c0c7616978f7f5c936707e790426 Mon Sep 17 00:00:00 2001 From: Ted Thibodeau Jr Date: Tue, 10 Dec 2019 17:17:17 -0500 Subject: [PATCH 06/17] tweaked markup and punctuation for readability --- README.md | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index b8328b4f6..a3653bc1e 100644 --- a/README.md +++ b/README.md @@ -229,18 +229,27 @@ docker run -p 8443:8443 --name solid nodesolidserver/node-solid-server This will enable you to login to solid on https://localhost:8443 and then create a new account but not yet use that account. After a new account is made you will need to create an entry for -it in your local (/etc/)hosts file in line with the account and subdomain i.e. - +it in your local (/etc/)hosts file in line with the account and subdomain, i.e. -- +```pre 127.0.0.1 newsoliduser.localhost - +``` Then you'll be able to use solid as intended. You can modify the config within the docker container as follows: - - Copy the config to the current directory with: `docker cp solid:/usr/src/app/config.json .` + - Copy the config to the current directory with: + ``` + docker cp solid:/usr/src/app/config.json . + ``` - Edit the `config.json` file - - Copy the file back with `docker cp config.json solid:/usr/src/app/` - - Restart the server with `docker restart solid` + - Copy the file back with + ``` + docker cp config.json solid:/usr/src/app/ + ``` + - Restart the server with + ``` + docker restart solid + ``` If you want to help improve the Docker image, then you can build it locally with: ```bash @@ -248,7 +257,7 @@ git clone https://github.com/solid/node-solid-server cd node-solid-server docker build . ``` -We have automatic builds set up so commits to master will trigger a build of https://hub.docker.com/r/nodesolidserver/node-solid-server. +We have automatic builds set up, so commits to master will trigger a build of https://hub.docker.com/r/nodesolidserver/node-solid-server. ## Library Usage @@ -272,18 +281,18 @@ default settings. ```javascript { - cache: 0, // Set cache time (in seconds), 0 for no cache - live: true, // Enable live support through WebSockets - root: './', // Root location on the filesystem to serve resources - secret: 'node-ldp', // Express Session secret key - cert: false, // Path to the ssl cert - key: false, // Path to the ssl key - mount: '/', // Where to mount Linked Data Platform - webid: false, // Enable WebID+TLS authentication - suffixAcl: '.acl', // Suffix for acl files - corsProxy: false, // Where to mount the CORS proxy - errorHandler: false, // function(err, req, res, next) to have a custom error handler - errorPages: false // specify a path where the error pages are + cache: 0, // Set cache time (in seconds), 0 for no cache + live: true, // Enable live support through WebSockets + root: './', // Root location on the filesystem to serve resources + secret: 'node-ldp', // Express Session secret key + cert: false, // Path to the ssl cert + key: false, // Path to the ssl key + mount: '/', // Where to mount Linked Data Platform + webid: false, // Enable WebID+TLS authentication + suffixAcl: '.acl', // Suffix for acl files + corsProxy: false, // Where to mount the CORS proxy + errorHandler: false, // function(err, req, res, next) to have a custom error handler + errorPages: false // specify a path where the error pages are } ``` From f83432fb6c6f104c89f270f4913fc713db1d7677 Mon Sep 17 00:00:00 2001 From: Angelo Veltens Date: Sun, 5 Jan 2020 13:58:50 +0100 Subject: [PATCH 07/17] Build production ready docker-image --- docker-image/.dockerignore | 3 + docker-image/.gitignore | 3 + docker-image/CONTRIBUTING.md | 33 +++++++++ docker-image/Makefile | 31 +++++++++ docker-image/README.md | 51 ++++++++++++++ .../examples/docker-compose.nginx.yml | 50 ++++++++++++++ .../examples/docker-compose.simple.yml | 34 ++++++++++ docker-image/src/Dockerfile | 33 +++++++++ docker-image/src/checks.sh | 56 ++++++++++++++++ docker-image/src/create-temporary-cert.sh | 14 ++++ docker-image/src/entrypoint.sh | 8 +++ docker-image/src/hooks/build | 9 +++ docker-image/test/conftest.py | 11 +++ docker-image/test/test_image_foundations.py | 51 ++++++++++++++ .../test/test_non_accessible_key_cert.py | 36 ++++++++++ docker-image/test/test_precondition_checks.py | 41 ++++++++++++ .../test/test_solid_default_config.py | 67 +++++++++++++++++++ docker-image/test/test_volumes.py | 53 +++++++++++++++ 18 files changed, 584 insertions(+) create mode 100644 docker-image/.dockerignore create mode 100644 docker-image/.gitignore create mode 100644 docker-image/CONTRIBUTING.md create mode 100644 docker-image/Makefile create mode 100644 docker-image/README.md create mode 100644 docker-image/examples/docker-compose.nginx.yml create mode 100644 docker-image/examples/docker-compose.simple.yml create mode 100644 docker-image/src/Dockerfile create mode 100755 docker-image/src/checks.sh create mode 100755 docker-image/src/create-temporary-cert.sh create mode 100755 docker-image/src/entrypoint.sh create mode 100644 docker-image/src/hooks/build create mode 100644 docker-image/test/conftest.py create mode 100644 docker-image/test/test_image_foundations.py create mode 100644 docker-image/test/test_non_accessible_key_cert.py create mode 100644 docker-image/test/test_precondition_checks.py create mode 100644 docker-image/test/test_solid_default_config.py create mode 100644 docker-image/test/test_volumes.py diff --git a/docker-image/.dockerignore b/docker-image/.dockerignore new file mode 100644 index 000000000..26396170f --- /dev/null +++ b/docker-image/.dockerignore @@ -0,0 +1,3 @@ +test/ +.pytest_cache/ +.idea \ No newline at end of file diff --git a/docker-image/.gitignore b/docker-image/.gitignore new file mode 100644 index 000000000..b2aff4d47 --- /dev/null +++ b/docker-image/.gitignore @@ -0,0 +1,3 @@ +.pytest_cache/ +__pycache__ +data/ \ No newline at end of file diff --git a/docker-image/CONTRIBUTING.md b/docker-image/CONTRIBUTING.md new file mode 100644 index 000000000..f9f8e1142 --- /dev/null +++ b/docker-image/CONTRIBUTING.md @@ -0,0 +1,33 @@ +# How to contribute + +If you want to experiment with the image and/or contribute to its development, +please read this document. + +## Run tests + +```bash +make test +``` + +The first run might take a while, since the image has to be build. Follow up test runs will be faster. + +## Start & stop locally + +Build and run a local container named solid-server via + +```bash +make start +``` + +and stop it via + +```bash +make stop +``` + +## Inspect & debug + +To start a shell in a running container (started with `make start`) run `make attach`. + +To just run a shell in the built image (without starting solid) run `make inspect`. + diff --git a/docker-image/Makefile b/docker-image/Makefile new file mode 100644 index 000000000..fabcda629 --- /dev/null +++ b/docker-image/Makefile @@ -0,0 +1,31 @@ +test: ## run testinfra tests against the project + docker run --rm -t \ + -v $(shell pwd):/project \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ + aveltens/docker-testinfra + +lint: ## run hadolint against the Dockerfile + docker run --rm -i hadolint/hadolint < src/Dockerfile + +build: ## build the docker image + cd src && docker build --tag nodesolidserver/node-solid-server . + +inspect: build ## run a shell in the docker image + docker run --rm -it --entrypoint sh nodesolidserver/node-solid-server + +start: build ## start solid-server docker container + docker run --rm \ + -it -d \ + -p 8443:8443 \ + -u "$(id -u):$(id -g)" \ + -v $(shell pwd)/data:/opt/solid/data \ + --name solid-server \ + nodesolidserver/node-solid-server + +stop: ## stop the solid-server docker container + docker stop solid-server + +attach: ## execute a shell in the running solid-server docker container + docker exec -it solid-server sh + +.PHONY: test build inspect run attach diff --git a/docker-image/README.md b/docker-image/README.md new file mode 100644 index 000000000..7cc5bc622 --- /dev/null +++ b/docker-image/README.md @@ -0,0 +1,51 @@ +# NSS Docker image + +Containerized version of node-solid-server + +## How to use + +For quickly trying out this image or solid-server in general you can run: +```bash +docker run -p 8443:8443 nodesolidserver/node-solid-server +``` + +You will be able to access the server via `https://localhost:8443` then. It will use auto-generated self-signed certificates and is **not suited for production use**. For a production server you will have to create some real certificates and configure environment variables, like SOLID_SERVER_URI, SOLID_SSL_KEY and SOLID_SSL_CERT. Take a look at the examples folder [at GitHub](https://github.com/angelo-v/docker-solid-server/tree/master/examples) for details. + +### Environment variables + +All solid configuration flags can be set by an equivalent environment variable. +The official solid-server documentation +[explains them in detail](https://github.com/solid/node-solid-server#extra-flags-expert). + +### Docker compose + +For a productive setup you may want to use docker-compose. Example setups can be found +in the [examples folder](https://github.com/angelo-v/docker-solid-server/tree/master/examples). Here is an overview of what is in there: + +#### Simple setup without proxy + +`./examples/docker-compose.simple.yml` + +Run solid-server directly on HTTPS port 443 without a proxy in between. +You will need to have your certificates ready and mount them into the container. + +#### Running solid behind nginx proxy + +`./examples/docker-compose.nginx.yml` + +Run solid-server on port 8443 behind a nginx proxy on 443. You will need to setup an nginx container with letsencrypt companion [as described here](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion). + +#### Other setups + +The setup you need is not presented here? Feel free to ask, or provide a Pull Request +with your solution. + +## Feedback & Discussion + +There is a [topic in the Solid Forum](https://forum.solidproject.org/t/official-solid-docker-image/748/5), +you are welcome to join in. + +## Contributing + +If you would like to contribute to the development of this image, +see [CONTRIBUTING.md](./CONTRIBUTING.md) diff --git a/docker-image/examples/docker-compose.nginx.yml b/docker-image/examples/docker-compose.nginx.yml new file mode 100644 index 000000000..34b42bc2a --- /dev/null +++ b/docker-image/examples/docker-compose.nginx.yml @@ -0,0 +1,50 @@ +# This example assumes, that you are running a jwilders/nginx proxy +# with certificate generation by a letsencrypt companion container +# as described here: +# +# https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion/blob/master/docs/Docker-Compose.md +# +# This should provide a docker volume containing the generated certificates. +# We will use the same cert and key as the webproxy for the actual solid server. While it seems to +# work, I am not sure if it is actually a good idea. Please file an issue if you want to discuss this. + +# Adjust any line that is commented with (!): +# 1. Change any occurrence of the domain `solid.example` to your actual domain +# 2. Adjust the `latest` tag to a specific version you want to use. + +version: '3.7' +services: + server: + image: nodesolidserver/node-solid-server:latest # (!) use specific version tag here + + # this ensures automatic container start, when host reboots + restart: always + + expose: + - 8443 + + volumes: + # mount local directories to the container + # (!) the host directories have to exist and be owned by UID 1000 + - /opt/solid/data:/opt/solid/data + - /opt/solid/.db:/opt/solid/.db + - /opt/solid/config:/opt/solid/config + - nginxproxy_certs:/opt/solid/certs + + environment: + # (!) use your actual SOLID_SERVER_URI + - "SOLID_SERVER_URI=https://solid.example" + # (!) adjust path to the letsencrypt key and cert + - "SOLID_SSL_KEY=/opt/solid/certs/solid.example/key.pem" + - "SOLID_SSL_CERT=/opt/solid/certs/solid.example/fullchain.pem" + # (!) use your actual host name + - "VIRTUAL_HOST=solid.example" + - "VIRTUAL_PORT=8443" + - "VIRTUAL_PROTO=https" + # (!) use your actual host name + - "LETSENCRYPT_HOST=solid.example" + - "LETSENCRYPT_EMAIL=your@mail.example" +volumes: + # (!) mount certificates from an external volume from your nginx setup + nginxproxy_certs: + external: true \ No newline at end of file diff --git a/docker-image/examples/docker-compose.simple.yml b/docker-image/examples/docker-compose.simple.yml new file mode 100644 index 000000000..183c18734 --- /dev/null +++ b/docker-image/examples/docker-compose.simple.yml @@ -0,0 +1,34 @@ +# This file is an example for running solid server directly on port 443 with +# existing (letsencrypt) certificates and without reverse proxy. + +# To use it adjust any line that is commented with (!): +# 1. Change any occurrence of the domain `solid.example` to your actual domain +# 2. Adjust the `latest` tag to a specific version you want to use. + +version: '3.7' +services: + server: + image: nodesolidserver/node-solid-server:latest # (!) use specific version tag here + + # this ensures automatic container start, when host reboots + restart: always + + ports: + - 443:8443 + + volumes: + # mount local directories to the container + # (!) the host directories have to exist and be owned by UID 1000 + - /opt/solid/data:/opt/solid/data + - /opt/solid/.db:/opt/solid/.db + - /opt/solid/config:/opt/solid/config + + # (!) mount existing TLS certificates, e.g. from letsencrypt + # (!) ensure that the key and fullchain files are readable by UID 1000 + - /etc/letsencrypt/live/solid.example/:/opt/solid/certs + + environment: + # (!) use your actual SOLID_SERVER_URI + - "SOLID_SERVER_URI=https://solid.example" + - "SOLID_SSL_KEY=/opt/solid/certs/key.pem" + - "SOLID_SSL_CERT=/opt/solid/certs/fullchain.pem" \ No newline at end of file diff --git a/docker-image/src/Dockerfile b/docker-image/src/Dockerfile new file mode 100644 index 000000000..2ccccbcc0 --- /dev/null +++ b/docker-image/src/Dockerfile @@ -0,0 +1,33 @@ +FROM node:10-alpine + +RUN apk add --no-cache openssl + +ARG SOLID_SERVER_VERSION=latest +RUN npm install -g solid-server@${SOLID_SERVER_VERSION} + +# image configuration +ENV SOLID_HOME=/opt/solid +ENV PROCESS_USER=node +ENV TEMPORARY_CERT_NAME=solid-temporary + +WORKDIR ${SOLID_HOME} +COPY ./entrypoint.sh ./entrypoint.sh +COPY ./checks.sh ./checks.sh +COPY ./create-temporary-cert.sh ./create-temporary-cert.sh +RUN chown --recursive ${PROCESS_USER}:${PROCESS_USER} ${SOLID_HOME} + +USER ${PROCESS_USER} + +# solid configuration +ENV SOLID_ROOT=${SOLID_HOME}/data +ENV SOLID_SSL_KEY=${SOLID_HOME}/${TEMPORARY_CERT_NAME}.key +ENV SOLID_SSL_CERT=${SOLID_HOME}/${TEMPORARY_CERT_NAME}.crt +ENV SOLID_PORT=8443 +ENV SOLID_CORS_PROXY=/xss +ENV DEBUG=solid:* + +VOLUME $SOLID_HOME + +ENTRYPOINT ["./entrypoint.sh"] + +CMD ["start"] diff --git a/docker-image/src/checks.sh b/docker-image/src/checks.sh new file mode 100755 index 000000000..ed6461233 --- /dev/null +++ b/docker-image/src/checks.sh @@ -0,0 +1,56 @@ +#!/bin/sh + +echo "checking preconditions..." + +checks_failed=0 + +check_failed() +{ + checks_failed=$((checks_failed + 1)) +} +check_if_writable() +{ + # checks if the given dir is writable, if it exists + # it's ok if the dir does not exist at all, because it will be created + # during solid server startup then and have the correct permissions + dir=$1 + if [ -d "${dir}" ]; then + if [ -w "${dir}" ]; then + echo "✓ ${dir} is accessible by $(whoami)" + else + echo "✗ ${dir} not writable by $(whoami)" + check_failed + fi + fi +} + +check_if_file_readable() +{ + # checks if the given file exists and is readable + file=$1 + if [ -e "${file}" ]; then + if [ -r "${file}" ]; then + echo "✓ ${file} is accessible by $(whoami)" + else + echo "✗ ${file} not readable by $(whoami)" + check_failed + fi + else + echo "✗ ${file} does not exist" + check_failed + fi +} + +check_if_writable "${SOLID_HOME}/config" +check_if_writable "${SOLID_HOME}/data" +check_if_writable "${SOLID_HOME}/.db" +check_if_file_readable "${SOLID_SSL_KEY}" +check_if_file_readable "${SOLID_SSL_CERT}" + +if [ "$checks_failed" -gt 0 ]; then + echo "Finished: ERROR" + exit 1 +else + echo "Finished: SUCCESS" + exit 0; +fi diff --git a/docker-image/src/create-temporary-cert.sh b/docker-image/src/create-temporary-cert.sh new file mode 100755 index 000000000..830c1bd07 --- /dev/null +++ b/docker-image/src/create-temporary-cert.sh @@ -0,0 +1,14 @@ +#!/bin/sh +set -e + +NAME=$1 + +if [ -z $NAME ]; then + echo "Usage: ./create-temporary-cert.sh some-name" + exit 1 +fi + +openssl req -nodes -x509 -days 3 -newkey rsa:2048 \ + -keyout ./$NAME.key \ + -out ./$NAME.crt \ + -subj "/O=$NAME/OU=$NAME/CN=$NAME" diff --git a/docker-image/src/entrypoint.sh b/docker-image/src/entrypoint.sh new file mode 100755 index 000000000..1b86a8a36 --- /dev/null +++ b/docker-image/src/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +./create-temporary-cert.sh ${TEMPORARY_CERT_NAME} +./checks.sh + +solid "$@" diff --git a/docker-image/src/hooks/build b/docker-image/src/hooks/build new file mode 100644 index 000000000..d27dce64e --- /dev/null +++ b/docker-image/src/hooks/build @@ -0,0 +1,9 @@ +#!/bin/bash + +# conditional assignment of SOLID_SERVER_VERSION, like +# SOLID_SERVER_VERSION = $SOURCE_BRANCH == master ? 'latest' : $SOURCE_BRANCH +SOLID_SERVER_VERSION=latest && [[ "$SOURCE_BRANCH" != "master" ]] && SOLID_SERVER_VERSION=${SOURCE_BRANCH} + +echo building on branch/tag ${SOURCE_BRANCH}, server version ${SOLID_SERVER_VERSION} with image name ${IMAGE_NAME} . + +docker build --build-arg SOLID_SERVER_VERSION=${SOLID_SERVER_VERSION} --file Dockerfile -t ${IMAGE_NAME} . diff --git a/docker-image/test/conftest.py b/docker-image/test/conftest.py new file mode 100644 index 000000000..74024c406 --- /dev/null +++ b/docker-image/test/conftest.py @@ -0,0 +1,11 @@ +import docker +import pytest + +@pytest.fixture(scope="session") +def client(): + return docker.from_env() + +@pytest.fixture(scope="session") +def image(client): + img, _ = client.images.build(path='./src', dockerfile='Dockerfile') + return img \ No newline at end of file diff --git a/docker-image/test/test_image_foundations.py b/docker-image/test/test_image_foundations.py new file mode 100644 index 000000000..71d04b25a --- /dev/null +++ b/docker-image/test/test_image_foundations.py @@ -0,0 +1,51 @@ +import docker +import pytest + +testinfra_hosts = ['docker://test_container'] + +@pytest.fixture(scope="module", autouse=True) +def container(client, image): + container = client.containers.run( + image.id, + name="test_container", + detach=True, + tty=True, + entrypoint="sh", + command="-" + ) + yield container + container.remove(force=True) + +def test_current_user_is_node(host): + assert host.user().name == "node" + assert host.user().group == "node" + +def test_solid_home_dir_exists_and_owned_by_node(host): + solid_root = host.file("/opt/solid") + assert solid_root.is_directory + assert solid_root.user == "node" + assert solid_root.group == "node" + +def test_node_command_is_available(host): + assert host.exists("node") + +def test_node_version_is_10(host): + assert host.check_output("node --version").startswith('v10') + +def test_openssl_command_is_available(host): + assert host.exists("openssl") + +def test_entrypoint_exist(host): + entrypoint = host.file("/opt/solid/entrypoint.sh") + assert entrypoint.is_file + assert entrypoint.user == "node" + assert entrypoint.group == "node" + +def test_create_temporary_cert_exist(host): + create_temporary_cert = host.file("/opt/solid/create-temporary-cert.sh") + assert create_temporary_cert.is_file + assert create_temporary_cert.user == "node" + assert create_temporary_cert.group == "node" + +def test_solid_command_is_available(host): + assert host.exists("solid") diff --git a/docker-image/test/test_non_accessible_key_cert.py b/docker-image/test/test_non_accessible_key_cert.py new file mode 100644 index 000000000..36ee0649d --- /dev/null +++ b/docker-image/test/test_non_accessible_key_cert.py @@ -0,0 +1,36 @@ +# coding=utf-8 +import docker +import pytest +import time + +import os + +testinfra_hosts = ['docker://test_container'] + + +@pytest.fixture(scope="module", autouse=True) +def container(client, image): + container = client.containers.run( + image.id, + name="test_container", + environment=[ + # just using to files that exist but are not readable by node + "SOLID_SSL_KEY=/root", + "SOLID_SSL_CERT=/etc/shadow" + ], + detach=True, + tty=True + ) + # give the solid process some seconds to create the directory structure before making assertions + time.sleep(2) + yield container + container.remove(force=True) + + +def test_container_fails_with_errors(container): + assert container.status == "created" + logs = container.logs() + assert "✗ /root not readable by node" in logs + assert "✗ /etc/shadow not readable by node" in logs + assert "Finished: ERROR" in logs + assert not "Finished: SUCCESS" in logs diff --git a/docker-image/test/test_precondition_checks.py b/docker-image/test/test_precondition_checks.py new file mode 100644 index 000000000..3e5aba108 --- /dev/null +++ b/docker-image/test/test_precondition_checks.py @@ -0,0 +1,41 @@ +# coding=utf-8 +import docker +import pytest +import time + +testinfra_hosts = ['docker://test_container'] + + +@pytest.fixture(scope="module", autouse=True) +def container(client, image): + container = client.containers.run( + image.id, + name="test_container", + volumes={ + 'missing_data': {'bind': '/opt/solid/data'}, + 'missing_db': {'bind': '/opt/solid/.db'}, + 'missing_config': {'bind': '/opt/solid/config'} + }, + environment=[ + "SOLID_SSL_KEY=/missing/key", + "SOLID_SSL_CERT=/missing/cert" + ], + detach=True, + tty=True + ) + # give the solid process some seconds to create the directory structure before making assertions + time.sleep(2) + yield container + container.remove(force=True) + + +def test_container_fails_with_errors(container): + assert container.status == "created" + logs = container.logs() + assert "✗ /opt/solid/config not writable by node" in logs + assert "✗ /opt/solid/data not writable by node" in logs + assert "✗ /opt/solid/.db not writable by node" in logs + assert "✗ /missing/key does not exist" in logs + assert "✗ /missing/cert does not exist" in logs + assert "Finished: ERROR" in logs + assert not "Finished: SUCCESS" in logs diff --git a/docker-image/test/test_solid_default_config.py b/docker-image/test/test_solid_default_config.py new file mode 100644 index 000000000..753a56c3c --- /dev/null +++ b/docker-image/test/test_solid_default_config.py @@ -0,0 +1,67 @@ +import docker +import pytest +import time + +testinfra_hosts = ['docker://test_container'] + +@pytest.fixture(scope="module", autouse=True) +def container(client, image): + container = client.containers.run( + image.id, + name="test_container", + detach=True, + tty=True + ) + # give the solid process some seconds to create the directory structure before making assertions + time.sleep(2) + yield container + container.remove(force=True) + +def test_solid_data_dir_exists_and_owned_by_node(host): + solid_data = host.file("/opt/solid/data/") + assert solid_data.exists + assert solid_data.is_directory + assert solid_data.user == "node" + assert solid_data.group == "node" + +def test_solid_db_dir_exists_and_owned_by_node(host): + solid_db = host.file("/opt/solid/.db/") + assert solid_db.exists + assert solid_db.is_directory + assert solid_db.user == "node" + assert solid_db.group == "node" + +def test_solid_config_dir_exists_and_owned_by_node(host): + solid_config = host.file("/opt/solid/config/") + assert solid_config.exists + assert solid_config.is_directory + assert solid_config.user == "node" + assert solid_config.group == "node" + +def test_temporary_tls_cert_exists(host): + cert = host.file("/opt/solid/solid-temporary.crt") + assert cert.exists + assert cert.is_file + assert cert.user == "node" + assert cert.group == "node" + +def test_temporary_tls_key_exists(host): + key = host.file("/opt/solid/solid-temporary.key") + assert key.exists + assert key.is_file + assert key.user == "node" + assert key.group == "node" + +def test_certificate_and_key_are_used(host): + env = host.check_output("env") + assert "SOLID_SSL_KEY=/opt/solid/solid-temporary.key" in env + assert "SOLID_SSL_CERT=/opt/solid/solid-temporary.crt" in env + +def test_solid_is_running(host): + solid = host.process.get(comm="node") + assert solid.args == "node /usr/local/bin/solid start" + assert solid.user == "node" + assert solid.group == "node" + +def test_solid_is_listening_on_port_8443(host): + assert host.socket("tcp://0.0.0.0:8443").is_listening diff --git a/docker-image/test/test_volumes.py b/docker-image/test/test_volumes.py new file mode 100644 index 000000000..6c844bab1 --- /dev/null +++ b/docker-image/test/test_volumes.py @@ -0,0 +1,53 @@ +import docker +import pytest +import time + +testinfra_hosts = ['docker://test_container'] + +@pytest.fixture(scope="module", autouse=True) +def solid_server(client, image): + container = client.containers.run( + image.id, + name="solid_server", + detach=True, + tty=True + ) + # give the solid process some seconds to create the directory structure before making assertions + time.sleep(2) + yield container + container.remove(force=True) + +@pytest.fixture(scope="module", autouse=True) +def container(client, solid_server): + container = client.containers.run( + 'alpine', + name="test_container", + detach=True, + tty=True, + volumes_from=solid_server.id + ) + # give the solid process some seconds to create the directory structure before making assertions + time.sleep(2) + yield container + container.remove(force=True) + +def test_solid_data_dir_is_mounted(host): + solid_data = host.file("/opt/solid/data/") + assert solid_data.exists + assert solid_data.is_directory + assert solid_data.uid == 1000 + assert solid_data.gid == 1000 + +def test_solid_db_dir_is_mounted(host): + solid_db = host.file("/opt/solid/.db/") + assert solid_db.exists + assert solid_db.is_directory + assert solid_db.uid == 1000 + assert solid_db.gid == 1000 + +def test_solid_config_dir_is_mounted(host): + solid_config = host.file("/opt/solid/config/") + assert solid_config.exists + assert solid_config.is_directory + assert solid_config.uid == 1000 + assert solid_config.gid == 1000 From f118bac34095345ace54c81e6b6a772c8b6e9d40 Mon Sep 17 00:00:00 2001 From: Angelo Veltens Date: Sun, 5 Jan 2020 14:16:34 +0100 Subject: [PATCH 08/17] add docker-image to .npmignore --- .npmignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.npmignore b/.npmignore index c5a836587..aa35cea6b 100644 --- a/.npmignore +++ b/.npmignore @@ -18,3 +18,4 @@ # Additional .npmignore entries (not in .gitignore) /test +/docker-image From 78ab9d238b3a7cf524944476c2fed3d6cb59add4 Mon Sep 17 00:00:00 2001 From: lin onetwo Date: Fri, 10 Jan 2020 13:08:41 +0800 Subject: [PATCH 09/17] Get valid mashlib html file location In the latest npm, node_modules is flattened, so it shouldn't be located based on the location of solid-server. This solves https://github.com/solid/node-solid-server/issues/1382# --- lib/handlers/get.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/handlers/get.js b/lib/handlers/get.js index 9ce9c614a..5380e4773 100644 --- a/lib/handlers/get.js +++ b/lib/handlers/get.js @@ -89,7 +89,7 @@ async function handler (req, res, next) { if (useDataBrowser) { res.set('Content-Type', 'text/html') - const defaultDataBrowser = _path.join(__dirname, '../../node_modules/mashlib/dist/index.html') + const defaultDataBrowser = require.resolve('mashlib/dist/index.html') const dataBrowserPath = ldp.dataBrowserPath === 'default' ? defaultDataBrowser : ldp.dataBrowserPath debug(' sending data browser file: ' + dataBrowserPath) res.sendFile(dataBrowserPath) From 9c994d51706f4f4625be211a769c675bc935d3ca Mon Sep 17 00:00:00 2001 From: lin onetwo Date: Fri, 10 Jan 2020 13:30:54 +0800 Subject: [PATCH 10/17] fix: properly resolve static dir of mashlib this fixes https://github.com/solid/node-solid-server/issues/1383 --- lib/create-app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/create-app.js b/lib/create-app.js index 0d7a365a2..836dc3caf 100644 --- a/lib/create-app.js +++ b/lib/create-app.js @@ -67,7 +67,7 @@ function createApp (argv = {}) { // Serve the public 'common' directory (for shared CSS files, etc) app.use('/common', express.static(path.join(__dirname, '../common'))) - app.use('/', express.static(path.join(__dirname, '../node_modules/mashlib/dist'), { index: false })) + app.use('/', express.static(path.dirname(require.resolve('mashlib/dist/index.html')), { index: false })) routeResolvedFile(app, '/common/js/', 'solid-auth-client/dist-lib/solid-auth-client.bundle.js') routeResolvedFile(app, '/common/js/', 'solid-auth-client/dist-lib/solid-auth-client.bundle.js.map') app.use('/.well-known', express.static(path.join(__dirname, '../common/well-known'))) From 02ab66bdf24508c8cec6042f3d5df1c7a8ad8fa2 Mon Sep 17 00:00:00 2001 From: lin onetwo Date: Mon, 27 Jan 2020 18:47:59 +0800 Subject: [PATCH 11/17] Upgrade proper-lockfile --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b4ad7225d..f0a270d0d 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "nodemailer": "^3.1.4", "oidc-op-express": "^0.0.3", "owasp-password-strength-test": "^1.3.0", - "proper-lockfile": "^3.2.0", + "proper-lockfile": "^4.1.1", "rdflib": "^0.21.1", "recursive-readdir": "^2.1.0", "rimraf": "^2.7.1", From 42dbbc6ff87d633210c80cc2dc55a4fe3c3eb897 Mon Sep 17 00:00:00 2001 From: linonetwo Date: Mon, 27 Jan 2020 20:00:47 +0800 Subject: [PATCH 12/17] Update package-lock.json --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index fb07ca5d7..7fddd1e42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "solid-server", - "version": "5.2.1", + "version": "5.2.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -7211,9 +7211,9 @@ "dev": true }, "proper-lockfile": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-3.2.0.tgz", - "integrity": "sha512-iMghHHXv2bsxl6NchhEaFck8tvX3F9cknEEh1SUpguUOBjN7PAAW9BLzmbc1g/mCD1gY3EE2EABBHPJfFdHFmA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.1.tgz", + "integrity": "sha512-1w6rxXodisVpn7QYvLk706mzprPTAPCYAqxMvctmPN3ekuRk/kuGkGc82pangZiAt4R3lwSuUzheTTn0/Yb7Zg==", "requires": { "graceful-fs": "^4.1.11", "retry": "^0.12.0", From 6550152db318221e6229cc46ffe3134e60b9e63a Mon Sep 17 00:00:00 2001 From: jaxoncreed Date: Tue, 28 Jan 2020 09:21:41 -0800 Subject: [PATCH 13/17] Added webid-oidc error log --- lib/api/authn/webid-oidc.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/api/authn/webid-oidc.js b/lib/api/authn/webid-oidc.js index b47e7937b..7866fbf6b 100644 --- a/lib/api/authn/webid-oidc.js +++ b/lib/api/authn/webid-oidc.js @@ -60,6 +60,8 @@ function initialize (app, argv) { error.statusText = 'Invalid login' error.cause = err + console.error(err) + next(error) }) }) From 31a996b79e709ca7fe44ee202658db903d9ab022 Mon Sep 17 00:00:00 2001 From: jaxoncreed Date: Tue, 28 Jan 2020 09:34:40 -0800 Subject: [PATCH 14/17] Updated dependencies to fix vulnerabilities --- package-lock.json | 34 +++++++++++++++++++++------------- package.json | 2 +- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 267e2fba6..15ce77e59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4405,9 +4405,9 @@ "dev": true }, "handlebars": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.3.3.tgz", - "integrity": "sha512-VupOxR91xcGojfINrzMqrvlyYbBs39sXIrWa7YdaQWeBudOlvKEGvCczMfJPgnuwHE/zyH1M6J+IUP6cgDVyxg==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.2.tgz", + "integrity": "sha512-4PwqDL2laXtTWZghzzCtunQUTLbo31pcCJrd/B/9JP8XbhVzpS5ZXuKqlOzsd1rtcaLo4KqAn8nl8mkknS4MHw==", "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", @@ -4664,9 +4664,9 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, "https-proxy-agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", - "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", "dev": true, "requires": { "agent-base": "^4.3.0", @@ -10016,9 +10016,9 @@ } }, "tree-kill": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", - "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, "trim-right": { @@ -10109,13 +10109,21 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "uglify-js": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", - "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.6.tgz", + "integrity": "sha512-yYqjArOYSxvqeeiYH2VGjZOqq6SVmhxzaPjJC1W2F9e+bqvFL9QXQ2osQuKUFjM2hGjKG2YclQnRKWQSt/nOTQ==", "optional": true, "requires": { - "commander": "~2.20.0", + "commander": "~2.20.3", "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true + } } }, "uid-safe": { diff --git a/package.json b/package.json index d0c50b148..cba4e9da2 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "get-folder-size": "^2.0.0", "glob": "^7.1.1", "global-tunnel-ng": "^2.1.0", - "handlebars": "^4.3.3", + "handlebars": "^4.7.2", "http-proxy-middleware": "^0.18.0", "inquirer": "^1.0.2", "into-stream": "^5.0.0", From ddc1e1a6d0897e3e1e4ecfb0023f7b5cf77252a4 Mon Sep 17 00:00:00 2001 From: jaxoncreed Date: Tue, 28 Jan 2020 09:50:24 -0800 Subject: [PATCH 15/17] Update version number --- package.json | 2 +- test/resources/acl-tls/localhost/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 1f0ed13c2..ccfe9d0ed 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "solid-server", "description": "Solid server on top of the file-system", - "version": "5.2.2", + "version": "5.2.3", "author": { "name": "Tim Berners-Lee", "email": "timbl@w3.org" diff --git a/test/resources/acl-tls/localhost/index.html b/test/resources/acl-tls/localhost/index.html index c0d68c8c5..fe6f359d9 100644 --- a/test/resources/acl-tls/localhost/index.html +++ b/test/resources/acl-tls/localhost/index.html @@ -38,7 +38,7 @@

Server info

Name
localhost
Details
-
Running on Solid 5.2.0
+
Running on Solid 5.2.3
From 43f8acedfb8c6ad6f60b44c38e48de388cc0b068 Mon Sep 17 00:00:00 2001 From: jaxoncreed Date: Tue, 28 Jan 2020 12:07:57 -0800 Subject: [PATCH 16/17] Update node version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ccfe9d0ed..af36562cf 100644 --- a/package.json +++ b/package.json @@ -166,6 +166,6 @@ "solid": "./bin/solid" }, "engines": { - "node": ">=8.0" + "node": ">=12.0" } } From 61c6868b61b5f1e6e341b8c1ddeedef6910d0682 Mon Sep 17 00:00:00 2001 From: jaxoncreed Date: Tue, 28 Jan 2020 12:10:57 -0800 Subject: [PATCH 17/17] Update package-lock.json --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index f0f82e1bf..0da7722b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "solid-server", - "version": "5.2.2", + "version": "5.2.3", "lockfileVersion": 1, "requires": true, "dependencies": {