Merge branch 'main' of github.com:gtsteffaniak/filebrowser
This commit is contained in:
commit
cddab82215
|
@ -13,50 +13,47 @@ jobs:
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-go@v2
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: 1.21.1
|
go-version: 1.21.1
|
||||||
- run: cd backend && go test -race -v ./...
|
- run: cd backend && go test -race -v ./...
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-go@v2
|
- uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: 1.21.1
|
go-version: 1.21.1
|
||||||
- run: cd backend && go fmt ./...
|
- run: cd backend && go fmt ./...
|
||||||
|
push_to_registry:
|
||||||
# release
|
|
||||||
release:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [lint, test]
|
needs: [lint, test]
|
||||||
if: startsWith(github.event.ref, 'refs/tags/v')
|
name: Push Docker image to Docker Hub
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: contains(github.ref, 'main') || startsWith(github.ref,'v0.')
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- name: Check out the repo
|
||||||
with:
|
uses: actions/checkout@v4
|
||||||
fetch-depth: 0
|
|
||||||
- uses: actions/setup-go@v2
|
|
||||||
with:
|
|
||||||
go-version: 1.20.1
|
|
||||||
- uses: actions/setup-node@v2
|
|
||||||
with:
|
|
||||||
node-version: '16'
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1
|
uses: docker/setup-qemu-action@v3
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Build frontend
|
|
||||||
run: make build-frontend
|
|
||||||
- name: Log in to Docker Hub
|
- name: Log in to Docker Hub
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
- name: Run GoReleaser
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
uses: goreleaser/goreleaser-action@v2
|
id: meta
|
||||||
|
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
|
||||||
with:
|
with:
|
||||||
version: latest
|
images: gtstef/filebrowser
|
||||||
args: release --rm-dist
|
- name: Build and push
|
||||||
env:
|
uses: docker/build-push-action@v5
|
||||||
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: ${{ contains(github.ref, 'main') && 'latest' || steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
|
@ -16,9 +16,9 @@ jobs:
|
||||||
stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
|
stale-pr-message: 'This PR is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
|
||||||
close-pr-message: 'This PR was closed because it has been stalled for 5 days with no activity.'
|
close-pr-message: 'This PR was closed because it has been stalled for 5 days with no activity.'
|
||||||
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
|
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
|
||||||
close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.'
|
close-issue-message: 'This issue was closed because it has been stalled for 30 days with no activity.'
|
||||||
days-before-stale: 30
|
days-before-stale: 30
|
||||||
days-before-close: 5
|
days-before-close: 30
|
||||||
exempt-issue-labels: 'feature ☘,enhancement ⚙,bug 🐞'
|
exempt-issue-labels: 'feature ☘,enhancement ⚙,bug 🐞'
|
||||||
exempt-pr-labels: 'need-help,wip'
|
exempt-pr-labels: 'need-help,wip'
|
||||||
operations-per-run: 100
|
operations-per-run: 100
|
117
README.md
117
README.md
|
@ -1,4 +1,13 @@
|
||||||
## Filebrowser
|
<p align="center">
|
||||||
|
<a href="https://opensource.org/license/apache-2-0/"><img src="https://img.shields.io/badge/License-Apache_2.0-blue.svg" alt="License: Apache-2.0"></a>
|
||||||
|
</p>
|
||||||
|
<p align="center">
|
||||||
|
<img src="frontend/public/img/icons/favicon-256x256.png" width="100" title="Login With Custom URL">
|
||||||
|
</p>
|
||||||
|
<h3 align="center">Filebrowser - A modern file manager for the web</h3>
|
||||||
|
<p align="center">
|
||||||
|
<img width="500" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/459937ef-3f14-408d-aef5-899cde4cf3a1" title="Main Screenshot">
|
||||||
|
</p>
|
||||||
|
|
||||||
> **NOTE**
|
> **NOTE**
|
||||||
Intended for docker use only
|
Intended for docker use only
|
||||||
|
@ -9,23 +18,11 @@ Starting with v0.2.0, *ALL* configuration is done via `filebrowser.yaml` configu
|
||||||
This fork makes the following significant changes to filebrowser for origin:
|
This fork makes the following significant changes to filebrowser for origin:
|
||||||
|
|
||||||
1. [x] Improves search to use index instead of filesystem.
|
1. [x] Improves search to use index instead of filesystem.
|
||||||
- [x] Lightning fast
|
- Lightning fast, realtime results as you type
|
||||||
- [x] Realtime results as you type
|
- Works with more type filters
|
||||||
- [x] Works with file type filter
|
1. [x] Improved and simplified GUI navbar and sidebar menu.
|
||||||
- [x] better desktop search view
|
1. [x] Updated version and dependencies.
|
||||||
1. [x] Preview enhancements
|
1. [x] **IMPORTANT** Moved all configurations to `filebrowser.yaml`.
|
||||||
- Preview default view is constrained to files subwindow,
|
|
||||||
which can be toggled to fullscreen.
|
|
||||||
1. [x] Improved and simplified GUI
|
|
||||||
- Moved all action buttons to file action bar except for switch-view
|
|
||||||
- Simplified navbar to 3 main actions: settings,search, and switch-view
|
|
||||||
- New search view on desktop
|
|
||||||
1. [x] Updated version and dependencies
|
|
||||||
- [x] Uses latest npm and node version
|
|
||||||
- [x] Removes deprecated npm packages
|
|
||||||
- [x] Updates golang dependencies
|
|
||||||
- [x] Remove all unnecessary packages, replaces with generic functions.
|
|
||||||
1. [x] **IMPORTANT** Moved all configurations to `filebrowser.yaml`. no more flags or binary operations to db
|
|
||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
|
@ -39,50 +36,43 @@ work better in terms of asthetics and performance. Improved search,
|
||||||
simplified ui (without removing features) and more secure and up-to-date
|
simplified ui (without removing features) and more secure and up-to-date
|
||||||
build are just a few examples.
|
build are just a few examples.
|
||||||
|
|
||||||
There are a few more changes needed to get it to a stable status where it
|
|
||||||
will only recieve security updates. These changes are mentioned above.
|
|
||||||
Once this is fully complete, the only updates to th
|
|
||||||
|
|
||||||
## Look
|
## Look
|
||||||
|
<p align="center">
|
||||||
|
<img width="500" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/35cdeb3b-ab79-4b04-8001-8f51f6ea06bb" title="Dark mode">
|
||||||
|
<img width="500" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/8d426356-26cf-407b-b078-bf58f198e799" title="Dark mode2">
|
||||||
|
<img width="300" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/37e8f03b-4f5a-4689-aa6c-5cd858a858e9" title="Dark mode">
|
||||||
|
<img width="300" src="https://github.com/gtsteffaniak/filebrowser/assets/42989099/b04d3c1f-154b-45ba-927c-2112926ad3a9" title="Dark mode">
|
||||||
|
</p>
|
||||||
|
|
||||||
This is how desktop search looks in 0.2.0
|
## Search Performance
|
||||||

|
|
||||||
|
|
||||||

|
100x faster search. However, this will be at expense of RAM. if you have < 1 million
|
||||||
|
|
||||||
However [mobile search](https://github.com/gtsteffaniak/filebrowser/assets/42989099/37e8f03b-4f5a-4689-aa6c-5cd858a858e9) still appears very similar to filebrowser/filebrowsers original implementation.
|
|
||||||
|
|
||||||
[Mobile web also looks similar](https://github.com/gtsteffaniak/filebrowser/assets/42989099/b04d3c1f-154b-45ba-927c-2112926ad3a9)
|
|
||||||
|
|
||||||
## Performance
|
|
||||||
|
|
||||||
Search Performance - 100x faster search. However, this will be at expense of RAM. if you have < 1 million
|
|
||||||
files and folders in the given scope, the RAM usage should be less than 200MB total. RAM requirements
|
files and folders in the given scope, the RAM usage should be less than 200MB total. RAM requirements
|
||||||
should scale based on the number of directories.
|
should scale based on the number of directories.
|
||||||
|
|
||||||
Also , the approx. time to fully index will vary widely based on performance. A sufficiently performant
|
Also , the approx. time to fully index will vary widely based on performance. A sufficiently performant
|
||||||
system should fully index within the first 5 minutes, potentially within the first few seconds.
|
system should fully index within the first 5 minutes, potentially within the first few seconds.
|
||||||
|
|
||||||
For example, a low end 11th gen i5 with SSD indexes 86K files within 1 second:
|
For example, a low end 11th gen i5 with SSD indexes 128K files within 1 second:
|
||||||
|
|
||||||
```
|
```
|
||||||
2023/08/01 00:08:29 Using config file: /.filebrowser.json
|
2023/09/09 21:38:50 Initializing with config file: filebrowser.yaml
|
||||||
2023/08/01 00:08:29 Indexing files...
|
2023/09/09 21:38:50 Indexing files...
|
||||||
2023/08/01 00:08:29 Listening on [::]:8080
|
2023/09/09 21:38:50 Listening on [::]:8080
|
||||||
2023/08/01 00:08:30 Successfully indexed files.
|
2023/09/09 21:38:51 Successfully indexed files.
|
||||||
2023/08/01 00:08:30 Files found : 85310
|
2023/09/09 21:38:51 Files found : 123452
|
||||||
2023/08/01 00:08:30 Directories found : 1711
|
2023/09/09 21:38:51 Directories found : 1768
|
||||||
2023/08/01 00:08:30 Indexing scheduler will run every 5 minutes
|
2023/09/09 21:38:51 Indexing scheduler will run every 5 minutes
|
||||||
```
|
```
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
Using docker:
|
Using docker:
|
||||||
|
|
||||||
1. docker run:
|
1. docker run (no persistent db):
|
||||||
|
|
||||||
```
|
```
|
||||||
docker run -it -v /path/to/folder:/srv -p 8080:8080 gtstef/filebrowser
|
docker run -it -v /path/to/folder:/srv -p 80:8080 gtstef/filebrowser
|
||||||
```
|
```
|
||||||
|
|
||||||
1. docker-compose:
|
1. docker-compose:
|
||||||
|
@ -94,12 +84,13 @@ version: '3.7'
|
||||||
services:
|
services:
|
||||||
filebrowser:
|
filebrowser:
|
||||||
volumes:
|
volumes:
|
||||||
- '/path/to/folder:/srv'
|
- '/path/to/folder:/srv' # required (for now not configurable)
|
||||||
#- './database/:/database/'
|
- './database:/database' # optional if you want db to persist - configure a path under "database" dir in config file.
|
||||||
- './config.json:/.filebrowser.json'
|
- './filebrowser.yaml:/filebrowser.yaml' # required
|
||||||
ports:
|
ports:
|
||||||
- '8080:8080'
|
- '80:8080'
|
||||||
image: gtstef/filebrowser
|
image: gtstef/filebrowser
|
||||||
|
restart: always
|
||||||
```
|
```
|
||||||
|
|
||||||
- with network share
|
- with network share
|
||||||
|
@ -109,25 +100,39 @@ version: '3.7'
|
||||||
services:
|
services:
|
||||||
filebrowser:
|
filebrowser:
|
||||||
volumes:
|
volumes:
|
||||||
- 'nas:/srv'
|
- 'storage:/srv' # required (for now not configurable)
|
||||||
#- './database/:/database/'
|
- './database:/database' # optional if you want db to persist - configure a path under "database" dir in config file.
|
||||||
#- './config.json:/.filebrowser.json'
|
- './filebrowser.yaml:/filebrowser.yaml' # required
|
||||||
ports:
|
ports:
|
||||||
- '8080:80'
|
- '80:8080'
|
||||||
image: gtstef/filebrowser
|
image: gtstef/filebrowser
|
||||||
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
nas:
|
storage:
|
||||||
driver_opts:
|
driver_opts:
|
||||||
type: cifs
|
type: cifs
|
||||||
o: "username=myusername,password=mypassword,rw"
|
o: "username=admin,password=password,rw" # enter valid info here
|
||||||
device: "//fileshare/"
|
device: "//192.168.1.100/share/" # enter valid hinfo here
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
All configuration is now done via a single configuration file: `filebrowser.yaml`, here is an example [configuration file](./backend/filebrowser.yaml).
|
All configuration is now done via a single configuration file: `filebrowser.yaml`, here is an example minimal [configuration file](./backend/filebrowser.yaml).
|
||||||
### background
|
|
||||||
|
View the [Configuration Help Page](./configuration.md) for available configuration options and other help.
|
||||||
|
|
||||||
|
### background & help
|
||||||
|
|
||||||
The original project filebrowser/filebrowser used multiple different ways to configure the server.
|
The original project filebrowser/filebrowser used multiple different ways to configure the server.
|
||||||
This was confusing and difficult to work with from a user and from a developer's perspective.
|
This was confusing and difficult to work with from a user and from a developer's perspective.
|
||||||
So I completely redesigned the program to use one single human-readable config file.
|
So I completely redesigned the program to use one single human-readable config file.
|
||||||
|
|
||||||
|
I understand many coming from the original fork may notice differences which make using this improved version more difficult. If you notice issues that you believe should be fixed, please open an issue here and it will very likely be addressed with a PR within a few weeks.
|
||||||
|
|
||||||
|
This version of filebrowser is going through a configuration overhaul as mentioned above. Certain features related to rules and commands may not work as they do on the original filebrowser. The purpose of this is to create a more consistent experience where configuration is done via files rather than running commands, so that it's very clear what the current state of the configuration is. When running commands its not clear what the configuration is.
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
|
||||||
|
see [Roadmap Page](./roadmap.md)
|
||||||
|
|
||||||
|
|
|
@ -5,38 +5,38 @@
|
||||||
? github.com/gtsteffaniak/filebrowser/auth [no test files]
|
? github.com/gtsteffaniak/filebrowser/auth [no test files]
|
||||||
? github.com/gtsteffaniak/filebrowser/cmd [no test files]
|
? github.com/gtsteffaniak/filebrowser/cmd [no test files]
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/diskcache 0.004s
|
ok github.com/gtsteffaniak/filebrowser/diskcache 0.003s
|
||||||
? github.com/gtsteffaniak/filebrowser/errors [no test files]
|
? github.com/gtsteffaniak/filebrowser/errors [no test files]
|
||||||
? github.com/gtsteffaniak/filebrowser/files [no test files]
|
? github.com/gtsteffaniak/filebrowser/files [no test files]
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/fileutils 0.004s
|
ok github.com/gtsteffaniak/filebrowser/fileutils 0.003s
|
||||||
2023/09/02 19:15:20 h: 401 <nil>
|
2023/09/10 09:17:55 h: 401 <nil>
|
||||||
2023/09/02 19:15:20 h: 401 <nil>
|
2023/09/10 09:17:55 h: 401 <nil>
|
||||||
2023/09/02 19:15:20 h: 401 <nil>
|
2023/09/10 09:17:55 h: 401 <nil>
|
||||||
2023/09/02 19:15:20 h: 401 <nil>
|
2023/09/10 09:17:56 h: 401 <nil>
|
||||||
2023/09/02 19:15:20 h: 401 <nil>
|
2023/09/10 09:17:56 h: 401 <nil>
|
||||||
2023/09/02 19:15:20 h: 401 <nil>
|
2023/09/10 09:17:56 h: 401 <nil>
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/http 0.094s
|
ok github.com/gtsteffaniak/filebrowser/http 0.082s
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/img 0.122s
|
ok github.com/gtsteffaniak/filebrowser/img 0.118s
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/rules 0.002s
|
ok github.com/gtsteffaniak/filebrowser/rules 0.002s
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/runner 0.004s
|
ok github.com/gtsteffaniak/filebrowser/runner 0.003s
|
||||||
goos: linux
|
goos: linux
|
||||||
goarch: amd64
|
goarch: amd64
|
||||||
pkg: github.com/gtsteffaniak/filebrowser/search
|
pkg: github.com/gtsteffaniak/filebrowser/search
|
||||||
cpu: 11th Gen Intel(R) Core(TM) i5-11320H @ 3.20GHz
|
cpu: 11th Gen Intel(R) Core(TM) i5-11320H @ 3.20GHz
|
||||||
BenchmarkSearchAllIndexes-8 10 5176084 ns/op 2743632 B/op 42785 allocs/op
|
BenchmarkSearchAllIndexes-8 10 5311144 ns/op 2934075 B/op 44569 allocs/op
|
||||||
BenchmarkFillIndex-8 10 3263308 ns/op 18485 B/op 453 allocs/op
|
BenchmarkFillIndex-8 10 3142607 ns/op 18473 B/op 452 allocs/op
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/search 0.109s
|
ok github.com/gtsteffaniak/filebrowser/search 0.110s
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/settings 0.004s
|
ok github.com/gtsteffaniak/filebrowser/settings 0.005s
|
||||||
? github.com/gtsteffaniak/filebrowser/share [no test files]
|
? github.com/gtsteffaniak/filebrowser/share [no test files]
|
||||||
? github.com/gtsteffaniak/filebrowser/storage [no test files]
|
? github.com/gtsteffaniak/filebrowser/storage [no test files]
|
||||||
? github.com/gtsteffaniak/filebrowser/storage/bolt [no test files]
|
? github.com/gtsteffaniak/filebrowser/storage/bolt [no test files]
|
||||||
PASS
|
PASS
|
||||||
ok github.com/gtsteffaniak/filebrowser/users 0.004s
|
ok github.com/gtsteffaniak/filebrowser/users 0.003s
|
||||||
? github.com/gtsteffaniak/filebrowser/version [no test files]
|
? github.com/gtsteffaniak/filebrowser/version [no test files]
|
||||||
|
|
|
@ -139,7 +139,7 @@ func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs
|
||||||
}
|
}
|
||||||
|
|
||||||
w.Header().Set("Content-Encoding", "gzip")
|
w.Header().Set("Content-Encoding", "gzip")
|
||||||
w.Header().Set("Content-Type", "application/javascript; charset=utf-8")
|
w.Header().Set("Content-Type", "application/javascript; charset=utf-8") // Set the correct MIME type for JavaScript files
|
||||||
|
|
||||||
if _, err := w.Write(fileContents); err != nil {
|
if _, err := w.Write(fileContents); err != nil {
|
||||||
return http.StatusInternalServerError, err
|
return http.StatusInternalServerError, err
|
||||||
|
|
|
@ -0,0 +1,216 @@
|
||||||
|
# Configuration Help
|
||||||
|
|
||||||
|
This document covers the available configuration options, their defaults, and how they affect the functionality of filebrowser.
|
||||||
|
|
||||||
|
## All possible configurations
|
||||||
|
|
||||||
|
Here is an expanded config file which includes all possible configurations:
|
||||||
|
|
||||||
|
```
|
||||||
|
server:
|
||||||
|
indexingInterval: 5
|
||||||
|
numImageProcessors: 4
|
||||||
|
socket: ""
|
||||||
|
tlsKey: ""
|
||||||
|
tlsCert: ""
|
||||||
|
enableThumbnails: false
|
||||||
|
resizePreview: true
|
||||||
|
typeDetectionByHeader: true
|
||||||
|
port: 8080
|
||||||
|
baseURL: "/"
|
||||||
|
address: ""
|
||||||
|
log: "stdout"
|
||||||
|
database: "/database/database.db"
|
||||||
|
root: "/srv"
|
||||||
|
auth:
|
||||||
|
recaptcha:
|
||||||
|
host: ""
|
||||||
|
key: ""
|
||||||
|
secret: ""
|
||||||
|
header: ""
|
||||||
|
method: json
|
||||||
|
command: ""
|
||||||
|
signup: false
|
||||||
|
shell: ""
|
||||||
|
frontend:
|
||||||
|
name: ""
|
||||||
|
disableExternal: false
|
||||||
|
disableUsedPercentage: true
|
||||||
|
files: ""
|
||||||
|
theme: ""
|
||||||
|
color: ""
|
||||||
|
userDefaults:
|
||||||
|
scope: ""
|
||||||
|
locale: ""
|
||||||
|
viewMode: ""
|
||||||
|
singleClick: true
|
||||||
|
sorting:
|
||||||
|
by: ""
|
||||||
|
asc: true
|
||||||
|
permissions:
|
||||||
|
admin: true
|
||||||
|
execute: true
|
||||||
|
create: true
|
||||||
|
rename: true
|
||||||
|
modify: true
|
||||||
|
delete: true
|
||||||
|
share: true
|
||||||
|
download: true
|
||||||
|
commands: []
|
||||||
|
hideDotfiles: false
|
||||||
|
dateFormat: false
|
||||||
|
```
|
||||||
|
|
||||||
|
Here are the defaults if nothing is set:
|
||||||
|
|
||||||
|
```
|
||||||
|
Signup: true
|
||||||
|
AdminUsername: admin
|
||||||
|
AdminPassword: admin
|
||||||
|
Server:
|
||||||
|
EnableThumbnails: true
|
||||||
|
EnableExec: false
|
||||||
|
IndexingInterval: 5
|
||||||
|
Port: 8080
|
||||||
|
NumImageProcessors: 4
|
||||||
|
BaseURL: ""
|
||||||
|
Database: database.db
|
||||||
|
Log: stdout
|
||||||
|
Root: /srv
|
||||||
|
Auth:
|
||||||
|
Method: password
|
||||||
|
Recaptcha:
|
||||||
|
Host: ""
|
||||||
|
UserDefaults:
|
||||||
|
Scope: "."
|
||||||
|
LockPassword: false
|
||||||
|
HideDotfiles: true
|
||||||
|
Permissions:
|
||||||
|
Create: true
|
||||||
|
Rename: true
|
||||||
|
Modify: true
|
||||||
|
Delete: true
|
||||||
|
Share: true
|
||||||
|
Download: true
|
||||||
|
```
|
||||||
|
|
||||||
|
## About each configuration
|
||||||
|
|
||||||
|
# Configuration Settings Documentation
|
||||||
|
|
||||||
|
## About each configuration
|
||||||
|
|
||||||
|
- `Signup`: This boolean value indicates whether user signup is enabled.
|
||||||
|
|
||||||
|
- `AdminUsername`: This is the username of the admin user.
|
||||||
|
|
||||||
|
- `AdminPassword`: This is the password of the admin user.
|
||||||
|
|
||||||
|
### Server configuration settings
|
||||||
|
|
||||||
|
- `indexingInterval`: This is the time in minutes the system waits before checking for filesystem changes (used in search only).
|
||||||
|
|
||||||
|
- `numImageProcessors`: This is the number of image processors available.
|
||||||
|
|
||||||
|
- `socket`: This is the socket configuration.
|
||||||
|
|
||||||
|
- `tlsKey`: This is the TLS key configuration.
|
||||||
|
|
||||||
|
- `tlsCert`: This is the TLS certificate configuration.
|
||||||
|
|
||||||
|
- `enableThumbnails`: This boolean value determines whether thumbnails are enabled.
|
||||||
|
|
||||||
|
- `resizePreview`: This boolean value determines whether preview resizing is enabled.
|
||||||
|
|
||||||
|
- `typeDetectionByHeader`: This boolean value determines whether type detection is based on headers.
|
||||||
|
|
||||||
|
- `port`: This is the port number on which the server is running.
|
||||||
|
|
||||||
|
- `baseURL`: This is the base URL for the server.
|
||||||
|
|
||||||
|
- `address`: This is the server address configuration.
|
||||||
|
|
||||||
|
- `log`: This specifies the log destination (e.g., "stdout" for standard output).
|
||||||
|
|
||||||
|
- `database`: This is the database file path + filename that will be created if it does not already exist. If it exists, it will use the existing file.
|
||||||
|
|
||||||
|
- `root`: This is the root directory path.
|
||||||
|
|
||||||
|
### Auth configuration settings
|
||||||
|
|
||||||
|
- `recaptcha`:
|
||||||
|
|
||||||
|
- `host`: This is the host for reCAPTCHA.
|
||||||
|
|
||||||
|
- `key`: This is the reCAPTCHA key.
|
||||||
|
|
||||||
|
- `secret`: This is the reCAPTCHA secret.
|
||||||
|
|
||||||
|
- `header`: This is the authentication header.
|
||||||
|
|
||||||
|
- `method`: This is the authentication method used (e.g., "json"). Possible values:
|
||||||
|
- password - username and password
|
||||||
|
- hook - hook authentication
|
||||||
|
- proxy - proxy authentication
|
||||||
|
- oath - oath authentication
|
||||||
|
|
||||||
|
- `command`: This is the authentication command.
|
||||||
|
|
||||||
|
- `signup`: This boolean value indicates whether user signup is enabled.
|
||||||
|
|
||||||
|
- `shell`: This is the shell configuration.
|
||||||
|
|
||||||
|
### Frontend configuration settings
|
||||||
|
|
||||||
|
- `name`: This is the name of the frontend.
|
||||||
|
|
||||||
|
- `disableExternal`: This boolean value determines whether external access is disabled.
|
||||||
|
|
||||||
|
- `disableUsedPercentage`: This boolean value determines whether used percentage is disabled.
|
||||||
|
|
||||||
|
- `files`: This is the files configuration.
|
||||||
|
|
||||||
|
- `theme`: This is the theme configuration.
|
||||||
|
|
||||||
|
- `color`: This is the color configuration.
|
||||||
|
|
||||||
|
### UserDefaults configuration settings
|
||||||
|
|
||||||
|
- `scope`: This is a scope of the permissions, "." or "./" means all directories, "./downloads" would mean only the downloads folder.
|
||||||
|
|
||||||
|
- `locale`: This is the locale configuration.
|
||||||
|
|
||||||
|
- `viewMode`: This is the view mode configuration.
|
||||||
|
|
||||||
|
- `singleClick`: This boolean value determines whether single-click is enabled.
|
||||||
|
|
||||||
|
- `sorting`:
|
||||||
|
|
||||||
|
- `by`: This is the sorting method used (e.g., "asc").
|
||||||
|
|
||||||
|
- `asc`: This boolean value determines the sorting order.
|
||||||
|
|
||||||
|
- `permissions`:
|
||||||
|
|
||||||
|
- `admin`: This boolean value determines whether admin permissions are granted.
|
||||||
|
|
||||||
|
- `execute`: This boolean value determines whether execute permissions are granted.
|
||||||
|
|
||||||
|
- `create`: This boolean value determines whether create permissions are granted.
|
||||||
|
|
||||||
|
- `rename`: This boolean value determines whether rename permissions are granted.
|
||||||
|
|
||||||
|
- `modify`: This boolean value determines whether modify permissions are granted.
|
||||||
|
|
||||||
|
- `delete`: This boolean value determines whether delete permissions are granted.
|
||||||
|
|
||||||
|
- `share`: This boolean value determines whether share permissions are granted.
|
||||||
|
|
||||||
|
- `download`: This boolean value determines whether download permissions are granted.
|
||||||
|
|
||||||
|
- `commands`: This is a list of commands.
|
||||||
|
|
||||||
|
- `hideDotfiles`: This boolean value determines whether dotfiles are hidden.
|
||||||
|
|
||||||
|
- `dateFormat`: This boolean value determines whether date formatting is enabled.
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"name": "filebrowser-frontend",
|
"name": "filebrowser-frontend",
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ace-builds": "^1.4.7",
|
"ace-builds": "^1.24.2",
|
||||||
"clipboard": "^2.0.4",
|
"clipboard": "^2.0.4",
|
||||||
"css-vars-ponyfill": "^2.4.3",
|
"css-vars-ponyfill": "^2.4.3",
|
||||||
"file-loader": "^6.2.0",
|
"file-loader": "^6.2.0",
|
||||||
|
@ -53,12 +53,12 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
"version": "7.22.10",
|
"version": "7.22.13",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz",
|
||||||
"integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==",
|
"integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/highlight": "^7.22.10",
|
"@babel/highlight": "^7.22.13",
|
||||||
"chalk": "^2.4.2"
|
"chalk": "^2.4.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -137,13 +137,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-compilation-targets": {
|
"node_modules/@babel/helper-compilation-targets": {
|
||||||
"version": "7.22.10",
|
"version": "7.22.15",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
|
||||||
"integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==",
|
"integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/compat-data": "^7.22.9",
|
"@babel/compat-data": "^7.22.9",
|
||||||
"@babel/helper-validator-option": "^7.22.5",
|
"@babel/helper-validator-option": "^7.22.15",
|
||||||
"browserslist": "^4.21.9",
|
"browserslist": "^4.21.9",
|
||||||
"lru-cache": "^5.1.1",
|
"lru-cache": "^5.1.1",
|
||||||
"semver": "^6.3.1"
|
"semver": "^6.3.1"
|
||||||
|
@ -153,27 +153,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-validator-identifier": {
|
"node_modules/@babel/helper-validator-identifier": {
|
||||||
"version": "7.22.5",
|
"version": "7.22.15",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz",
|
||||||
"integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
|
"integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/helper-validator-option": {
|
"node_modules/@babel/helper-validator-option": {
|
||||||
"version": "7.22.5",
|
"version": "7.22.15",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
|
||||||
"integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==",
|
"integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/highlight": {
|
"node_modules/@babel/highlight": {
|
||||||
"version": "7.22.10",
|
"version": "7.22.13",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.13.tgz",
|
||||||
"integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==",
|
"integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/helper-validator-identifier": "^7.22.5",
|
"@babel/helper-validator-identifier": "^7.22.5",
|
||||||
|
@ -247,9 +247,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@babel/parser": {
|
"node_modules/@babel/parser": {
|
||||||
"version": "7.22.10",
|
"version": "7.22.16",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz",
|
||||||
"integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==",
|
"integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==",
|
||||||
"bin": {
|
"bin": {
|
||||||
"parser": "bin/babel-parser.js"
|
"parser": "bin/babel-parser.js"
|
||||||
},
|
},
|
||||||
|
@ -387,9 +387,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@polka/url": {
|
"node_modules/@polka/url": {
|
||||||
"version": "1.0.0-next.21",
|
"version": "1.0.0-next.23",
|
||||||
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
|
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz",
|
||||||
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
|
"integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@sideway/address": {
|
"node_modules/@sideway/address": {
|
||||||
|
@ -466,18 +466,18 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/connect": {
|
"node_modules/@types/connect": {
|
||||||
"version": "3.4.35",
|
"version": "3.4.36",
|
||||||
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
|
"resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.36.tgz",
|
||||||
"integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
|
"integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/connect-history-api-fallback": {
|
"node_modules/@types/connect-history-api-fallback": {
|
||||||
"version": "1.5.0",
|
"version": "1.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz",
|
||||||
"integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==",
|
"integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/express-serve-static-core": "*",
|
"@types/express-serve-static-core": "*",
|
||||||
|
@ -520,9 +520,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/express-serve-static-core": {
|
"node_modules/@types/express-serve-static-core": {
|
||||||
"version": "4.17.35",
|
"version": "4.17.36",
|
||||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz",
|
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz",
|
||||||
"integrity": "sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==",
|
"integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/node": "*",
|
"@types/node": "*",
|
||||||
|
@ -570,9 +570,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "20.5.0",
|
"version": "20.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz",
|
||||||
"integrity": "sha512-Mgq7eCtoTjT89FqNoTzzXg2XvCi5VMhRV6+I2aYanc6kQCBImeNaAYRs/DyoVqk1YEUJK5gN9VO7HRIdz4Wo3Q=="
|
"integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg=="
|
||||||
},
|
},
|
||||||
"node_modules/@types/normalize-package-data": {
|
"node_modules/@types/normalize-package-data": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
|
@ -587,9 +587,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/qs": {
|
"node_modules/@types/qs": {
|
||||||
"version": "6.9.7",
|
"version": "6.9.8",
|
||||||
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
|
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.8.tgz",
|
||||||
"integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
|
"integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/range-parser": {
|
"node_modules/@types/range-parser": {
|
||||||
|
@ -923,9 +923,9 @@
|
||||||
},
|
},
|
||||||
"node_modules/@vue/vue-loader-v15": {
|
"node_modules/@vue/vue-loader-v15": {
|
||||||
"name": "vue-loader",
|
"name": "vue-loader",
|
||||||
"version": "15.10.1",
|
"version": "15.10.2",
|
||||||
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.1.tgz",
|
"resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz",
|
||||||
"integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
|
"integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@vue/component-compiler-utils": "^3.1.0",
|
"@vue/component-compiler-utils": "^3.1.0",
|
||||||
|
@ -942,6 +942,9 @@
|
||||||
"cache-loader": {
|
"cache-loader": {
|
||||||
"optional": true
|
"optional": true
|
||||||
},
|
},
|
||||||
|
"prettier": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"vue-template-compiler": {
|
"vue-template-compiler": {
|
||||||
"optional": true
|
"optional": true
|
||||||
}
|
}
|
||||||
|
@ -1114,9 +1117,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ace-builds": {
|
"node_modules/ace-builds": {
|
||||||
"version": "1.24.1",
|
"version": "1.24.2",
|
||||||
"resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.24.1.tgz",
|
"resolved": "https://registry.npmjs.org/ace-builds/-/ace-builds-1.24.2.tgz",
|
||||||
"integrity": "sha512-TLcxMxiTRX5Eq9bBVSd/bTJlanCBULiv/IULLohJDDaCAfcpZKJBVSd4OWfN/j2c2jCLc+jhpNWGELiJZw3wPw=="
|
"integrity": "sha512-zjvJiEw05BADxPMq5gN/Vgc9FgyiiDHpdy676Af1nJk8DF4ipgf0cNmV3wy8JHeQ6vezypEZV6pHQu9avO+WtQ=="
|
||||||
},
|
},
|
||||||
"node_modules/acorn": {
|
"node_modules/acorn": {
|
||||||
"version": "8.10.0",
|
"version": "8.10.0",
|
||||||
|
@ -1621,9 +1624,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001521",
|
"version": "1.0.30001532",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001521.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz",
|
||||||
"integrity": "sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==",
|
"integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
|
@ -1839,6 +1842,18 @@
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/clone-deep/node_modules/is-plain-object": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
|
||||||
|
"dev": true,
|
||||||
|
"dependencies": {
|
||||||
|
"isobject": "^3.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/color-convert": {
|
"node_modules/color-convert": {
|
||||||
"version": "2.0.1",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||||
|
@ -2629,9 +2644,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/dns-packet": {
|
"node_modules/dns-packet": {
|
||||||
"version": "5.6.0",
|
"version": "5.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz",
|
||||||
"integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==",
|
"integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@leichtgewicht/ip-codec": "^2.0.1"
|
"@leichtgewicht/ip-codec": "^2.0.1"
|
||||||
|
@ -2751,9 +2766,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/electron-to-chromium": {
|
"node_modules/electron-to-chromium": {
|
||||||
"version": "1.4.495",
|
"version": "1.4.513",
|
||||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.495.tgz",
|
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz",
|
||||||
"integrity": "sha512-mwknuemBZnoOCths4GtpU/SDuVMp3uQHKa2UNJT9/aVD6WVRjGpXOxRGX7lm6ILIenTdGXPSTCTDaWos5tEU8Q=="
|
"integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw=="
|
||||||
},
|
},
|
||||||
"node_modules/emoji-regex": {
|
"node_modules/emoji-regex": {
|
||||||
"version": "8.0.0",
|
"version": "8.0.0",
|
||||||
|
@ -3253,16 +3268,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fraction.js": {
|
"node_modules/fraction.js": {
|
||||||
"version": "4.2.0",
|
"version": "4.3.6",
|
||||||
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz",
|
||||||
"integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
|
"integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "*"
|
"node": "*"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "patreon",
|
"type": "patreon",
|
||||||
"url": "https://www.patreon.com/infusion"
|
"url": "https://github.com/sponsors/rawify"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fresh": {
|
"node_modules/fresh": {
|
||||||
|
@ -3302,9 +3317,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/fsevents": {
|
"node_modules/fsevents": {
|
||||||
"version": "2.3.2",
|
"version": "2.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
|
||||||
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
|
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"optional": true,
|
"optional": true,
|
||||||
|
@ -3932,13 +3947,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-plain-object": {
|
"node_modules/is-plain-object": {
|
||||||
"version": "2.0.4",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
|
||||||
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
|
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
|
||||||
"isobject": "^3.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
|
@ -4031,9 +4043,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/joi": {
|
"node_modules/joi": {
|
||||||
"version": "17.9.2",
|
"version": "17.10.1",
|
||||||
"resolved": "https://registry.npmjs.org/joi/-/joi-17.9.2.tgz",
|
"resolved": "https://registry.npmjs.org/joi/-/joi-17.10.1.tgz",
|
||||||
"integrity": "sha512-Itk/r+V4Dx0V3c7RLFdRh12IOjySm2/WGPMubBT92cQvRfYZhPM2W0hZlctjj72iES8jsRCwp7S/cRmWBnJ4nw==",
|
"integrity": "sha512-vIiDxQKmRidUVp8KngT8MZSOcmRVm2zV7jbMjNYWuHcJWI0bUck3nRTGQjhpPlQenIQIBC5Vp9AhcnHbWQqafw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@hapi/hoek": "^9.0.0",
|
"@hapi/hoek": "^9.0.0",
|
||||||
|
@ -4201,12 +4213,36 @@
|
||||||
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
|
||||||
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
|
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.debounce": {
|
||||||
|
"version": "4.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||||
|
"integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/lodash.defaultsdeep": {
|
"node_modules/lodash.defaultsdeep": {
|
||||||
"version": "4.6.1",
|
"version": "4.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
|
||||||
"integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
|
"integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.escape": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/lodash.flatten": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
|
||||||
|
"integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"node_modules/lodash.invokemap": {
|
||||||
|
"version": "4.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz",
|
||||||
|
"integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/lodash.mapvalues": {
|
"node_modules/lodash.mapvalues": {
|
||||||
"version": "4.6.0",
|
"version": "4.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
|
||||||
|
@ -4219,6 +4255,12 @@
|
||||||
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
|
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.pullall": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/lodash.throttle": {
|
"node_modules/lodash.throttle": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
|
||||||
|
@ -4230,6 +4272,12 @@
|
||||||
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
|
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/lodash.uniqby": {
|
||||||
|
"version": "4.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz",
|
||||||
|
"integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"node_modules/log-symbols": {
|
"node_modules/log-symbols": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
|
||||||
|
@ -4397,9 +4445,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/material-icons": {
|
"node_modules/material-icons": {
|
||||||
"version": "1.13.9",
|
"version": "1.13.11",
|
||||||
"resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.9.tgz",
|
"resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.13.11.tgz",
|
||||||
"integrity": "sha512-dwuf2C8LR07FcrjRDx0vWnDEcHiDuamXOmtAck8bdONUv5Fi6wR/ubQwPfG1NbcqgPg+y0fHN8Unj5DO+5fV4w=="
|
"integrity": "sha512-kp2oAdaqo/Zp6hpTZW01rOgDPWmxBUszSdDzkRm1idCjjNvdUMnqu8qu58cll6CObo+o0cydOiPLdoSugLm+mQ=="
|
||||||
},
|
},
|
||||||
"node_modules/mdn-data": {
|
"node_modules/mdn-data": {
|
||||||
"version": "2.0.14",
|
"version": "2.0.14",
|
||||||
|
@ -4696,9 +4744,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-fetch": {
|
"node_modules/node-fetch": {
|
||||||
"version": "2.6.12",
|
"version": "2.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz",
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
|
||||||
"integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==",
|
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"whatwg-url": "^5.0.0"
|
"whatwg-url": "^5.0.0"
|
||||||
|
@ -5181,9 +5229,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.4.28",
|
"version": "8.4.29",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
|
||||||
"integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==",
|
"integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
|
@ -6497,14 +6545,14 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/sirv": {
|
"node_modules/sirv": {
|
||||||
"version": "1.0.19",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz",
|
"resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz",
|
||||||
"integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==",
|
"integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@polka/url": "^1.0.0-next.20",
|
"@polka/url": "^1.0.0-next.20",
|
||||||
"mrmime": "^1.0.0",
|
"mrmime": "^1.0.0",
|
||||||
"totalist": "^1.0.0"
|
"totalist": "^3.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 10"
|
"node": ">= 10"
|
||||||
|
@ -6783,9 +6831,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/terser": {
|
"node_modules/terser": {
|
||||||
"version": "5.19.2",
|
"version": "5.19.4",
|
||||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz",
|
"resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz",
|
||||||
"integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==",
|
"integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/source-map": "^0.3.3",
|
"@jridgewell/source-map": "^0.3.3",
|
||||||
"acorn": "^8.8.2",
|
"acorn": "^8.8.2",
|
||||||
|
@ -7034,9 +7082,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/totalist": {
|
"node_modules/totalist": {
|
||||||
"version": "1.1.0",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
|
||||||
"integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==",
|
"integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
|
@ -7049,9 +7097,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/tslib": {
|
"node_modules/tslib": {
|
||||||
"version": "2.6.1",
|
"version": "2.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
|
||||||
"integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==",
|
"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/type-fest": {
|
"node_modules/type-fest": {
|
||||||
|
@ -7401,20 +7449,27 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack-bundle-analyzer": {
|
"node_modules/webpack-bundle-analyzer": {
|
||||||
"version": "4.9.0",
|
"version": "4.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz",
|
||||||
"integrity": "sha512-+bXGmO1LyiNx0i9enBu3H8mv42sj/BJWhZNFwjz92tVnBa9J3JMGo2an2IXlEleoDOPn/Hofl5hr/xCpObUDtw==",
|
"integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discoveryjs/json-ext": "0.5.7",
|
"@discoveryjs/json-ext": "0.5.7",
|
||||||
"acorn": "^8.0.4",
|
"acorn": "^8.0.4",
|
||||||
"acorn-walk": "^8.0.0",
|
"acorn-walk": "^8.0.0",
|
||||||
"chalk": "^4.1.0",
|
|
||||||
"commander": "^7.2.0",
|
"commander": "^7.2.0",
|
||||||
|
"escape-string-regexp": "^4.0.0",
|
||||||
"gzip-size": "^6.0.0",
|
"gzip-size": "^6.0.0",
|
||||||
"lodash": "^4.17.20",
|
"is-plain-object": "^5.0.0",
|
||||||
|
"lodash.debounce": "^4.0.8",
|
||||||
|
"lodash.escape": "^4.0.1",
|
||||||
|
"lodash.flatten": "^4.4.0",
|
||||||
|
"lodash.invokemap": "^4.6.0",
|
||||||
|
"lodash.pullall": "^4.2.0",
|
||||||
|
"lodash.uniqby": "^4.7.0",
|
||||||
"opener": "^1.5.2",
|
"opener": "^1.5.2",
|
||||||
"sirv": "^1.0.7",
|
"picocolors": "^1.0.0",
|
||||||
|
"sirv": "^2.0.3",
|
||||||
"ws": "^7.3.1"
|
"ws": "^7.3.1"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
|
@ -7424,22 +7479,6 @@
|
||||||
"node": ">= 10.13.0"
|
"node": ">= 10.13.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack-bundle-analyzer/node_modules/chalk": {
|
|
||||||
"version": "4.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
|
||||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
|
||||||
"dev": true,
|
|
||||||
"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/webpack-bundle-analyzer/node_modules/commander": {
|
"node_modules/webpack-bundle-analyzer/node_modules/commander": {
|
||||||
"version": "7.2.0",
|
"version": "7.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
|
||||||
|
@ -7449,6 +7488,18 @@
|
||||||
"node": ">= 10"
|
"node": ">= 10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/webpack-bundle-analyzer/node_modules/escape-string-regexp": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
|
||||||
|
"dev": true,
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/webpack-chain": {
|
"node_modules/webpack-chain": {
|
||||||
"version": "6.5.1",
|
"version": "6.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/webpack-chain/-/webpack-chain-6.5.1.tgz",
|
||||||
|
@ -7545,9 +7596,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/webpack-dev-server/node_modules/ws": {
|
"node_modules/webpack-dev-server/node_modules/ws": {
|
||||||
"version": "8.13.0",
|
"version": "8.14.1",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz",
|
||||||
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
|
"integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
|
@ -7661,9 +7712,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/whatwg-fetch": {
|
"node_modules/whatwg-fetch": {
|
||||||
"version": "3.6.17",
|
"version": "3.6.18",
|
||||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.17.tgz",
|
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.18.tgz",
|
||||||
"integrity": "sha512-c4ghIvG6th0eudYwKZY5keb81wtFz9/WeAHAoy8+r18kcWlitUIrmGFQ2rWEl4UCKUilD3zCLHOIPheHx5ypRQ=="
|
"integrity": "sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q=="
|
||||||
},
|
},
|
||||||
"node_modules/whatwg-url": {
|
"node_modules/whatwg-url": {
|
||||||
"version": "5.0.0",
|
"version": "5.0.0",
|
||||||
|
|
|
@ -12,16 +12,16 @@
|
||||||
"format": "prettier --write ."
|
"format": "prettier --write ."
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ace-builds": "^1.4.7",
|
"ace-builds": "^1.24.2",
|
||||||
"clipboard": "^2.0.4",
|
"clipboard": "^2.0.4",
|
||||||
"normalize.css": "^8.0.1",
|
|
||||||
"file-loader": "^6.2.0",
|
|
||||||
"css-vars-ponyfill": "^2.4.3",
|
"css-vars-ponyfill": "^2.4.3",
|
||||||
|
"file-loader": "^6.2.0",
|
||||||
"js-base64": "^2.5.1",
|
"js-base64": "^2.5.1",
|
||||||
"lodash.clonedeep": "^4.5.0",
|
"lodash.clonedeep": "^4.5.0",
|
||||||
"lodash.throttle": "^4.1.1",
|
"lodash.throttle": "^4.1.1",
|
||||||
"material-icons": "^1.10.5",
|
"material-icons": "^1.10.5",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
|
"normalize.css": "^8.0.1",
|
||||||
"noty": "^3.2.0-beta",
|
"noty": "^3.2.0-beta",
|
||||||
"pretty-bytes": "^6.0.0",
|
"pretty-bytes": "^6.0.0",
|
||||||
"qrcode.vue": "^1.7.0",
|
"qrcode.vue": "^1.7.0",
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
favicon-256x256.png
|
|
@ -0,0 +1 @@
|
||||||
|
favicon-256x256.png
|
|
@ -0,0 +1 @@
|
||||||
|
favicon-256x256.png
|
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
Before Width: | Height: | Size: 46 KiB |
Binary file not shown.
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 66 KiB |
Binary file not shown.
Before Width: | Height: | Size: 46 KiB |
|
@ -0,0 +1 @@
|
||||||
|
favicon-256x256.png
|
|
@ -11,8 +11,7 @@
|
||||||
|
|
||||||
<title>[{[ if .Name -]}][{[ .Name ]}][{[ else ]}]File Browser[{[ end ]}]</title>
|
<title>[{[ if .Name -]}][{[ .Name ]}][{[ else ]}]File Browser[{[ end ]}]</title>
|
||||||
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="[{[ .StaticURL ]}]/img/icons/favicon-32x32.png">
|
<link rel="icon" type="image/png" sizes="256x256" href="[{[ .StaticURL ]}]/img/icons/favicon-256x256.png">
|
||||||
<link rel="icon" type="image/png" sizes="16x16" href="[{[ .StaticURL ]}]/img/icons/favicon-16x16.png">
|
|
||||||
|
|
||||||
<!-- Add to home screen for Android and modern mobile browsers -->
|
<!-- Add to home screen for Android and modern mobile browsers -->
|
||||||
<link rel="manifest" id="manifestPlaceholder" crossorigin="use-credentials">
|
<link rel="manifest" id="manifestPlaceholder" crossorigin="use-credentials">
|
||||||
|
@ -38,12 +37,7 @@
|
||||||
"short_name": window.FileBrowser.Name || 'File Browser',
|
"short_name": window.FileBrowser.Name || 'File Browser',
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": fullStaticURL + "/img/icons/android-chrome-192x192.png",
|
"src": fullStaticURL + "/img/icons/android-chrome-256x256.png",
|
||||||
"sizes": "192x192",
|
|
||||||
"type": "image/png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": fullStaticURL + "/img/icons/android-chrome-512x512.png",
|
|
||||||
"sizes": "512x512",
|
"sizes": "512x512",
|
||||||
"type": "image/png"
|
"type": "image/png"
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,14 +25,9 @@
|
||||||
<script>
|
<script>
|
||||||
import { mapState } from "vuex";
|
import { mapState } from "vuex";
|
||||||
import { files as api } from "@/api";
|
import { files as api } from "@/api";
|
||||||
import { theme } from "@/utils/constants";
|
|
||||||
import buttons from "@/utils/buttons";
|
import buttons from "@/utils/buttons";
|
||||||
import url from "@/utils/url";
|
import url from "@/utils/url";
|
||||||
|
|
||||||
import ace from "ace-builds/src-min-noconflict/ace.js";
|
|
||||||
import modelist from "ace-builds/src-min-noconflict/ext-modelist.js";
|
|
||||||
import "ace-builds/webpack-resolver";
|
|
||||||
|
|
||||||
import HeaderBar from "@/components/header/HeaderBar";
|
import HeaderBar from "@/components/header/HeaderBar";
|
||||||
import Action from "@/components/header/Action";
|
import Action from "@/components/header/Action";
|
||||||
import Breadcrumbs from "@/components/Breadcrumbs";
|
import Breadcrumbs from "@/components/Breadcrumbs";
|
||||||
|
@ -86,22 +81,6 @@ export default {
|
||||||
window.removeEventListener("keydown", this.keyEvent);
|
window.removeEventListener("keydown", this.keyEvent);
|
||||||
this.editor.destroy();
|
this.editor.destroy();
|
||||||
},
|
},
|
||||||
mounted: function () {
|
|
||||||
const fileContent = this.req.content || "";
|
|
||||||
|
|
||||||
this.editor = ace.edit("editor", {
|
|
||||||
value: fileContent,
|
|
||||||
showPrintMargin: false,
|
|
||||||
readOnly: this.req.type === "textImmutable",
|
|
||||||
theme: "ace/theme/chrome",
|
|
||||||
mode: modelist.getModeForPath(this.req.name).mode,
|
|
||||||
wrap: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
if (theme == "dark") {
|
|
||||||
this.editor.setTheme("ace/theme/twilight");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
methods: {
|
||||||
back() {
|
back() {
|
||||||
let uri = url.removeLastDir(this.$route.path) + "/";
|
let uri = url.removeLastDir(this.$route.path) + "/";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div id="editor-container">
|
<div id="editor-container">
|
||||||
<form id="editor"></form>
|
<div id="editor"></div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -10,27 +10,16 @@ import { files as api } from "@/api";
|
||||||
import { theme } from "@/utils/constants";
|
import { theme } from "@/utils/constants";
|
||||||
import buttons from "@/utils/buttons";
|
import buttons from "@/utils/buttons";
|
||||||
import url from "@/utils/url";
|
import url from "@/utils/url";
|
||||||
|
|
||||||
import ace from "ace-builds/src-min-noconflict/ace.js";
|
import ace from "ace-builds/src-min-noconflict/ace.js";
|
||||||
import modelist from "ace-builds/src-min-noconflict/ext-modelist.js";
|
import modelist from "ace-builds/src-min-noconflict/ext-modelist.js";
|
||||||
import "ace-builds/webpack-resolver";
|
|
||||||
|
|
||||||
import HeaderBar from "@/components/header/HeaderBar";
|
|
||||||
import Action from "@/components/header/Action";
|
|
||||||
import Breadcrumbs from "@/components/Breadcrumbs";
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "editor",
|
name: "editor",
|
||||||
components: {
|
|
||||||
HeaderBar,
|
|
||||||
Action,
|
|
||||||
Breadcrumbs,
|
|
||||||
},
|
|
||||||
data: function () {
|
data: function () {
|
||||||
return {};
|
return {};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(["req", "user","currentView"]),
|
...mapState(["req", "user"]),
|
||||||
breadcrumbs() {
|
breadcrumbs() {
|
||||||
let parts = this.$route.path.split("/");
|
let parts = this.$route.path.split("/");
|
||||||
|
|
||||||
|
@ -75,14 +64,9 @@ export default {
|
||||||
value: fileContent,
|
value: fileContent,
|
||||||
showPrintMargin: false,
|
showPrintMargin: false,
|
||||||
readOnly: this.req.type === "textImmutable",
|
readOnly: this.req.type === "textImmutable",
|
||||||
theme: "ace/theme/chrome",
|
|
||||||
mode: modelist.getModeForPath(this.req.name).mode,
|
mode: modelist.getModeForPath(this.req.name).mode,
|
||||||
wrap: true,
|
wrap: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (theme == "dark") {
|
|
||||||
this.editor.setTheme("ace/theme/twilight");
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
back() {
|
back() {
|
||||||
|
|
|
@ -5,11 +5,17 @@ module.exports = {
|
||||||
publicPath: "[{[ .StaticURL ]}]",
|
publicPath: "[{[ .StaticURL ]}]",
|
||||||
parallel: true,
|
parallel: true,
|
||||||
configureWebpack: {
|
configureWebpack: {
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
// Add Ace Editor alias for importing it in your Vue components
|
||||||
|
ace: "ace-builds/src-min-noconflict",
|
||||||
|
},
|
||||||
|
extensions: ["*", ".js", ".vue", ".json"],
|
||||||
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new CompressionPlugin({
|
new CompressionPlugin({
|
||||||
include: /\.js$/,
|
include: /\.js$/,
|
||||||
deleteOriginalAssets: true,
|
deleteOriginalAssets: true,
|
||||||
threshold: 10240, // Only compress files larger than 10KB
|
|
||||||
minRatio: 0.8,
|
minRatio: 0.8,
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Planned Roadmap
|
||||||
|
|
||||||
|
Next release (0.2.1):
|
||||||
|
|
||||||
|
- Improve browsing directory performance by utilizing the index.
|
||||||
|
- Add editor themes back that were removed because of issues.
|
||||||
|
- Add "running config" which is editable in filebrowser settings to add rules, users, settings which would normally be done via commands.
|
||||||
|
- baseurl issue https://github.com/filebrowser/filebrowser/pull/2579
|
||||||
|
- https://github.com/filebrowser/filebrowser/issues/2526
|
||||||
|
- https://github.com/filebrowser/filebrowser/issues/2698
|
||||||
|
- https://github.com/filebrowser/filebrowser/pull/2667
|
||||||
|
- https://github.com/filebrowser/filebrowser/issues/2632
|
||||||
|
- https://github.com/filebrowser/filebrowser/issues/2619
|
||||||
|
- https://github.com/filebrowser/filebrowser/issues/2618
|
||||||
|
- https://github.com/filebrowser/filebrowser/issues/2607
|
||||||
|
|
||||||
|
|
||||||
|
Future releases (within 6 months):
|
||||||
|
|
||||||
|
- Allow multiple volumes to show up in the same filebrowser container. https://github.com/filebrowser/filebrowser/issues/2514
|
||||||
|
- enable/disable indexing for certain mounts
|
||||||
|
- Add tools to sidebar
|
||||||
|
- duplicate file detector.
|
||||||
|
- bulk rename https://github.com/filebrowser/filebrowser/issues/2473
|
||||||
|
- Add Job status to the sidebar - indexin status.
|
||||||
|
- Use vite instead of webpack
|
||||||
|
- upgrade to vue3
|
||||||
|
- support minio/s3 https://github.com/filebrowser/filebrowser/issues/2544
|
||||||
|
- https://github.com/filebrowser/filebrowser/issues/2537
|
Loading…
Reference in New Issue