From 37e83400d8f94dfd993c78c110c18ae623b7c918 Mon Sep 17 00:00:00 2001 From: Alberto Chica Date: Wed, 3 Nov 2021 17:16:54 +0100 Subject: [PATCH 01/23] table --- .gitignore | 1 + assets/css/style.css | 32 +++++++++++ assets/img/icons/create.svg | 6 ++ assets/img/icons/csv.svg | 56 +++++++++++++++++++ assets/img/icons/delete.svg | 8 +++ assets/img/icons/doc.svg | 57 +++++++++++++++++++ assets/img/icons/edit.svg | 6 ++ assets/img/icons/exe.svg | 57 +++++++++++++++++++ assets/img/icons/jpg.svg | 56 +++++++++++++++++++ assets/img/icons/mp3.svg | 54 ++++++++++++++++++ assets/img/icons/mp4.svg | 53 ++++++++++++++++++ assets/img/icons/odt.svg | 54 ++++++++++++++++++ assets/img/icons/pdf.svg | 54 ++++++++++++++++++ assets/img/icons/png.svg | 55 +++++++++++++++++++ assets/img/icons/ppt.svg | 53 ++++++++++++++++++ assets/img/icons/rar.svg | 54 ++++++++++++++++++ assets/img/icons/txt.svg | 51 +++++++++++++++++ assets/img/icons/upload.svg | 7 +++ assets/img/icons/zip.svg | 52 ++++++++++++++++++ docs/uml.PNG | Bin 0 -> 61580 bytes docs/wireframe.PNG | Bin 0 -> 21312 bytes index.php | 106 ++++++++++++++++++++++++++++++++++++ modules/Utils.php | 38 +++++++++++++ package-lock.json | 21 +++++++ package.json | 26 +++++++++ 25 files changed, 957 insertions(+) create mode 100644 .gitignore create mode 100644 assets/css/style.css create mode 100644 assets/img/icons/create.svg create mode 100644 assets/img/icons/csv.svg create mode 100644 assets/img/icons/delete.svg create mode 100644 assets/img/icons/doc.svg create mode 100644 assets/img/icons/edit.svg create mode 100644 assets/img/icons/exe.svg create mode 100644 assets/img/icons/jpg.svg create mode 100644 assets/img/icons/mp3.svg create mode 100644 assets/img/icons/mp4.svg create mode 100644 assets/img/icons/odt.svg create mode 100644 assets/img/icons/pdf.svg create mode 100644 assets/img/icons/png.svg create mode 100644 assets/img/icons/ppt.svg create mode 100644 assets/img/icons/rar.svg create mode 100644 assets/img/icons/txt.svg create mode 100644 assets/img/icons/upload.svg create mode 100644 assets/img/icons/zip.svg create mode 100644 docs/uml.PNG create mode 100644 docs/wireframe.PNG create mode 100644 index.php create mode 100644 modules/Utils.php create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..30bc1627 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 00000000..bcc605b5 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,32 @@ +body { + height: 100vh; +} +.header-logo { + position: absolute; + left: 25px; +} + +.general-button-container { + width: 10%; +} + +.general-button { + width: 30px; + height: 30px; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; +} + +.general-button-img { + width: 20px; +} + +.actions-button { + width: 20px; +} + +.type-icon{ + width: 30px; +} \ No newline at end of file diff --git a/assets/img/icons/create.svg b/assets/img/icons/create.svg new file mode 100644 index 00000000..d1c3f0a5 --- /dev/null +++ b/assets/img/icons/create.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/img/icons/csv.svg b/assets/img/icons/csv.svg new file mode 100644 index 00000000..ce7034ef --- /dev/null +++ b/assets/img/icons/csv.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/delete.svg b/assets/img/icons/delete.svg new file mode 100644 index 00000000..c5a1e848 --- /dev/null +++ b/assets/img/icons/delete.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/img/icons/doc.svg b/assets/img/icons/doc.svg new file mode 100644 index 00000000..91918ef6 --- /dev/null +++ b/assets/img/icons/doc.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/edit.svg b/assets/img/icons/edit.svg new file mode 100644 index 00000000..b5b2da9c --- /dev/null +++ b/assets/img/icons/edit.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/img/icons/exe.svg b/assets/img/icons/exe.svg new file mode 100644 index 00000000..6478f77a --- /dev/null +++ b/assets/img/icons/exe.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/jpg.svg b/assets/img/icons/jpg.svg new file mode 100644 index 00000000..e4fa39cb --- /dev/null +++ b/assets/img/icons/jpg.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/mp3.svg b/assets/img/icons/mp3.svg new file mode 100644 index 00000000..611184c6 --- /dev/null +++ b/assets/img/icons/mp3.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/mp4.svg b/assets/img/icons/mp4.svg new file mode 100644 index 00000000..07a6efa2 --- /dev/null +++ b/assets/img/icons/mp4.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/odt.svg b/assets/img/icons/odt.svg new file mode 100644 index 00000000..55592089 --- /dev/null +++ b/assets/img/icons/odt.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/pdf.svg b/assets/img/icons/pdf.svg new file mode 100644 index 00000000..118e93ac --- /dev/null +++ b/assets/img/icons/pdf.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/png.svg b/assets/img/icons/png.svg new file mode 100644 index 00000000..cb229511 --- /dev/null +++ b/assets/img/icons/png.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/ppt.svg b/assets/img/icons/ppt.svg new file mode 100644 index 00000000..337f2461 --- /dev/null +++ b/assets/img/icons/ppt.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/rar.svg b/assets/img/icons/rar.svg new file mode 100644 index 00000000..d6485660 --- /dev/null +++ b/assets/img/icons/rar.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/txt.svg b/assets/img/icons/txt.svg new file mode 100644 index 00000000..bbaf6939 --- /dev/null +++ b/assets/img/icons/txt.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/icons/upload.svg b/assets/img/icons/upload.svg new file mode 100644 index 00000000..90eded55 --- /dev/null +++ b/assets/img/icons/upload.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/assets/img/icons/zip.svg b/assets/img/icons/zip.svg new file mode 100644 index 00000000..fff70d24 --- /dev/null +++ b/assets/img/icons/zip.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/uml.PNG b/docs/uml.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a04f9b06c9b50a33d1d1cba1f6836178fe9ed68e GIT binary patch literal 61580 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 G^8W$SkIujV literal 0 HcmV?d00001 diff --git a/docs/wireframe.PNG b/docs/wireframe.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c76abf028a4f11b198dc5ec3e0c2512995df3ed4 GIT binary patch literal 21312 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 J?~KhZ{Rw( literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 00000000..c59e75f6 --- /dev/null +++ b/index.php @@ -0,0 +1,106 @@ + + + + + + + Document + + + + + + + + + +
+ +
+
+ + +
+
+
+ +
+ +
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
File imgFile nameCreationLast modificationExtensionActions
iconfile.txt10/09/202021/09/2020 + + +
iconfile.txt10/09/202021/09/2020E X
iconfile.txt10/09/202021/09/2020E X
+
+
+ + diff --git a/modules/Utils.php b/modules/Utils.php new file mode 100644 index 00000000..7283c160 --- /dev/null +++ b/modules/Utils.php @@ -0,0 +1,38 @@ +=1.9.1" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..eb8662bf --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "filesystem-explorer", + "version": "1.0.0", + "description": "`#html` `#css` `#js` `#php` `#master-in-software-engineering`", + "main": "index.js", + "directories": { + "doc": "docs" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/badyalberto/filesystem-explorer.git" + }, + "author": "", + "license": "ISC", + "bugs": { + "url": "https://github.com/badyalberto/filesystem-explorer/issues" + }, + "homepage": "https://github.com/badyalberto/filesystem-explorer#readme", + "dependencies": { + "jquery": "^3.6.0", + "jstree": "^3.3.12" + } +} From eeba55e477ba262a3db11f18ab8299518217e6de Mon Sep 17 00:00:00 2001 From: CarlosVelilla Date: Thu, 4 Nov 2021 12:29:21 +0100 Subject: [PATCH 02/23] Add functionality create folder in modal window --- index.php | 215 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 119 insertions(+), 96 deletions(-) diff --git a/index.php b/index.php index c59e75f6..dc122a52 100644 --- a/index.php +++ b/index.php @@ -1,106 +1,129 @@ - - - - Document - - - - - - - - -
- -
-
- - -
-
-
+ + + + Document + + + + + + + -
- -
-
- -
- - -
+ +
+ +
+
+ + +
+
+
+ +
+ +
+
+ +
+ +
- - - - - - - - - - - + +
File imgFile nameCreationLast modificationExtensionActions
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
File imgFile nameCreationLast modificationExtensionActions
iconfile.txt10/09/202021/09/2020 + + +
iconfile.txt10/09/202021/09/2020E X
iconfile.txt10/09/202021/09/2020E X
+
+
+ - - - icon - file.txt - 10/09/2020 - 21/09/2020 - - - - - - - - icon - file.txt - 10/09/2020 - 21/09/2020 - - E X - - - icon - file.txt - 10/09/2020 - 21/09/2020 - - E X - - - -
-
- + + \ No newline at end of file From 924a68bbd83bdd5bf815444c43380f23d11e0826 Mon Sep 17 00:00:00 2001 From: Alberto Chica Date: Thu, 4 Nov 2021 13:55:56 +0100 Subject: [PATCH 03/23] show folders and files --- assets/img/icons/folder.svg | 61 +++++++++++++++++++ index.php | 32 ++-------- modules/Utils.php | 1 + modules/showFoldersFile.php | 69 ++++++++++++++++++++++ modules/uploads/Folder1/Folder3/file4.pdf | Bin modules/uploads/Folder1/file1.txt | 0 modules/uploads/Folder1/file2.jpg | 0 modules/uploads/Folder2/file3.mp3 | 0 modules/uploads/file5.txt | 0 modules/uploads/file6.jpg | 0 modules/uploads/file7.pdf | Bin modules/uploads/hola.doc | 0 12 files changed, 135 insertions(+), 28 deletions(-) create mode 100644 assets/img/icons/folder.svg create mode 100644 modules/showFoldersFile.php create mode 100644 modules/uploads/Folder1/Folder3/file4.pdf create mode 100644 modules/uploads/Folder1/file1.txt create mode 100644 modules/uploads/Folder1/file2.jpg create mode 100644 modules/uploads/Folder2/file3.mp3 create mode 100644 modules/uploads/file5.txt create mode 100644 modules/uploads/file6.jpg create mode 100644 modules/uploads/file7.pdf create mode 100644 modules/uploads/hola.doc diff --git a/assets/img/icons/folder.svg b/assets/img/icons/folder.svg new file mode 100644 index 00000000..23a23fd5 --- /dev/null +++ b/assets/img/icons/folder.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/index.php b/index.php index c59e75f6..ac094799 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,7 @@ @@ -71,33 +73,7 @@ - - icon - file.txt - 10/09/2020 - 21/09/2020 - - - - - - - - icon - file.txt - 10/09/2020 - 21/09/2020 - - E X - - - icon - file.txt - 10/09/2020 - 21/09/2020 - - E X - + diff --git a/modules/Utils.php b/modules/Utils.php index 7283c160..652cb918 100644 --- a/modules/Utils.php +++ b/modules/Utils.php @@ -2,6 +2,7 @@ function getIcon($type) { + switch ($type) { case 'doc': return "./assets/img/icons/doc.svg"; diff --git a/modules/showFoldersFile.php b/modules/showFoldersFile.php new file mode 100644 index 00000000..2538109a --- /dev/null +++ b/modules/showFoldersFile.php @@ -0,0 +1,69 @@ + $server_root.$name,'type' => $type, 'name' => $name, 'creationDate' => $cretionDate, 'editDate' => $editDate, 'icon' => "./assets/img/icons/" . $type . ".svg", )); + array_push($arrayTree, $json); + } + + return $arrayTree; + +} + +function printFolders($tree) +{ + /* echo "
";
+    echo print_r($tree); */
+
+    $html = '';
+    for ($i = 0; $i < count($tree); $i++) {
+        $html = $html . '';
+
+        $file = json_decode($tree[$i]);
+        foreach ($file as $key => $value) {
+            $url = '';
+            if($key === 'url'){
+                //echo  $value."
"; + $url = $value; + //echo $url."
"; + } + if ($key === 'icon') { + $html = $html . ""; + } else { + if ($key !== 'url') { + if ($key === 'name') { + //echo $value."
"; + $html = $html . "$value"; + } else { + $html = $html . "$value"; + } + + } + + } + } + $html = $html . " + + + "; + } + + return $html; +} diff --git a/modules/uploads/Folder1/Folder3/file4.pdf b/modules/uploads/Folder1/Folder3/file4.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/uploads/Folder1/file1.txt b/modules/uploads/Folder1/file1.txt new file mode 100644 index 00000000..e69de29b diff --git a/modules/uploads/Folder1/file2.jpg b/modules/uploads/Folder1/file2.jpg new file mode 100644 index 00000000..e69de29b diff --git a/modules/uploads/Folder2/file3.mp3 b/modules/uploads/Folder2/file3.mp3 new file mode 100644 index 00000000..e69de29b diff --git a/modules/uploads/file5.txt b/modules/uploads/file5.txt new file mode 100644 index 00000000..e69de29b diff --git a/modules/uploads/file6.jpg b/modules/uploads/file6.jpg new file mode 100644 index 00000000..e69de29b diff --git a/modules/uploads/file7.pdf b/modules/uploads/file7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/uploads/hola.doc b/modules/uploads/hola.doc new file mode 100644 index 00000000..e69de29b From 7617e320099fe0085564ec4602e96f8000bc6437 Mon Sep 17 00:00:00 2001 From: sergi92 <45389112+sergi92@users.noreply.github.com> Date: Thu, 4 Nov 2021 13:58:31 +0100 Subject: [PATCH 04/23] upload button completed --- index.php | 8 +- modules/Utils.php | 41 + modules/uploadFile.php | 8 + package-lock.json | 3921 +++++++++++++++++++++++++++++++++++++++- package.json | 3 +- 5 files changed, 3978 insertions(+), 3 deletions(-) create mode 100644 modules/uploadFile.php diff --git a/index.php b/index.php index c59e75f6..bfd228cf 100644 --- a/index.php +++ b/index.php @@ -1,5 +1,6 @@ @@ -55,7 +56,11 @@
- +
+ + +
+
@@ -104,3 +109,4 @@ + diff --git a/modules/Utils.php b/modules/Utils.php index 7283c160..cd595531 100644 --- a/modules/Utils.php +++ b/modules/Utils.php @@ -36,3 +36,44 @@ function getIcon($type) break; } } + + +function uploadFile(){ + if($_FILES['file']['name']!=='') + { + $fileName=$_FILES['file']['name']; + $test = explode(".", $_FILES['file']['name']); + $extension = end ($test); + $acceptedExtensions=['doc','csv', 'jpg','png','txt','ppt','odt','pdf','zip','rar','exe','svg','mp3','mp4']; + + if (!in_array($extension, $acceptedExtensions)) echo "wrong type, the accepted extensions are the following: ". print_r($acceptedExtensions); + else + { + echo "this is uploading now"; + + $location = $_SERVER['DOCUMENT_ROOT']."/".$fileName; + echo $location; + + move_uploaded_file($_FILES['file']['tmp_name'], $location); + }; + } + + + // $property= document.getElementById("file"); + + + + // https://www.php.net/manual/es/features.file-upload.post-method.php + // https://www.php.net/manual/es/function.move-uploaded-file.php + + //NO FORM https://www.youtube.com/watch?v=ut-NcYgFRKI +}; + + + + +function deleteFile(){ + // https://www.youtube.com/watch?v=UNAQAHtWDdc + // https://www.php.net/manual/en/function.delete +}; + diff --git a/modules/uploadFile.php b/modules/uploadFile.php new file mode 100644 index 00000000..90c4501b --- /dev/null +++ b/modules/uploadFile.php @@ -0,0 +1,8 @@ +=1.9.1" + } + }, + "node_modules/npm": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-8.1.2.tgz", + "integrity": "sha512-9awPeSZ+3sS4cBwGsJQnbt3M+ZyBRBokEJYdm2nmu9n8HSuGEEOR1cLy7NLB08veoj21I6ZtMhwM1ARz6HWYHg==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/ci-detect", + "@npmcli/config", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "ansicolors", + "ansistyles", + "archy", + "cacache", + "chalk", + "chownr", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minipass", + "minipass-pipeline", + "mkdirp", + "mkdirp-infer-owner", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "opener", + "pacote", + "parse-conflict-json", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "readdir-scoped-modules", + "rimraf", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dependencies": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^2.0.0", + "@npmcli/metavuln-calculator": "^2.0.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^2.0.0", + "bin-links": "^2.3.0", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^12.0.0", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/@npmcli/ci-detect": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "2.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^15.0.5", + "json-parse-even-better-errors": "^2.3.1", + "pacote": "^12.0.0", + "semver": "^7.3.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^8.2.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.1.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/ansicolors": { + "version": "0.3.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ansistyles": { + "version": "0.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "1.1.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "2.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^4.0.1", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/cacache": { + "version": "15.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-columns/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/code-point-at": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/colors": { + "version": "1.4.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.5.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.0.0", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.12", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "7.2.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.0", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "4.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "2.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "1.1.5", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.7.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/is-typedarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^12.0.0", + "tar": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^4.0.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^2.0.0", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^12.0.0", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "6.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/run-script": "^2.0.0", + "npm-package-arg": "^8.1.0", + "pacote": "^12.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^2.0.0", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "9.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "3.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "8.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/aproba": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "2.7.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/string-width": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "3.0.3", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "2.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "1.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "4.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "8.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "6.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "5.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/npmlog": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/number-is-nan": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/object-assign": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/opener": { + "version": "1.5.2", + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "12.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^2.0.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^3.0.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "4.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.6.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.10", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/ssri": { + "version": "8.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/stringify-package": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.11", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + } + }, "dependencies": { "jquery": { "version": "3.6.0", @@ -16,6 +2351,1590 @@ "requires": { "jquery": ">=1.9.1" } + }, + "npm": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-8.1.2.tgz", + "integrity": "sha512-9awPeSZ+3sS4cBwGsJQnbt3M+ZyBRBokEJYdm2nmu9n8HSuGEEOR1cLy7NLB08veoj21I6ZtMhwM1ARz6HWYHg==", + "requires": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "dependencies": { + "@gar/promisify": { + "version": "1.1.2", + "bundled": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "bundled": true + }, + "@npmcli/arborist": { + "version": "4.0.3", + "bundled": true, + "requires": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^2.0.0", + "@npmcli/metavuln-calculator": "^2.0.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^2.0.0", + "bin-links": "^2.3.0", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^12.0.0", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/ci-detect": { + "version": "1.4.0", + "bundled": true + }, + "@npmcli/config": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/disparity-colors": { + "version": "1.0.1", + "bundled": true, + "requires": { + "ansi-styles": "^4.3.0" + } + }, + "@npmcli/fs": { + "version": "1.0.0", + "bundled": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "2.1.0", + "bundled": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "bundled": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/map-workspaces": { + "version": "2.0.0", + "bundled": true, + "requires": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + } + }, + "@npmcli/metavuln-calculator": { + "version": "2.0.0", + "bundled": true, + "requires": { + "cacache": "^15.0.5", + "json-parse-even-better-errors": "^2.3.1", + "pacote": "^12.0.0", + "semver": "^7.3.2" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "bundled": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/name-from-folder": { + "version": "1.0.1", + "bundled": true + }, + "@npmcli/node-gyp": { + "version": "1.0.2", + "bundled": true + }, + "@npmcli/package-json": { + "version": "1.0.1", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "bundled": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "2.0.0", + "bundled": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^8.2.0", + "read-package-json-fast": "^2.0.1" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "bundled": true + }, + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "agent-base": { + "version": "6.0.2", + "bundled": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.1.4", + "bundled": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "bundled": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true + }, + "aproba": { + "version": "2.0.0", + "bundled": true + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.6", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true + }, + "balanced-match": { + "version": "1.0.2", + "bundled": true + }, + "bin-links": { + "version": "2.3.0", + "bundled": true, + "requires": { + "cmd-shim": "^4.0.1", + "mkdirp-infer-owner": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + } + }, + "binary-extensions": { + "version": "2.2.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "builtins": { + "version": "1.0.3", + "bundled": true + }, + "cacache": { + "version": "15.3.0", + "bundled": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "chalk": { + "version": "4.1.2", + "bundled": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "2.0.0", + "bundled": true + }, + "cidr-regex": { + "version": "3.1.1", + "bundled": true, + "requires": { + "ip-regex": "^4.1.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "bundled": true + }, + "cli-columns": { + "version": "4.0.0", + "bundled": true, + "requires": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "bundled": true + }, + "string-width": { + "version": "4.2.3", + "bundled": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "cli-table3": { + "version": "0.6.0", + "bundled": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "bundled": true + }, + "string-width": { + "version": "4.2.2", + "bundled": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "cmd-shim": { + "version": "4.1.0", + "bundled": true, + "requires": { + "mkdirp-infer-owner": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true + }, + "color-support": { + "version": "1.1.3", + "bundled": true + }, + "colors": { + "version": "1.4.0", + "bundled": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "common-ancestor-path": { + "version": "1.0.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "debug": { + "version": "4.3.2", + "bundled": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "bundled": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "requires": { + "clone": "^1.0.2" + } + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "depd": { + "version": "1.1.2", + "bundled": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "5.0.0", + "bundled": true + }, + "emoji-regex": { + "version": "8.0.0", + "bundled": true + }, + "encoding": { + "version": "0.1.13", + "bundled": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "bundled": true + }, + "err-code": { + "version": "2.0.3", + "bundled": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "bundled": true + }, + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "gauge": { + "version": "3.0.1", + "bundled": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + } + }, + "glob": { + "version": "7.2.0", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "bundled": true + }, + "has": { + "version": "1.0.3", + "bundled": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hosted-git-info": { + "version": "4.0.2", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "bundled": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "bundled": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore-walk": { + "version": "4.0.1", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "4.0.0", + "bundled": true + }, + "infer-owner": { + "version": "1.0.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ini": { + "version": "2.0.0", + "bundled": true + }, + "init-package-json": { + "version": "2.0.5", + "bundled": true, + "requires": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "ip": { + "version": "1.1.5", + "bundled": true + }, + "ip-regex": { + "version": "4.3.0", + "bundled": true + }, + "is-cidr": { + "version": "4.0.2", + "bundled": true, + "requires": { + "cidr-regex": "^3.1.1" + } + }, + "is-core-module": { + "version": "2.7.0", + "bundled": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-lambda": { + "version": "1.0.1", + "bundled": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "bundled": true + }, + "json-stringify-nice": { + "version": "1.1.4", + "bundled": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true + }, + "just-diff": { + "version": "3.1.1", + "bundled": true + }, + "just-diff-apply": { + "version": "3.0.0", + "bundled": true + }, + "libnpmaccess": { + "version": "4.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmdiff": { + "version": "2.0.4", + "bundled": true, + "requires": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^12.0.0", + "tar": "^6.1.0" + } + }, + "libnpmexec": { + "version": "3.0.1", + "bundled": true, + "requires": { + "@npmcli/arborist": "^4.0.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^2.0.0", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^12.0.0", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + } + }, + "libnpmfund": { + "version": "2.0.1", + "bundled": true, + "requires": { + "@npmcli/arborist": "^4.0.0" + } + }, + "libnpmhook": { + "version": "6.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmorg": { + "version": "2.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmpack": { + "version": "3.0.0", + "bundled": true, + "requires": { + "@npmcli/run-script": "^2.0.0", + "npm-package-arg": "^8.1.0", + "pacote": "^12.0.0" + } + }, + "libnpmpublish": { + "version": "4.0.2", + "bundled": true, + "requires": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + } + }, + "libnpmsearch": { + "version": "3.1.2", + "bundled": true, + "requires": { + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmteam": { + "version": "2.0.4", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmversion": { + "version": "2.0.1", + "bundled": true, + "requires": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^2.0.0", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + } + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "bundled": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "3.1.5", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "bundled": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "bundled": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "bundled": true + }, + "mkdirp-infer-owner": { + "version": "2.0.0", + "bundled": true, + "requires": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + } + }, + "ms": { + "version": "2.1.3", + "bundled": true + }, + "mute-stream": { + "version": "0.0.8", + "bundled": true + }, + "negotiator": { + "version": "0.6.2", + "bundled": true + }, + "node-gyp": { + "version": "8.3.0", + "bundled": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "bundled": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "bundled": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-audit-report": { + "version": "2.1.5", + "bundled": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "npm-bundled": { + "version": "1.1.2", + "bundled": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "bundled": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true + }, + "npm-package-arg": { + "version": "8.1.5", + "bundled": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "3.0.0", + "bundled": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^4.0.1", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "bundled": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "npm-profile": { + "version": "5.0.4", + "bundled": true, + "requires": { + "npm-registry-fetch": "^11.0.0" + } + }, + "npm-registry-fetch": { + "version": "11.0.0", + "bundled": true, + "requires": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, + "npm-user-validate": { + "version": "1.0.1", + "bundled": true + }, + "npmlog": { + "version": "5.0.1", + "bundled": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "2.0.0", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + } + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.2", + "bundled": true + }, + "p-map": { + "version": "4.0.0", + "bundled": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "pacote": { + "version": "12.0.2", + "bundled": true, + "requires": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^2.0.0", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^3.0.0", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "parse-conflict-json": { + "version": "1.1.1", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "proc-log": { + "version": "1.0.0", + "bundled": true + }, + "promise-all-reject-late": { + "version": "1.0.1", + "bundled": true + }, + "promise-call-limit": { + "version": "1.0.1", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "promise-retry": { + "version": "2.0.1", + "bundled": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "requires": { + "read": "1" + } + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true + }, + "read": { + "version": "1.0.7", + "bundled": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "2.0.0", + "bundled": true + }, + "read-package-json": { + "version": "4.1.1", + "bundled": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "bundled": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "retry": { + "version": "0.12.0", + "bundled": true + }, + "rimraf": { + "version": "3.0.2", + "bundled": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "semver": { + "version": "7.3.5", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.3", + "bundled": true + }, + "smart-buffer": { + "version": "4.2.0", + "bundled": true + }, + "socks": { + "version": "2.6.1", + "bundled": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.0", + "bundled": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "spdx-correct": { + "version": "3.1.1", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.10", + "bundled": true + }, + "ssri": { + "version": "8.0.1", + "bundled": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "stringify-package": { + "version": "1.0.1", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "bundled": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "6.1.11", + "bundled": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true + }, + "treeverse": { + "version": "1.0.4", + "bundled": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "bundled": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "walk-up-path": { + "version": "1.0.0", + "bundled": true + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "2.0.2", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "3.0.3", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } } } } diff --git a/package.json b/package.json index eb8662bf..8c7e43e4 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "homepage": "https://github.com/badyalberto/filesystem-explorer#readme", "dependencies": { "jquery": "^3.6.0", - "jstree": "^3.3.12" + "jstree": "^3.3.12", + "npm": "^8.1.2" } } From 40123094a0e12b73f94a7147b5c5f9815ceb6613 Mon Sep 17 00:00:00 2001 From: CarlosVelilla Date: Thu, 4 Nov 2021 14:12:12 +0100 Subject: [PATCH 05/23] Fix root --- modules/showFoldersFile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/showFoldersFile.php b/modules/showFoldersFile.php index 2538109a..45994927 100644 --- a/modules/showFoldersFile.php +++ b/modules/showFoldersFile.php @@ -3,7 +3,7 @@ function showFoldersFile($path = '/') { $arrayTree = []; - $server_root = $_SERVER['DOCUMENT_ROOT'] . '/filesystem-explorer/modules/uploads' . $path; + $server_root = getcwd() . '/modules/uploads' . $path; $tree = scandir($server_root); From d542580b7394972141612d6a8d1fc82448273b09 Mon Sep 17 00:00:00 2001 From: sergi92 <45389112+sergi92@users.noreply.github.com> Date: Thu, 4 Nov 2021 14:27:40 +0100 Subject: [PATCH 06/23] updated before merge --- modules/Utils.php | 31 +++++-------------------------- modules/uploadFile.php | 1 - 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/modules/Utils.php b/modules/Utils.php index a3a1521f..4b47efdf 100644 --- a/modules/Utils.php +++ b/modules/Utils.php @@ -49,32 +49,11 @@ function uploadFile(){ if (!in_array($extension, $acceptedExtensions)) echo "wrong type, the accepted extensions are the following: ". print_r($acceptedExtensions); else - { - echo "this is uploading now"; - - $location = $_SERVER['DOCUMENT_ROOT']."/".$fileName; + { + $location = getcwd()."/".$fileName; echo $location; - move_uploaded_file($_FILES['file']['tmp_name'], $location); + //Location to be discussed + header("Location: ../"); }; - } - - - // $property= document.getElementById("file"); - - - - // https://www.php.net/manual/es/features.file-upload.post-method.php - // https://www.php.net/manual/es/function.move-uploaded-file.php - - //NO FORM https://www.youtube.com/watch?v=ut-NcYgFRKI -}; - - - - -function deleteFile(){ - // https://www.youtube.com/watch?v=UNAQAHtWDdc - // https://www.php.net/manual/en/function.delete -}; - + }}; \ No newline at end of file diff --git a/modules/uploadFile.php b/modules/uploadFile.php index 90c4501b..869eeb91 100644 --- a/modules/uploadFile.php +++ b/modules/uploadFile.php @@ -1,7 +1,6 @@ Date: Thu, 4 Nov 2021 14:39:46 +0100 Subject: [PATCH 07/23] solved index conflicts --- index.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/index.php b/index.php index 2510aa10..0ba8cf68 100644 --- a/index.php +++ b/index.php @@ -48,7 +48,10 @@
- +
+ + +
@@ -71,7 +74,7 @@ -
+ From 860f27a5340d5a0a869fba7ed7883c36fd313d73 Mon Sep 17 00:00:00 2001 From: sergi92 <45389112+sergi92@users.noreply.github.com> Date: Thu, 4 Nov 2021 17:04:09 +0100 Subject: [PATCH 08/23] initial modal --- index.php | 54 ++++++++++++++++++++++++++----------- modules/Utils.php | 33 ++++++++++++++--------- modules/editFile.php | 5 ++++ modules/showFoldersFile.php | 12 +++------ 4 files changed, 69 insertions(+), 35 deletions(-) create mode 100644 modules/editFile.php diff --git a/index.php b/index.php index 0ba8cf68..48e4632a 100644 --- a/index.php +++ b/index.php @@ -49,9 +49,9 @@
- - - + + +
@@ -66,15 +66,16 @@ - +
+ - - + + - - + + + + + + + + \ No newline at end of file diff --git a/modules/Utils.php b/modules/Utils.php index 4b47efdf..8e8c8ddf 100644 --- a/modules/Utils.php +++ b/modules/Utils.php @@ -2,7 +2,7 @@ function getIcon($type) { - + switch ($type) { case 'doc': return "./assets/img/icons/doc.svg"; @@ -39,21 +39,30 @@ function getIcon($type) } -function uploadFile(){ - if($_FILES['file']['name']!=='') - { - $fileName=$_FILES['file']['name']; +function uploadFile() +{ + if ($_FILES['file']['name'] !== '') { + $fileName = $_FILES['file']['name']; $test = explode(".", $_FILES['file']['name']); - $extension = end ($test); - $acceptedExtensions=['doc','csv', 'jpg','png','txt','ppt','odt','pdf','zip','rar','exe','svg','mp3','mp4']; + $extension = end($test); + $acceptedExtensions = ['doc', 'csv', 'jpg', 'png', 'txt', 'ppt', 'odt', 'pdf', 'zip', 'rar', 'exe', 'svg', 'mp3', 'mp4']; - if (!in_array($extension, $acceptedExtensions)) echo "wrong type, the accepted extensions are the following: ". print_r($acceptedExtensions); - else - { - $location = getcwd()."/".$fileName; + if (!in_array($extension, $acceptedExtensions)) echo "wrong type, the accepted extensions are the following: " . print_r($acceptedExtensions); + else { + $location = getcwd() . "/" . $fileName; echo $location; move_uploaded_file($_FILES['file']['tmp_name'], $location); //Location to be discussed header("Location: ../"); }; - }}; \ No newline at end of file + } +}; + +function editFile($oldName) +{ + if (isset($_POST['newName'])) { + $newName = $_POST['newName']; + echo $newName; + // rename($oldName, $newName); + } +}; diff --git a/modules/editFile.php b/modules/editFile.php new file mode 100644 index 00000000..642e10db --- /dev/null +++ b/modules/editFile.php @@ -0,0 +1,5 @@ + $server_root.$name,'type' => $type, 'name' => $name, 'creationDate' => $cretionDate, 'editDate' => $editDate, 'icon' => "./assets/img/icons/" . $type . ".svg", )); + $json = json_encode(array('url' => $server_root . $name, 'type' => $type, 'name' => $name, 'creationDate' => $cretionDate, 'editDate' => $editDate, 'icon' => "./assets/img/icons/" . $type . ".svg",)); array_push($arrayTree, $json); } return $arrayTree; - } function printFolders($tree) @@ -39,7 +37,7 @@ function printFolders($tree) $file = json_decode($tree[$i]); foreach ($file as $key => $value) { $url = ''; - if($key === 'url'){ + if ($key === 'url') { //echo $value."
"; $url = $value; //echo $url."
"; @@ -54,14 +52,12 @@ function printFolders($tree) } else { $html = $html . "$value"; } - } - } } $html = $html . " - - + + "; } From a4653ba221ad51edec79e81cbf36b18ef8317b4e Mon Sep 17 00:00:00 2001 From: Alberto Chica Date: Thu, 4 Nov 2021 17:46:04 +0100 Subject: [PATCH 09/23] tree --- assets/js/datatable.js | 5 ++++ index.php | 30 +++++++++++----------- modules/Utils.php | 35 ++++++++++++++++++++++++++ modules/printFoldersFile.php | 42 +++++++++++++++++++++++++++++++ modules/showFoldersFile.php | 46 +++------------------------------- modules/uploads/adios.pdf | Bin modules/uploads/comoestas.png | 0 modules/uploads/file5.txt | 1 + package-lock.json | 22 ++++++++++++++++ package.json | 2 ++ 10 files changed, 125 insertions(+), 58 deletions(-) create mode 100644 assets/js/datatable.js create mode 100644 modules/printFoldersFile.php create mode 100644 modules/uploads/adios.pdf create mode 100644 modules/uploads/comoestas.png diff --git a/assets/js/datatable.js b/assets/js/datatable.js new file mode 100644 index 00000000..5113fe91 --- /dev/null +++ b/assets/js/datatable.js @@ -0,0 +1,5 @@ +$(document).ready( function () { + $('#table').DataTable(); + $('#tree').jstree(); +} ); + diff --git a/index.php b/index.php index ac094799..04890508 100644 --- a/index.php +++ b/index.php @@ -1,6 +1,7 @@ @@ -13,18 +14,16 @@ - + + + + + + @@ -39,12 +38,13 @@
-