Skip to content

Commit ab24751

Browse files
Merge pull request #2 from solid-server/issue-1-v7-clean-room-rewrite
v7.0.0: Clean room rewrite — port .mjs to .js ES modules
2 parents 2caddca + b48b517 commit ab24751

723 files changed

Lines changed: 4047 additions & 55750 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 72 additions & 201 deletions
Original file line numberDiff line numberDiff line change
@@ -1,214 +1,85 @@
1-
# History
2-
## 6.0.0
3-
- CommonJs to ESM (.mjs)
4-
- support for mashlib >= 2.0.0
5-
- support solid-OIDC with WebID scope, es256, and rfc9702
1+
# Changelog
62

7-
## 6.0.0 Upgrade Notes
3+
## 7.0.0
84

9-
1.0 Automatically recreated
10-
- delete `.db/oidc/op/provider.json`
11-
- delete `config/templates/emails`
12-
If not recreated then copy from `default-emails`
13-
If there was some personalisation these need to be redone
5+
Clean room rewrite of node-solid-server.
146

15-
2.0 Manuel update the `index.html` in server root `data/<serverOrigin>/index.html`
16-
edit `common/js/index-buttons.js` to `index-buttons.mjs`
17-
18-
## 5.3.0
19-
- Support for webid-oidc with DPop tokens
7+
### Why
208

21-
## 5.3.0 Upgrade Notes
22-
You may have a `.db/oidc/op/provider.json` file that was generated by an older version
23-
of node-solid-server, which may still specify `"response_types_supported"` without listing
24-
`"id_token code"`. You can move this file out of the way and restart node-solid-server,
25-
it will be created again. See https://github.com/solid/node-solid-server/issues/1433 for
26-
more info.
9+
The v6 codebase had grown to ~7,400 lines of production code with 59 dependencies,
10+
much of it devoted to features (built-in OIDC provider, account management UI,
11+
email service, data browser) that are better handled by external tools.
12+
Version 7 strips the server back to the Solid protocol essentials.
2713

28-
## 5.0.0
14+
### What changed
2915

30-
- Node versions greater than 8 are supported.
31-
- Changes to vocabulary use:
32-
- `solid:inbox` is deprecated in favour of `ldp:inbox`.
33-
- `acl:defaultForNew` is deprecated in favour of `acl:default`.
34-
- Terms of Service may be added and enforced for new registrations,
35-
but is disabled by default.
36-
- DELETE operations on a resource now require that the user has write permissions on
37-
the file's container
38-
- Improved support for logout ensures users can use different
39-
identities.
40-
- The profile container is now public readable by default.
41-
- Access Control:
42-
- The Access Control List system has undergone extensive
43-
changes. Security has been tightened, and some unsafe practices that
44-
where web apps was authorized access in the past are now not
45-
permitted.
46-
- The browser-reported `Origin` header will now be checked by
47-
default, and the ACL system can be used to restrict access
48-
to applications for added security.
49-
- Users can add `trustedApp` entries to their profile using a new databrowser pane.
50-
You will see an 'A' icon added while you view a Person's profile URL
51-
with the data browser (might have to hit refresh in your browser and make sure you
52-
are viewing a WebId URL like https://localhost:8443/profile/card#me).
53-
- Logging is now verbose by default so the `-v` option has been
54-
removed and a `--quiet` option has been added to mute the log.
55-
- To be bug compliant with 4.x releases, if a rule for public readable
56-
root / does not exist, it will check in /index.html.acl (see issue #1063)
57-
- Command line options are now kebab-cased rather than camelCased,
58-
config options may be both.
59-
- Resource with no extension now have '$.ttl' appended in the filename (see upgrades notes below).
60-
- Many smaller fixes.
61-
62-
#### 5.0.0 Upgrade Notes
63-
64-
- As of v5.0.0, all Turtle files need an extension. (**Intervention needed when updating from < 5.0.0!**)
65-
- **How to upgrade?**
66-
1. Stop the server.
67-
2. Update node-solid-server to 5.0.0.
68-
3. Make a backup of your `data/` and `config/` folders.
69-
4. Invoke `solid migrate-legacy-resources -v`.
70-
This makes the files in your `data/` and `config/` folders
71-
automatically compatible with the new system.
72-
You only need to do this once.
73-
Different data folders can be migrated as well with the `-p` option:
74-
`solid migrate-legacy-resources -p my/custom/data/folder -v`
75-
5. You can now start the server again as usual.
76-
- **Why?**
77-
Before version 5.0.0, `https://pod.example/profile/card`
78-
would map to `file:///solid/profile/card`, with the _assumption_
79-
that it uses content-type `text/turtle`.
80-
Now, this URL will map to `file:///solid/profile/card$.ttl` instead,
81-
which makes the content-type automatically detectable.
82-
This fixes many of the old Content-Type-related bugs.
83-
_More information: https://www.w3.org/DesignIssues/HTTPFilenameMapping.html_
84-
85-
## 4.4.0
86-
87-
- Introduce a quota system. Delete the /settings/serverSide.ttl in the
88-
user's POD to disable, or edit to fit your resource constraints.
89-
90-
#### Changelog is incomplete for much of the 4.x series
91-
92-
## 4.1.0
93-
94-
- Add support for Group Access Control Lists.
95-
- Fix `Vary` header.
96-
- Improve the registration page.
97-
- Fix globbing.
98-
- Fix the use of allow handler.
99-
- Misc. cleanups and improvements.
100-
- Add .well-known folder and set up with public access.
16+
- **Port from `.mjs` to `.js`** with `"type": "module"` in package.json
17+
- **Dependencies cut from 59 to 8** — express, cors, rdflib, @solid/acl-check,
18+
mime-types, uuid, debug, commander
19+
- **Production code reduced from ~7,400 to ~1,200 lines** across 11 files
20+
- **56 integration tests** covering LDP, headers, content negotiation, PATCH, ACL
10121

102-
## 4.0.0
103-
- OIDC is now supported as authentication method in addition to WebID-TLS.
104-
- Both Node.js 6 and 8 are now supported.
105-
- The server now accepts N3 patches.
106-
- Responses now contain a WAC-Allow header, listing the access permissions
107-
for the current user and non-authenticated users.
108-
- The `authProxy` configuration parameter has been added,
109-
enabling back-end servers to serve authenticated content.
110-
It accepts an object of path/server pairs
111-
(such as `/my/path": "http://localhost:2345/app"`).
112-
The Solid server acts as a reverse proxy for these paths, forwarding requests
113-
to the back-end server along with the authenticated user (`User` header)
114-
and the host through which Solid is being accessed (`Forwarded` header).
115-
- The `acceptCertificateHeader` configuration parameter has been added.
116-
This allows WebID-TLS authentication behind a reverse proxy such as NGINX:
117-
the reverse proxy should be configured to pass the client certificate
118-
in a certain header, which is then read by a (non-public) Solid server.
119-
- Self-signed certificates are no longer trusted in production.
120-
To allow self-signed certificates (for testing purposes), use `bin/solid-test`,
121-
which sets `NODE_TLS_REJECT_UNAUTHORIZED=0` and `--no-reject-unauthorized`.
122-
- On POST requests, an extension will be appended to the file.
123-
- Server logging is now more concise.
124-
- Express server injection is now supported
125-
- The root route (e.g. `/`) now displays a public home page.
126-
- Several other bugfixes
127-
128-
#### 4.0.0 Upgrade Notes
129-
- The `proxy` configuration parameter has been deprecated and
130-
renamed to `corsProxy` to better distinguish it from `authProxy`.
131-
- The `idp` configuration parameter has been deprecated and
132-
renamed to `multiuser` to better identify its purpose.
133-
- Cross-domain cookie-based authentication has been removed for security reasons.
134-
We instead recommend https://github.com/solid/solid-auth-client.
135-
- Clients should not include an extension in the slug of POST requests
136-
(they never should have), as the server now adds an extension.
137-
138-
## 3.5.0
139-
140-
- Major refactoring of Account Creation classes (new account resources are now
141-
initialized from a customizable account directory template)
142-
- Disable crashing `verifyDelegator()` code in `allow()` handler
143-
- Add support for HTTP COPY of external resources
144-
- Fix URI encoding in file listing and decoding to get file names
145-
- Fix issue where requesting a different format (e.g. `text/turtle`) of a
146-
JSON-LD resource crashed the server
147-
148-
#### 3.5.0 Upgrade Notes
149-
150-
- New config parameter: `serverUri` - Solid server uri (with protocol,
151-
hostname and port), defaults to `https://localhost:8443`. In multi-user
152-
(`"idp": true`) mode, new account directories are now created based on this
153-
`serverUri` parameter. For example, if the `config.json` contains the entry
154-
`"serverUri": "https://example.com"`, a new account for `alice` will create
155-
a subdirectory `alice.example.com` in the directory specified by the `root`
156-
config parameter.
157-
- New account template system. On first server startup, the contents of the
158-
`default-account-template` source folder get copied to `config/account-template`.
159-
When a new account is created, a copy is made of that new account template
160-
directory for the user. Server operators can customize the contents of this
161-
new account template for their server installation.
162-
- Email template system. Similarly to the new account template, the Welcome
163-
email that gets sent out on new user registration is generated from the
164-
customizable local `config/email-templates/welcome.js` template file, which
165-
gets copied from `default-email-templates` source folder on first startup.
166-
167-
## 3.4.0
168-
169-
- Fix handling/url-encoding of container names
170-
- Allow video skip with Accept-Ranges
171-
- In a directory listing, add the media type class when we know it
172-
- Add the trailing slash on the URI of a folder listed within a folder
173-
174-
## 3.3.0
175-
176-
- Refactor acl checker to use solid-permissions lib
177-
- Various DataBrowser fixes, dataBrowserOption option to specify path of db file
178-
179-
## 3.2.0
180-
181-
- Refactor to use external solid-namespace library
182-
- Move debrack() to utils.js, remove unused vocab/rdf.js functions
183-
- Switch from node-mime to mime-types lib
184-
- Refactor acl.js to prep for external solid-permissions lib
185-
- Fix crash on PATCH request with no Content-Type
186-
187-
## 3.1.0
188-
189-
- Misc fixes and features (see commit log)
190-
- Implemented COPY verb
22+
### What's in
19123

192-
## 3.0.0
193-
- feat Discover WebID from root account https://github.com/solid/node-solid-server/pull/371
194-
- feat: Server capabilities https://github.com/solid/node-solid-server/pull/365
195-
- feat: pass app in createServer https://github.com/solid/node-solid-server/pull/357
196-
- breaking: Accounts API https://github.com/solid/node-solid-server/pull/339
24+
- Full LDP support (GET, HEAD, PUT, POST, DELETE, PATCH)
25+
- Web Access Control via `.acl` files with inheritance
26+
- Content negotiation (Turtle, JSON-LD, N-Triples, N3)
27+
- N3 Patch and SPARQL UPDATE
28+
- Container listings as RDF
29+
- CORS headers
30+
- Bearer token / WebID authentication
31+
- CLI: `solid start`
19732

198-
## 2.3.0
199-
- feat: added Capability discovery https://github.com/solid/node-solid-server/pull/347
33+
### What's been removed
20034

201-
## 2.2.0
202-
- feat: added `--auth` https://github.com/solid/node-solid-server/pull/346
35+
- Built-in OIDC identity provider
36+
- Account management / registration UI
37+
- Handlebars templates and views
38+
- Session cookies
39+
- Email service and password reset
40+
- Mashlib data browser
41+
- Multi-user / virtual host mode
42+
- WebSocket live updates
43+
- CORS proxy / auth proxy
44+
- Storage quotas
45+
- Docker support
46+
- `solid init` wizard
20347

204-
## 2.1.0
205-
- patch: Proxy https://github.com/solid/node-solid-server/pull/343 https://github.com/solid/node-solid-server/pull/342
206-
- feat: added Account Recovery
207-
- feat: added Token Service
208-
- feat: added ldp.graph
48+
### Upgrade notes
20949

210-
## 2.0.0
50+
v7 is a full rewrite. There is no migration path from v6. If you depend on
51+
features that were removed, continue using v6 or add them as middleware on
52+
top of v7.
53+
54+
---
55+
56+
## 6.0.0
57+
- CommonJS to ESM (.mjs)
58+
- Support for mashlib >= 2.0.0
59+
- Support Solid-OIDC with WebID scope, ES256, and RFC 9702
21160

212-
- feat: added Welcome Email
213-
- feat: added Email Service
214-
- other: `ldnode` turns into `solid-server`
61+
## 5.3.0
62+
- Support for WebID-OIDC with DPoP tokens
63+
64+
## 5.0.0
65+
- Node versions greater than 8 supported
66+
- Vocabulary changes (`solid:inbox``ldp:inbox`, `acl:defaultForNew``acl:default`)
67+
- Terms of Service support
68+
- Improved ACL security (origin checking, trusted apps)
69+
- Resources without extensions get `$.ttl` suffix
70+
- Migration script for legacy resources
71+
72+
## 4.0.0
73+
- OIDC authentication support
74+
- N3 patches
75+
- WAC-Allow header
76+
- Auth proxy
77+
- Express server injection
78+
79+
## 3.0.0
80+
- Accounts API
81+
- Server capabilities discovery
82+
83+
## 2.0.0
84+
- `ldnode` renamed to `solid-server`
85+
- Welcome email and email service

0 commit comments

Comments
 (0)