MCPcopy Index your code
hub / github.com/dom111/webdav-js

github.com/dom111/webdav-js @2.4.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 2.4.0 ↗ · + Follow
462 symbols 1,425 edges 46 files 9 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

webdav-js

A simple way to administer a WebDAV filesystem from your browser.

The original aim for this project was to provide a bookmarklet for use when you want to administer a WebDAV server, without the need for using a third party application.

The application has since been rewritten to not rely on jQuery and use more modern methods and provide a single runtime file. Now that there's more separation between the interface code and the library code, I'd like to investigate using other frontend approaches to see which I prefer (and also to weigh up the differences between the currently available frameworks). There's still work to do around code separation and hopefully this will be something I can continue to work on (as time allows) I feel it's at least as stable as the previous version.

Features

  • Browse, upload, download, rename, delete entries and create directories.
  • File preview for image, video, audio, font, text, PDF files.
  • Basic keyboard navigation.
  • A (very) simple gallery browser for preview-able files.

Localisation

Currently, the library contains text translated to English, German and Portuguese. If you use this and would like it to be localised to your language please submit a PR including the translation (using en.json as a template) and adding the language in UI.js.

Tested in:

  • Chrome
  • Firefox
  • Edge

Implementations

Gitpod demo

Available here, wait for the Docker build to complete, and you will be able to interact with the Apache demo, make changes and contribute!

Open in Gitpod

Bookmarklet:

javascript:["https://cdn.jsdelivr.net/gh/dom111/webdav-js/assets/css/style-min.css","https://cdn.jsdelivr.net/gh/dom111/webdav-js/src/webdav-min.js"].forEach((function(e,s){/css$/.test(e)?((s=document.createElement("link")).href=e,s.rel="stylesheet"):(s=document.createElement("script")).src=e,document.head.appendChild(s)}));

or drag this link directly

Apache:

There is also an example for how you could set up Apache in the examples/ directory (one using a locally hosted version of the library, and one using a CDN).

Think you have another example implementation that would be good to showcase? Fork this repository and make a PR!

Test the library

Included in the package is a docker-compose.yml file that can spawn an Alpine Linux Apache WebDAV server that uses the example Apache configuration so you can see the library in action if you don't have a WebDAV server at your disposal.

To start it, run:

docker-compose up

and navigate to http://localhost:8080/.

Contributing

If you feel this can be improved (I'm certain it can!), please feel free to fork it and submit a PR.

Localisation would be a great start if you'd like to help!

To start making changes, ensure you install all the dependencies and build the application:

make build

After making changes, ensure you rebuild the application:

make build

Once your changes have compiled you can test using the Docker container.

Tests

To run the unit and functional tests:

make build
docker-compose up -d
make test

Extension points exported contracts — how you extend this code

DataProvider (Interface)
(no doc) [5 implementers]
src/components/Tree/DataProvider.ts
TreeOptions (Interface)
(no doc)
src/components/Tree/Tree.ts
WebDAVOptions (Interface)
(no doc)
src/components/Tree/WebDAV.ts

Core symbols most depended-on inside this repo

l
called by 188
src/webdav-min.js
E
called by 67
src/webdav-min.js
forEach
called by 66
src/webdav-min.js
x
called by 65
src/webdav-min.js
element
called by 59
src/webdav-min.js
query
called by 44
src/webdav-min.js
on
called by 40
src/webdav-min.js
emit
called by 34
src/webdav-min.js

Shape

Method 248
Function 168
Class 43
Interface 3

Languages

TypeScript100%

Modules by API surface

src/webdav-min.js247 symbols
src/components/Item.ts23 symbols
src/lib/Entry.ts22 symbols
src/components/Tree/Leaf.ts14 symbols
src/lib/State.ts13 symbols
src/lib/DAV.ts13 symbols
src/lib/HTTP.ts11 symbols
src/lib/HTTP/RequestFailure.ts9 symbols
src/lib/Collection.ts9 symbols
src/components/Tree/Tree.ts9 symbols
src/components/Tree/Node.ts8 symbols
src/components/Modal.ts8 symbols

For agents

$ claude mcp add webdav-js \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact