Compare commits

..

No commits in common. "main" and "v6.0.0-alpha.0" have entirely different histories.

1166 changed files with 24792 additions and 47780 deletions

View File

@ -3,7 +3,6 @@
"Adapter",
"AlgJwk",
"BaseActivityEmitter",
"BaseChannelType",
"BaseHttpError",
"BaseRouterHandler",
"BasicConditions",
@ -11,37 +10,28 @@
"ChangeMap",
"CredentialSet",
"Dict",
"EmptyObject",
"Error",
"EventEmitter",
"FetchDocumentLoader",
"GenericEventEmitter",
"HashMap",
"HttpErrorOptions",
"HttpResponse",
"IndexTypeCollection",
"IdentifierMap",
"IdentifierSetMultiMap",
"interactionPolicy.DefaultPolicy",
"NodeJS.Dict",
"NotificationChannelType",
"Omit",
"PermissionMap",
"Promise",
"Readable",
"Readonly",
"RegExp",
"Server",
"SetMultiMap",
"Shorthand",
"SubscriptionType",
"Template",
"TemplateEngine",
"Transform",
"TransformOptions",
"ValuePreferencesArg",
"VariableBindings",
"UnionHandler",
"VirtualObject",
"WinstonLogger",
"WrappedSetMultiMap",
"YargsOptions"

150
.eslintrc.js Normal file
View File

@ -0,0 +1,150 @@
/* eslint-disable @typescript-eslint/naming-convention */
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
parserOptions: {
tsconfigRootDir: __dirname,
project: [ './tsconfig.json', './test/tsconfig.json', './scripts/tsconfig.json' ],
},
// Ignoring js files (such as this one) since they seem to conflict with rules that require typing info
ignorePatterns: [ '*.js' ],
globals: {
AsyncIterable: 'readonly',
NodeJS: 'readonly',
RequestInit: 'readonly',
},
plugins: [
'tsdoc',
'import',
'unused-imports',
],
extends: [
'es/node',
'eslint:recommended',
'plugin:import/errors',
'plugin:import/warnings',
'plugin:import/typescript',
],
settings: {
'import/resolver': {
typescript: {
// Always try to resolve types under `<root>@types` directory
// even it doesn't contain any source code, like `@types/rdf-js`
alwaysTryTypes: true,
},
},
},
rules: {
// There are valid typing reasons to have one or the other
'@typescript-eslint/consistent-type-definitions': 'off',
'@typescript-eslint/lines-between-class-members': [ 'error', { exceptAfterSingleLine: true }],
'@typescript-eslint/no-empty-interface': 'off',
// Breaks with default void in AsyncHandler 2nd generic
'@typescript-eslint/no-invalid-void-type': 'off',
// Problems with optional parameters
'@typescript-eslint/no-unnecessary-condition': 'off',
'@typescript-eslint/prefer-optional-chain': 'error',
'@typescript-eslint/promise-function-async': [ 'error', { checkArrowFunctions: false } ],
'@typescript-eslint/space-before-function-paren': [ 'error', 'never' ],
'@typescript-eslint/unbound-method': 'off',
'@typescript-eslint/unified-signatures': 'off',
// Conflicts with functions from interfaces that sometimes don't require `this`
'class-methods-use-this': 'off',
'comma-dangle': [ 'error', 'always-multiline' ],
'dot-location': [ 'error', 'property' ],
'eslint-comments/disable-enable-pair': 'off',
// Allow declaring overloads in TypeScript (https://eslint.org/docs/rules/func-style)
'func-style': [ 'error', 'declaration' ],
'generator-star-spacing': [ 'error', 'after' ],
// Conflicts with padded-blocks
'lines-around-comment': 'off',
'lines-between-class-members': [ 'error', 'always', { exceptAfterSingleLine: true }],
'max-len': [ 'error', { code: 120, ignoreUrls: true }],
// Used for RDF constants
'new-cap': 'off',
// Necessary in constructor overloading
'no-param-reassign': 'off',
// Checked by @typescript-eslint/no-redeclare
'no-redeclare': 'off',
// Conflicts with external libraries
'no-underscore-dangle': 'off',
// Already checked by @typescript-eslint/no-unused-vars
'no-unused-vars': 'off',
'padding-line-between-statements': 'off',
'prefer-named-capture-group': 'off',
// Already generated by TypeScript
strict: 'off',
'tsdoc/syntax': 'error',
'unicorn/catch-error-name': 'off',
'unicorn/import-index': 'off',
'unicorn/import-style': 'off',
// The next 2 some functional programming paradigms
'unicorn/no-array-callback-reference': 'off',
'unicorn/no-fn-reference-in-iterator': 'off',
'unicorn/no-object-as-default-parameter': 'off',
'unicorn/numeric-separators-style': 'off',
// At function only supported in Node v16.6.0
'unicorn/prefer-at': 'off',
// Does not make sense for more complex cases
'unicorn/prefer-object-from-entries': 'off',
// Only supported in Node v15
'unicorn/prefer-string-replace-all' : 'off',
// Can get ugly with large single statements
'unicorn/prefer-ternary': 'off',
'yield-star-spacing': [ 'error', 'after' ],
// Need to use the typescript version of this rule to support overloading
"no-dupe-class-members": "off",
"@typescript-eslint/no-dupe-class-members": ["error"],
// Naming conventions
'@typescript-eslint/naming-convention': [
'error',
{
selector: 'default',
format: [ 'camelCase' ],
leadingUnderscore: 'forbid',
trailingUnderscore: 'forbid',
},
{
selector: 'variable',
format: [ 'camelCase', 'UPPER_CASE' ],
leadingUnderscore: 'forbid',
trailingUnderscore: 'forbid',
},
{
selector: 'typeLike',
format: [ 'PascalCase' ],
},
{
selector: [ 'typeParameter' ],
format: [ 'PascalCase' ],
prefix: [ 'T' ],
},
],
// Import
'@typescript-eslint/consistent-type-imports': [ 'error', { prefer: 'type-imports' }],
// Disabled in favor of eslint-plugin-import
'sort-imports': 'off',
'import/order': [ 'error', {
alphabetize: {
order: 'asc',
caseInsensitive: true,
},
}],
'import/no-duplicates': 'error',
'import/no-extraneous-dependencies': 'error',
'import/no-named-as-default': 'off',
// Doesn't work with type imports
'no-duplicate-imports': 'off',
'unused-imports/no-unused-imports-ts': 'error',
},
overrides: [
{
files: '*.js',
parser: 'espree',
},
],
};

View File

@ -1,14 +1,14 @@
'use strict';
const options = require('../.markdownlint-cli2.cjs');
"use strict";
module.exports = {
globs: [ '**/*.md' ],
globs: [ "**/*.md" ],
config: {
// Re-use the base config
...options.config,
// Allow first line to not be top level heading
MD041: false,
},
MD041: false
}
};

View File

@ -1,5 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: ❓ Question
url: https://github.com/CommunitySolidServer/CommunitySolidServer/discussions/new/choose
about: A question or discussion about the server

13
.github/ISSUE_TEMPLATE/question.md vendored Normal file
View File

@ -0,0 +1,13 @@
---
name: "❓ Question"
about: A general question
title: ''
labels: ''
assignees: ''
---
#### Question
<!-- Questions are usually better suited for discussions, which can be found at https://github.com/CommunitySolidServer/CommunitySolidServer/discussions -->
<!-- In case you think this would better as an issue, please provide a clear and concisely formulated question.-->

View File

@ -1,33 +1,33 @@
version: 2
updates:
- package-ecosystem: github-actions
- package-ecosystem: "github-actions"
directory: /
schedule:
interval: daily
time: '02:13'
timezone: Europe/Brussels
interval: "daily"
time: "02:13"
timezone: "Europe/Brussels"
labels:
- ⚙️ dependencies
- package-ecosystem: npm
- "⚙️ dependencies"
- package-ecosystem: "npm"
directory: /
schedule:
interval: daily
time: '03:35'
timezone: Europe/Brussels
target-branch: versions/next-major
interval: "daily"
time: "03:35"
timezone: "Europe/Brussels"
target-branch: "versions/6.0.0"
ignore:
# Ignore minor and patch version updates
- dependency-name: '*'
update-types: ['version-update:semver-minor', 'version-update:semver-patch']
- dependency-name: "*"
update-types: ["version-update:semver-minor", "version-update:semver-patch"]
# Sticking with Husky 4.x
- dependency-name: husky
- dependency-name: "husky"
labels:
- ⚙️ dependencies
- package-ecosystem: docker
- "⚙️ dependencies"
- package-ecosystem: "docker"
directory: /
schedule:
interval: daily
time: '04:22'
timezone: Europe/Brussels
interval: "daily"
time: "04:22"
timezone: "Europe/Brussels"
labels:
- ⚙️ dependencies
- "⚙️ dependencies"

View File

@ -38,11 +38,11 @@ jobs:
timeout-minutes: 10
steps:
- name: Use Node.js 16.x
uses: actions/setup-node@v4
uses: actions/setup-node@v3
with:
node-version: 16.x
- name: Check out the project
uses: actions/checkout@v4.2.0
uses: actions/checkout@v3.3.0
with:
ref: ${{ inputs.branch || github.ref }}
- name: Install dependencies and run build scripts
@ -52,7 +52,7 @@ jobs:
- name: Create the necessary folders
run: mkdir -p reports/css
- name: Pull the conformance harness docker
run: 'docker pull solidproject/conformance-test-harness:${{ inputs.version }}'
run: "docker pull solidproject/conformance-test-harness:${{ inputs.version }}"
- name: Wait until the server has started
run: >
curl --output /dev/null --silent --head --fail --retry 30
@ -78,13 +78,13 @@ jobs:
branch-name: ${{ inputs.branch || github.head_ref }}
- name: Save the reports
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v3
with:
name: ${{ steps.sanitize.outputs.sanitized-branch-name }} reports
path: reports
- name: Save the server output
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v3
with:
name: ${{ steps.sanitize.outputs.sanitized-branch-name }} server output
path: server-output.log

View File

@ -21,15 +21,15 @@ jobs:
tags: ${{ steps.meta-main.outputs.tags || steps.meta-version.outputs.tags }}
steps:
- name: Checkout
uses: actions/checkout@v4.2.0
uses: actions/checkout@v3.3.0
- if: startsWith(github.ref, 'refs/tags/v') || (github.ref == 'refs/heads/main')
name: Docker meta edge and version tag
id: meta-main
uses: docker/metadata-action@v5
uses: docker/metadata-action@v4
with:
images: |
solidproject/community-server
# Edge will always be executed (without latest tag), semver only on tag push events (with latest tag)
# edge will always be executed (without latest tag), semver only on tag push events (with latest tag)
tags: |
type=edge
type=semver,pattern={{version}}
@ -39,7 +39,7 @@ jobs:
- if: startsWith(github.ref, 'refs/heads/versions/')
name: Docker meta next
id: meta-version
uses: docker/metadata-action@v5
uses: docker/metadata-action@v4
with:
images: |
solidproject/community-server
@ -55,25 +55,25 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4.2.0
uses: actions/checkout@v3.3.0
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
uses: docker/setup-buildx-action@v2
- name: Login to DockerHub
uses: docker/login-action@v3
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and export to docker
uses: docker/build-push-action@v6
uses: docker/build-push-action@v4
with:
context: .
load: true
tags: ${{ needs.docker-meta.outputs.tags }}
labels: ${{ needs.docker-meta.outputs.labels }}
- name: Test all docker-built image tags
- name: "Test all docker-built image tags"
shell: bash
# Loop over all generated image:tag names and docker run them.
# If they aren't built previously, the command will error.
@ -85,10 +85,10 @@ jobs:
done <<< "${{ needs.docker-meta.outputs.tags }}";
- name: Build and push
uses: docker/build-push-action@v6
uses: docker/build-push-action@v4
with:
context: .
push: true
platforms: linux/amd64
platforms: linux/amd64,linux/arm/v7,linux/arm/v8
tags: ${{ needs.docker-meta.outputs.tags }}
labels: ${{ needs.docker-meta.outputs.labels }}

View File

@ -2,7 +2,7 @@ name: CI
on:
push:
branches:
- main
- 'main'
- 'versions/*'
tags:
- 'v*'
@ -23,7 +23,7 @@ jobs:
uses: ./.github/workflows/cth-test.yml
with:
ignore_failures: true
version: 1.1.14 # The latest version that CSS is confirmed to pass
version: 1.1.7 # The latest version that CSS is confirmed to pass
docker:
# Build docker containers on version tag, push to main and push to versions/

View File

@ -2,15 +2,15 @@ name: Documentation
on:
workflow_call:
# Additional trigger to deploy changes to the documentation/ folder
# on push to main, ignoring tags so we don't trigger twice upon release
# Additional trigger to deploy changes to the documentation/ folder
# on push to main, ignoring tags so we don't trigger twice upon release
push:
branches:
- main
paths:
- documentation/**
tags-ignore:
- '*'
- "*"
jobs:
mkdocs-prep:
@ -21,10 +21,10 @@ jobs:
outputs:
major: ${{ steps.tagged_version.outputs.major || steps.current_version.outputs.major }}
steps:
- uses: actions/checkout@v4.2.0
- uses: actions/setup-node@v4
- uses: actions/checkout@v3.3.0
- uses: actions/setup-node@v3
with:
node-version: 16.x
node-version: '16.x'
- run: npm ci --ignore-scripts
- name: Lint documentation markdown
run: npm run lint:markdown -- documentation/**/*.md
@ -43,8 +43,8 @@ jobs:
runs-on: ubuntu-latest
needs: mkdocs-prep
steps:
- uses: actions/checkout@v4.2.0
- uses: actions/setup-python@v5
- uses: actions/checkout@v3.3.0
- uses: actions/setup-python@v4
with:
python-version: 3.x
- run: pip install mkdocs-material
@ -56,21 +56,22 @@ jobs:
cd documentation && mike deploy --push --update-aliases \
${{ needs.mkdocs-prep.outputs.major }}.x latest
typedocs:
# Build typedocs and publish them to the GH page.
# `mike deploy` overwrites the entire folder for a version so these need to be (re)built afterwards.
needs: [mkdocs-prep, mkdocs]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.0
- uses: actions/setup-node@v4
- uses: actions/checkout@v3.3.0
- uses: actions/setup-node@v3
with:
node-version: 16.x
node-version: '16.x'
- run: npm ci --ignore-scripts
- name: Generate typedocs
run: npm run typedocs
- name: Deploy typedocs
uses: peaceiris/actions-gh-pages@v4
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs

View File

@ -7,10 +7,10 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.2.0
- uses: actions/setup-node@v4
- uses: actions/checkout@v3.3.0
- uses: actions/setup-node@v3
with:
node-version: 20.x
node-version: '16.x'
- run: npm ci --ignore-scripts
- run: npm run lint
@ -23,22 +23,22 @@ jobs:
- ubuntu-latest
- windows-latest
node-version:
- '14.2'
- '14.x'
- '16.0'
- '16.x'
- '18.0'
- 18.x
- '20.0'
- 20.x
- '22.1'
- 22.x
- '18.x'
timeout-minutes: 15
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Ensure line endings are consistent
run: git config --global core.autocrlf input
- name: Check out repository
uses: actions/checkout@v4.2.0
uses: actions/checkout@v3.3.0
- name: Install dependencies and run build scripts
run: npm ci
- name: Type-check tests
@ -58,9 +58,9 @@ jobs:
strategy:
matrix:
node-version:
- 18.x
- 20.x
- 22.x
- '14.x'
- '16.x'
- '18.x'
env:
TEST_DOCKER: true
services:
@ -77,11 +77,11 @@ jobs:
timeout-minutes: 20
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Check out repository
uses: actions/checkout@v4.2.0
uses: actions/checkout@v3.3.0
- name: Install dependencies and run build scripts
run: npm ci
- name: Run integration tests
@ -93,19 +93,19 @@ jobs:
strategy:
matrix:
node-version:
- 18.x
- 20.x
- 22.x
- '14.x'
- '16.x'
- '18.x'
timeout-minutes: 20
steps:
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- name: Ensure line endings are consistent
run: git config --global core.autocrlf input
- name: Check out repository
uses: actions/checkout@v4.2.0
uses: actions/checkout@v3.3.0
- name: Install dependencies and run build scripts
run: npm ci
- name: Run integration tests
@ -123,11 +123,11 @@ jobs:
- 4000:8890
steps:
- name: Use Node.js
uses: actions/setup-node@v4
uses: actions/setup-node@v3
with:
node-version: 20.x
node-version: '16.x'
- name: Check out repository
uses: actions/checkout@v4.2.0
uses: actions/checkout@v3.3.0
- name: Install dependencies and run build scripts
run: npm ci
- name: Run deploy tests

View File

@ -11,8 +11,8 @@ jobs:
fail-fast: false
matrix:
branch:
- main
- versions/next-major
- 'main'
- 'versions/6.0.0'
uses: ./.github/workflows/cth-test.yml
with:
branch: ${{ matrix.branch }}

View File

@ -1,4 +1,4 @@
name: Stale issues and PRs
name: 'Stale issues and PRs'
on:
schedule:
- cron: '30 1 * * *'
@ -10,7 +10,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
- uses: actions/stale@v7
with:
debug-only: true
stale-issue-label: 🏚️ abandoned
@ -24,6 +24,6 @@ jobs:
days-before-close: 30
days-before-pr-stale: -1
operations-per-run: 700
exempt-issue-labels: '🐛 bug,☀️ enhancement,📚 documentation, feature,🐌 performance,
test,📝 task,:ant: worker threads,👩🏾‍💻 developer experience'
exempt-issue-labels: "🐛 bug,☀️ enhancement,📚 documentation, feature,🐌 performance,
test,📝 task,:ant: worker threads,👩🏾‍💻 developer experience"
exempt-all-assignees: true

View File

@ -1,34 +1,31 @@
'use strict';
"use strict";
module.exports = {
ignores: [ 'node_modules/', 'LICENSE.md', '.github/' ],
ignores: [ "node_modules/", "LICENSE.md" ],
globs: [ '**/*.md' ],
globs: [ "**/*.md" ],
config: {
// Enable all markdownlint rules
default: true,
// Set list indent level to 4 which mkdocs / Python-Markdown requires
MD007: { indent: 4 },
MD007: { "indent": 4 },
// Enable line length check but exclude tables and code blocks
MD013: {
line_length: 120,
tables: false,
code_blocks: false,
code_blocks: false
},
// Allow multiple subheadings with the same content
// across different section (#1 ##A ##B #2 ##A ##B)
MD024: {
siblings_only: true,
allow_different_nesting: true
},
// Set Ordered list item prefix to "ordered" (use 1. 2. 3. not 1. 1. 1.)
MD029: { style: 'ordered' },
// Allow inline HTML
MD033: false,
},
MD029: { "style": "ordered" }
}
};

2
.nvmrc
View File

@ -1 +1 @@
18
16

View File

@ -1,14 +1,14 @@
{
"types": [
{ "type": "feat", "section": "Features" },
{ "type": "fix", "section": "Fixes" },
{ "type": "chore", "section": "Chores" },
{ "type": "chore(deps)", "section": "Dependency updates" },
{ "type": "docs", "section": "Documentation" },
{ "type": "style", "section": "Styling" },
{ "type": "refactor", "section": "Refactors" },
{ "type": "perf", "section": "Performance" },
{ "type": "test", "section": "Testing" }
{"type": "feat", "section": "Features"},
{"type": "fix", "section": "Fixes"},
{"type": "chore", "section": "Chores"},
{"type": "chore(deps)", "section": "Dependency updates"},
{"type": "docs", "section": "Documentation"},
{"type": "style", "section": "Styling"},
{"type": "refactor", "section": "Refactors"},
{"type": "perf", "section": "Performance"},
{"type": "test", "section": "Testing"}
],
"header": "<!-- markdownlint-disable MD013 -->\n# Changelog\n\nAll notable changes to this project will be documented in this file.",
"releaseCommitMessageFormat": "chore(release): Release version {{currentTag}} of the npm package"

View File

@ -3,308 +3,6 @@
All notable changes to this project will be documented in this file.
## [7.1.2](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v7.1.1...v7.1.2) (2024-08-20)
### Fixes
* Use full encoded topic iri in streaming http receiveFrom url template ([3e8365b](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/3e8365bb2613737fb28c376b5967a351a1300432))
## [7.1.1](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v7.1.0...v7.1.1) (2024-08-07)
### Fixes
* Ensure streaming HTTP streams the whole notification in a single chunk ([3dd8602](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/3dd8602acce892b36d1ecaf584c938032e754213))
### Chores
* Increase jest timeout ([e15c59c](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e15c59c157882181340fa87a7116b5b34252a79b))
* Use correct markdownlint-cli2 fix command ([b93aa31](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/b93aa31c932935c21f1e3666fdab3d0947a645eb))
* Depend on external eslint package ([46f5fc2](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/46f5fc239efa794f5309834fa818d17c96f83bd1))
### Documentation
* Update server architecture documentation ([9c44f37](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/9c44f375f2537fa0277a6c6831c63c1c1cfc5373))
* Explain oidc.json ([73619fd](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/73619fda056d5a9b0b0fac271f29fbced0424169))
* Explain WAC vs ACP ([ab41967](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/ab419674df5a92054128588747c3abc06086c3ab))
* Explain the provided configs ([ed6f2ec](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/ed6f2ec8e953e84efa6701482d00f616cf6ecbc2))
* Add test instructions to documentation ([3aa28fa](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/3aa28fa03b4d1324998e7f6a5ebe5788d0e6b2c9))
* Add more explicit installation instructions ([e45bce8](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e45bce89aabc95b34ecbefcf46f899a88e60cfef))
* Add missing index for starting the server ([d350c14](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/d350c140fd184d33cbaf6880b9d4b1476d1ffb7c))
* Add HTTP streaming notification option to docs ([556899d](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/556899dbdbf3bb285de71225d156c4891dce23a9))
## [7.1.0](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v7.0.5...v7.1.0) (2024-05-24)
### Features
* Add support for StreamingHTTPChannel2023 notifications ([cb38613](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/cb38613b4cea7f4e808b30a69f1d9aecbb9506e2))
* Store original target in error metadata ([419312e](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/419312ee5f4790881a5d101afea7ab6ca88f5e61))
### Fixes
* Fix .nvmrc version ([0749963](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/07499631b44154fd24d3fd8fd704df34dfca0d0a))
* Combine metadata with data when generating resources ([e20efac](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e20efac3eaa79b2ed8b09cd72a7f8f0d85655894))
* Make `getParentContainer` work with query parameters ([0998970](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/099897013c4ea014212495965d4972e5078ed406))
* Do not reuse the same error in StaticThrowHandler ([f73dfb3](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/f73dfb31c0fe132524323acf6c4f4636bcd8bc80))
* Make allow headers more accurate ([5e60000](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/5e600006819ae1cf1f8edf804218aee700c59bae))
* Expose auxiliary links on errors ([d7078ad](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/d7078ad69261566c44e38d1bb19142fb8bd4dd0f))
### Refactors
* Simplify eslint configs ([cac70b1](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/cac70b1f88dcbbb3ebbe0b8e0b082ead4ab27b33))
## [7.0.5](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v7.0.4...v7.0.5) (2024-03-25)
### Fixes
* Allow path segments to start with 2 or more dots ([6fe6b6e](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/6fe6b6ec89cfa3c1005ca4cf2219fc77de3fb975))
* Add priorities to RDF types when converting ([33e9ae4](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/33e9ae41916c9de0638709b02c42936e53d49414))
* Extract root as possible pod when using subdomains ([8fff08a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/8fff08a9b60a11c7a7f313c540d9f28a2f96ebc0))
* Prevent error when switching accounts ([68975e6](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/68975e6627416c248d82150692199db8a5fd0d31))
* Keep content-type when using metadata templates ([137027e](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/137027e421da9ffa2d2bbc23c08b2a47d4abd328))
## [7.0.4](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v7.0.3...v7.0.4) (2024-02-07)
### Chores
* Replace rdf-js import with @rdfjs/types ([e09b53b](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e09b53b20de0e389715d299466a1e1101579dd07))
### Testing
* Remove workaround for authn library ([7d57359](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/7d573596139283637cf2d1e99d44cb2130268811))
## [7.0.3](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v7.0.2...v7.0.3) (2024-01-05)
### Features
* Support default mainModulePath when creating App ([c6ec45c](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/c6ec45c7c0fb91a1c1365e9a0139e4fdaf8838d6))
### Fixes
* Encode WebID ownership tokens ([277a0d0](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/277a0d0ab724074ed96940836ecc973a8533c538))
* Fix pod base URL in README template ([4e7929f](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/4e7929f6d2b72fbb0a03e8f6e64955239f41c837))
* Only require append when creating with PUT ([a0b7ee4](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/a0b7ee42f3a39cdd8fe2dbf1470e53f57ea62aba))
### Chores
* Remove Docker arm builds ([648ce1f](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/648ce1fba8737dc7a008ff987de161e5902f9d09))
* Update linting dependency ([3a9b0d6](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/3a9b0d69f01d6f0490983eda4ff8000798e10dcc))
### Documentation
* Explain how to use AppRunner to start a server instance ([716c3c3](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/716c3c308933a10382d6726a70b5b77a62cfb787))
* Explain that users need to log in for client credentials ([dca71bc](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/dca71bc5b82a9790d861babdcb1dd231c99dd042))
* Fix links ([1f88864](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/1f888645d6619e253082f4bf0ed20e7ae4e4c38b))
* Describe server feature set ([c64a1a2](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/c64a1a241ddd975f22eb223d545c938dfc8cb63c))
* Fix Typo `is -> if` ([355f7dd](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/355f7dd1c7b9be14c3e243acb5c4634f3a800442))
### Testing
* Run tests on Node 21 ([8f74fc8](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/8f74fc82ad8a611bf96c293748bc5c01c859cdeb))
## [7.0.2](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v7.0.1...v7.0.2) (2023-11-20)
### Features
* Add index signature to Credentials ([86f4592](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/86f45923ba6cc696615a98a5fbc8f13a525e4745))
* Pass requestedModes metadata on 401 ([58daeb6](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/58daeb684f6e84fa0950d0ea5d9827881ba136c2))
### Fixes
* Add query parameter to static resources ([5f85441](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/5f85441b6e23a2bd2b3e1f3ef116a4868d5f9614))
* Update resource size in ConstantConverter ([6c30a25](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/6c30a2512bd30bf52deb4526d13416016004646f))
* Prevent errors in JSON storage when data is invalid ([4318479](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/43184791545bbf6fe8a840de07616fca8f3b7f97))
* Prevent errors during migration for invalid JSON ([2f928bd](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/2f928bd2d4c8d4385bca4554ad0ed19cc5aaa770))
* Disable submit buttons until form data is loaded ([1597a5a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/1597a5a5782ca5b574c42ab3bab3d01de89ccf02))
* Undo util.js errors introduced when changing lint settings ([261c3d0](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/261c3d05a6b446442f2ca5a4a0803363d1cb9021))
### Chores
* Update to TypeScript 5.2.2 ([edbf895](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/edbf895505d625d59404b82807616eebca757040))
* Fix Dockerfile to Node v18 to prevent build issues ([9cc4a9c](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/9cc4a9ce4d786e76c54d126754271eb2ec1355a5))
### Documentation
* Explain storage/location import options ([01623e0](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/01623e0b5c58d77add4ab3e2a1a9082897ad5948))
* Fix outdated information in IDP documentation ([#1773](https://github.com/CommunitySolidServer/CommunitySolidServer/issues/1773)) ([15a929a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/15a929a87e4ce00c0ed266e296405c8e4a22d4a7))
* Explain the patching store in-depth ([4d05fe4](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/4d05fe4315e282d6e1ec19af01b185cb21cab29c))
### Refactors
* Replace linting configurations ([6248ed0](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/6248ed093813e95255f031eb8fcc37e4d869235c))
## [7.0.1](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v7.0.0...v7.0.1) (2023-10-20)
### Fixes
* Remove duplicate identifier reference when disabling accounts ([f1fdbb0](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/f1fdbb05b2575a56dbab4ed9ba38e8d31cfa65d8))
### Documentation
* Fix incorrect variable in documentation ([61b8d4a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/61b8d4a7e85c16580158f06cf25b6c3059ffe224))
* Update v6 references ([762d703](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/762d703df7d0f178cdbd0b53b21ef7ef9b2d4919))
## [7.0.0](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v6.1.0...v7.0.0) (2023-10-19)
### Features
* Add config option to enable account and pod creation ([9321add](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/9321addafa7a63d42a1c11415a55af3e9c695e08))
* Update migration to clear all old non-account data ([9daeaf8](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/9daeaf89ace822d8283a7a75b0d300628ab573d3))
* Use new MaxKeyLengthStorage to prevent keys that are too long ([b5a61cb](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/b5a61cbb08bc03a1e73ee713dde12921a6bfb515))
* Remove base64 encoding from storages ([e1c5189](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e1c5189cb809727ae1f97cc4a435baa6a60058e6))
* Support all notification methods in all default configs ([b54c6b9](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/b54c6b97b7931932ce0c9ed7e9d4fc42cb27156b))
* Add support for initializing a server with a root pod ([864dd7c](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/864dd7c2e015d33ef6535e7c3e882bc108bda224))
* Link to the account page in the pod README ([764b392](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/764b392b2b53b588dfb1cfce97e9ad677fe02aac))
* Update configurations so ldp/accounts/oidc can be disabled ([010017a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/010017a14176246d6a792f89b701c9a8655b70bb))
* Add migration for v6 account data ([0ac7d40](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/0ac7d407bfef2d880c59bc8fd1d809e69113d5f6))
* Allow ConditionalHandler to set the expected value ([fedd9e0](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/fedd9e04d8dd82b8eb4d1f8dac57ff65c0a96a6f))
* Create PodCreator class to contain most pod creation logic ([42a1ca7](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/42a1ca7b645d537b5539827e44f668d46b3ede38))
* Add support for pod owners ([cd07338](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/cd07338ce7132d84c8c18f9f6d935026cebc039e))
* Use IndexedStorage to store account data ([4230db5](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/4230db50382b05e454e27b28e7b8be3ac4858fed))
* Full rework of account management ([a47f523](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/a47f5236ef651dd8eaeb344fd83c7ef82f9730ac))
* Move storage location decision to separate import ([ade977b](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/ade977bb4f86ae000cd70eec4b00e064f5bd7c4b))
* Remove setup ([5eff035](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/5eff035cb3095b43bf76e35dd55abf6e299d02ba))
* Update StaticAssetHandler to allow for easier overrides ([ea83ea5](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/ea83ea59a11ff127c21f33d111bd0ceb75460a25))
* Update oidc-provider to v8 ([7024ee9](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/7024ee9a583144c223078ebac0f6685b704dac57))
* Introduce IndexedStorage for a more extensive storage solution ([3ade2ad](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/3ade2ad795598a109a96f546e0512b116d66bc2f))
* Split up EncodingPathStorage functionality into different classes ([154d981](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/154d98168498a786368f75a01f51b902b8958ee8))
* Use ETagHandler for ETag generation and comparison ([afcbfda](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/afcbfdaacfb767d5cddefd90af5998158c44f727))
* Store ETag in metadata ([b608080](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/b608080d5f23a1326932b2b2c476db660e2dab2e))
* Add error causes to error serializations ([0245b31](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/0245b31e0c650d72190c467546bf0b40a62d800c))
* Add metadata to errors ([f373dff](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/f373dff1d7185e71c3d9aa49d2b116cfe4b2dbcc))
* StaticAssetHandler can link a container to a document ([36ff95e](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/36ff95e6b289c854635e4a842a8550d9ee88ef24))
### Fixes
* Ensure setup values are migrated correctly ([7a44581](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/7a44581406689c3ee3c6477832f7aa3bf4b76c8d))
* Be consistent in slash usage in storages ([f954fc9](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/f954fc94509266c7a7e47ba27ee768888bd1034f))
* Encode notification keys before accessing the storage ([16378ec](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/16378ec4708ca39975a6a092b08ca0f3126583f4))
* Make sure stored tokens expire ([7504817](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/75048172dfc495c2ae621b04247295aefe60b136))
* Update generated keys in ExpiringAdapterFactory to prevent overlap ([2914fd7](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/2914fd7d6028532f3e9239643047bcc1a421ce3c))
* Fix issue in warning on pod settings HTML page ([7684198](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/7684198b53e3f00a2de6f302a11ca3029176ba40))
* Add links on account page ([3bfd9e3](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/3bfd9e329829176ec339edaf8165e03bedd3875f))
* Rename cookie field to authorization ([307dba3](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/307dba3219c15cd094d732e61f8f7e849fd72790))
* Update supported DPoP algorithms to run CTH ([1e3684b](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/1e3684bcf3061d318768e1341acb04485123a906))
* Add workaround for authn library issue ([180d5f1](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/180d5f131e4498b91fb71a9e2e88cdfd7820e8aa))
* Use local file for oidc-provider typings ([b3ef4ed](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/b3ef4ed017a5630b85a76420c1d69fa06fc2b59c))
* Return WAC-Allow header in 304 responses ([43e8ef9](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/43e8ef99b0b5179715453d94168bef77576ad272))
* Return ETag in 304 responses ([baa6498](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/baa64987c6af92fb3964506c9a19d4b251a8f227))
* Add missing error causes ([7505f07](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/7505f07f2fb7f9972e31f445fcd078590f1f0481))
* Make all ways to start the server more consistent ([e921d62](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e921d62630660dab9317ade1fb5583929eeb9f8a))
### Chores
* Make Node v18 the minimum supported version ([e0c1bae](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e0c1baeb437b64966f74edcdc37719e6945043f2))
* Test Node v20 ([43be71e](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/43be71e4a2ed73ad0ca106431aa0af43a3ccc1be))
### Refactors
* Use one identifier to reference main template engine ([92a0856](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/92a0856da6066b58d3c7a1437feadbf9f64abf76))
* Sort default config imports ([851eafd](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/851eafd1d15c12cd46b1c240f7702a35b1f042d9))
* Move single IDP configurations into one folder ([862ac48](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/862ac4867bad57694b4a2b565b5aaf94b332c277))
* Rename WebIdAdapterFactory to ClientIdAdapterFactory ([607c04f](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/607c04ff286a9842e12c750fcdf87b903a838f8a))
* Rename WebHook to Webhook ([531c299](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/531c299c7bc4d710361cedf5e8747835d62b2820))
* Move condition classes to separate folder ([5ec6edd](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/5ec6eddbfab57f88b92861d1f0a8ee6034a55526))
### Testing
* Workaround for Jest dynamic import issues ([cccca96](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/cccca96d28919338596b1a3690177e4b6427c85f))
* Workaround for Jest ESM issues ([bfa70a4](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/bfa70a40aa72d3db0347dbc6e28445a3d1499e64))
* Remove test tmp folder after all tests are finished ([9bf7348](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/9bf734817deaaf3e06b0eccac2423092bd1427c5))
* Stop cleaning up folders after quota test to prevent CI issues ([3a57e88](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/3a57e88229bafce23b4165ef15ebdfb1a1826b55))
## [6.1.0](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v6.0.2...v6.1.0) (2023-10-05)
### Features
* Track binary size of resources when possible ([71e5569](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/71e55690f3418be3d08e35d2cd3aeae5a0634654))
* Add support for range headers ([3e9adef](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/3e9adef4cf00d0776c0d371f835a31511db7427b))
### Fixes
* Prevent error when creating a root pod([da46bec](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/da46becf7a087118e7d682a193d00a3ca6c32eab))
* Remove URL encoding from base64 strings before decoding ([d31393f](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/d31393f4751dd3f023110ead4e47a01ac15da2af))
### Documentation
* Simplify README by pointing to our docs. ([d618f97](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/d618f9781af80b1697d5fe23f50e3f186954792b))
* Add starting guide. ([e424b84](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e424b8488261bc8942d82a7fe2d92a94650e93b9))
* Add quick start to README. ([1fa6d24](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/1fa6d248a2e500c025794f4e3ed6cc504ed77f10))
## [6.0.2](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v6.0.1...v6.0.2) (2023-08-30)
### Fixes
* Have FixedContentTypeMapper ignore .meta ([9e682f5](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/9e682f5c4f8ecd222ae633137ca455b1b9c5ce16))
* Ignore invalid header parts ([9c2c5ed](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/9c2c5edaf514fe84594024710c03ab3b7b0fbed1))
* Do not show PUT in Allow header for existing containers ([6f6784a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/6f6784a28873c1a8a71bc8a6a37b634677109f02))
* Store activity streams context locally ([a47cc8a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/a47cc8a5eef4d0dd963f85d0ad0e4746ada48e19))
### Testing
* Clear test data folder before running tests ([6fc3f2c](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/6fc3f2cf4f23ffde40ba88305c4c67bf39b73e10))
* Enable file locker in notification tests ([f419f2f](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/f419f2f28d664fad6d6e16cf89a6ebbd7d0f0052))
### Chores
* Name HTTP handlers ([937c41f](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/937c41fd17d553ddfc0d8f140867c252ec113ccb))
## [6.0.1](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v6.0.0...v6.0.1) (2023-06-15)
### Fixes
* Use correct type for Webhook notifications ([c0a881b](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/c0a881b9809d3a551c4cdf63bbd89ce57f3fff8d))
* Make root storage subject of storage description ([9584ab7](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/9584ab7549ecf7ab20fe1e6db28f3c900d9a5392))
* Prevent illegal file paths from being generated ([fdee4b3](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/fdee4b334fa456746e9d2097284321a6c1fa2362))
## [6.0.0](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v6.0.0-alpha.0...v6.0.0) (2023-05-02)
### Features
* Support both the old and new WebSocket specifications together ([4b7621f](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/4b7621f9e0be487fc5df47086572b24e9ed42475))
* Use WebSocket2023Channel identifier for WebSocket URL ([69af7c4](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/69af7c4e163038635b62f6bcc573d6d8e8d9fd37))
* Replace WebHookSubscription2021 with WebHookChannel2023 ([d59a159](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/d59a1595d56a606deba42ae5605ffe4a3c250b6c))
* Allow unsubscribing from all notification channels ([e946348](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/e9463483f4380c526b8a7b188e945a55123348d4))
* Restrict channels to 2 weeks by default ([f7e05ca](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/f7e05ca31e718732540214bc3f4b9400e6564c11))
* Support Add/Remove notifications on containers ([134237a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/134237a80fab602d2aed61cb5ff499488a474d0b))
* Replace WebSocketSubscription2021 with WebSocketChannel2023 ([702e8f5](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/702e8f5f59e8bec2fb29000ec14239d3f2d00d36))
* Use URLs for channel identifiers ([cbbb10a](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/cbbb10afa1f186a973d98a0ce55429cb5aee5a3a))
* Ignore unsupported notifications features in subscriptions ([67d1ff4](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/67d1ff4ac0a93c051e8491826414f3471c2f05aa))
* Support GET requests on subscription services ([65860f7](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/65860f77da56dfc80f68ea6a43b99ac3b3e202a5))
* Update notification object to match the updated examples ([7c343a5](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/7c343a5fcce415251d25dfb184e5e8d3496c1710))
* Replace expiration feature with startAt and endAt ([caee563](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/caee563dd69a34944c9b175654e24946b264c2f9))
* Use notification v0.2 features in discovery ([10980e9](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/10980e90a31b5dff51e18ba52856ab486fefb2da))
* Support conditions for GET/HEAD requests ([f0596c2](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/f0596c2eb8b1f62b31fdcd26070ea9fbf8468a74))
* Provide clear error message for unknown clients ([c332412](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/c332412074d3969420348687e8323fffaec2f882))
* SeededPodInitializer log exceptions as warning instead of crashing ([2efc141](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/2efc141baa11f4f2a0063c189843583a05cc4012))
### Documentation
* Explain changes to template folders ([a4d4118](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/a4d4118474324c9c2d00ee683348236da6b0789b))
* Describe how notifications work on the server ([1a1a6ee](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/1a1a6ee71467678eb9ad346a5550b75afe73c86b))
* Update RELEASE_NOTES with correct notification information ([40ad4a6](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/40ad4a61704d17213f9092933ee27ebd37714f6e))
* Add references to the configuration generator ([4b33017](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/4b3301738e3884a3b4324982c324463a1beb990c))
* Add responses when client credentials are incorrect ([50bb8cf](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/50bb8cf923cf6f7ea8e10e305df4959f7221275e))
* Add Zenodo badge in README ([5acddcb](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/5acddcb5b204fe91c0ed2f4b24c0241e851afd3a))
### Testing
* Fix Jest memory issues ([26f24aa](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/26f24aa76c1aadf5a0578bbf9d5bd6d3362377f6))
### Fixes
* Make sure locker allows reentrant lock acquisition ([5347025](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/53470257201999566e3012923af45c19f0a6a938))
* Make aggregated errors prettier ([0d5d072](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/0d5d072f79bc6f34c0080b8c626a4548ffaebb16))
* Support new ETag format in notification states ([b250bea](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/b250beaec902e4e564eea68318f9f9f3342c13b0))
* Minor documentation and configuration updates ([4ff6fe6](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/4ff6fe66eaaebc537cb73346ae997b09630ba879))
* Update the lastEmit value after sending a notification ([b2f4d7f](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/b2f4d7fb2dd9fa92c6fa5f57a0e3d93195343815))
* Replace inefficient storage detection ([23db528](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/23db528472169925b4705140424f6d470574760d))
* Use EqualReadWriteLocker with file locker to prevent deadlocks ([0a30be5](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/0a30be55ef433400965ff76581213b23f0e59a4e))
* Ensure the ETag is representation specific ([c3f48dd](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/c3f48ddb97c842dc3a2bbfd06230cb6caa10917d))
* Store internal JWK as JWKS to be backwards compatible ([7fd0b50](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/7fd0b503837b378ff9a8764290938014a2a5a11a))
* Updated WrappedExpiringStorage to use timer.unref ([b6faed0](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/b6faed0db3cb2b6282acdafb64e1225c89e66842))
* Output required OAuth error fields ([63fd062](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/63fd062f16d2e88e86c1aa44733c3daddef2bb23))
* Do not add port 80 to default base URL ([bb74278](https://github.com/CommunitySolidServer/CommunitySolidServer/commit/bb7427842c0f360852e33863972f14bc72d7502a))
## [6.0.0-alpha.0](https://github.com/CommunitySolidServer/CommunitySolidServer/compare/v5.1.0...v6.0.0-alpha.0) (2023-02-01)
### Features

View File

@ -1,9 +1,3 @@
# Code of Conduct
# Code of conduct
For our Code of Conduct, we follow and adhere to the Solid [Code of Conduct](https://github.com/solid/process/blob/main/code-of-conduct.md),
but with a different Committee, which should be contacted in the case of violations.
The Committee consists of the following people:
* Joachim Van Herwegen <joachim.vanherwegen@ugent.be>
* Ruben Verborgh <ruben.verborgh@ugent.be>
We follow and adhere to the Solid [Code of Conduct](https://github.com/solid/process/blob/main/code-of-conduct.md).

View File

@ -1,5 +1,5 @@
# Build stage
FROM node:18-alpine AS build
FROM node:lts-alpine AS build
# Set current working directory
WORKDIR /community-server
@ -13,7 +13,7 @@ RUN npm ci --unsafe-perm && npm run build
# Runtime stage
FROM node:18-alpine
FROM node:lts-alpine
# Add contact informations for questions about the container
LABEL maintainer="Solid Community Server Docker Image Maintainer <thomas.dupont@ugent.be>"

View File

@ -1,6 +1,6 @@
MIT License
Copyright © 20192024 Inrupt Inc. and imec
Copyright © 20192022 Inrupt Inc. and imec
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

152
README.md
View File

@ -8,7 +8,6 @@
[![Node.js version](https://img.shields.io/node/v/@solid/community-server)](https://www.npmjs.com/package/@solid/community-server)
[![Build Status](https://github.com/CommunitySolidServer/CommunitySolidServer/workflows/CI/badge.svg)](https://github.com/CommunitySolidServer/CommunitySolidServer/actions)
[![Coverage Status](https://coveralls.io/repos/github/CommunitySolidServer/CommunitySolidServer/badge.svg)](https://coveralls.io/github/CommunitySolidServer/CommunitySolidServer)
[![DOI](https://zenodo.org/badge/265197208.svg)](https://zenodo.org/badge/latestdoi/265197208)
[![GitHub discussions](https://img.shields.io/github/discussions/CommunitySolidServer/CommunitySolidServer)](https://github.com/CommunitySolidServer/CommunitySolidServer/discussions)
[![Chat on Gitter](https://badges.gitter.im/CommunitySolidServer/community.svg)](https://gitter.im/CommunitySolidServer/community)
@ -23,53 +22,160 @@ the Community Solid Server is a great companion:
- 🧑🏽 **for people** who want to try out having their own Pod
- 👨🏿‍💻 **for developers** who want to quickly create and test Solid apps
- 👨🏿‍💻 **for developers** who want to create and test Solid apps
- 👩🏻‍🔬 **for researchers** who want to design new features for Solid
And, of course, for many others who like to experience Solid.
## ⚡ Running the Community Solid Server
You can install the software locally or on your server
and get started with Solid immediately.
Make sure you have [Node.js](https://nodejs.org/en/) 18.0 or higher.
If this is your first time using Node.js,
you can find instructions on how to do this [here](https://nodejs.org/en/download/package-manager).
## ⚡ Running the server
To run the server, you will need [Node.js](https://nodejs.org/en/).
We support versions 14.2 and up.
If you do not use Node.js,
you can run a [Docker](https://www.docker.com/) version instead.
### 💻 Installing and running locally
After installing Node.js,
install the latest server version
from the [npm package repository](https://www.npmjs.com/):
```shell
npx @solid/community-server
npm install -g @solid/community-server
```
Now visit your brand new server at [http://localhost:3000/](http://localhost:3000/)!
To persist your pod's contents between restarts, use:
To run the server with in-memory storage, use:
```shell
npx @solid/community-server -c @css:config/file.json -f data/
community-solid-server # add parameters if needed
```
In case you prefer to use Docker instead,
you can find instructions for this and other methods in the
[documentation](https://communitysolidserver.github.io/CommunitySolidServer/latest/usage/starting-server/).
To run the server with your current folder as storage, use:
## 🔧 Configure your server
```shell
community-solid-server -c @css:config/file.json
```
Substantial changes to server behavior can be achieved via JSON configuration files.
### 📃 Installing and running from source
If you rather prefer to run the latest source code version,
or if you want to try a specific [branch](https://www.npmjs.com/) of the code,
you can use:
```shell
git clone https://github.com/CommunitySolidServer/CommunitySolidServer.git
cd CommunitySolidServer
npm ci
npm start -- # add parameters if needed
```
### 📦 Running via Docker
Docker allows you to run the server without having Node.js installed. Images are built on each tagged version and hosted
on [Docker Hub](https://hub.docker.com/r/solidproject/community-server).
```shell
# Clone the repo to get access to the configs
git clone https://github.com/CommunitySolidServer/CommunitySolidServer.git
cd CommunitySolidServer
# Run the image, serving your `~/Solid` directory on `http://localhost:3000`
docker run --rm -v ~/Solid:/data -p 3000:3000 -it solidproject/community-server:latest
# Or use one of the built-in configurations
docker run --rm -p 3000:3000 -it solidproject/community-server -c config/default.json
# Or use your own configuration mapped to the right directory
docker run --rm -v ~/solid-config:/config -p 3000:3000 -it solidproject/community-server -c /config/my-config.json
# Or use environment variables to configure your css instance
docker run --rm -v ~/Solid:/data -p 3000:3000 -it -e CSS_CONFIG=config/file-no-setup.json -e CSS_LOGGING_LEVEL=debug solidproject/community-server
```
### 🗃️ Helm Chart
The official [Helm](https://helm.sh/) Chart for Kubernetes deployment is maintained at
[CommunitySolidServer/css-helm-chart](https://github.com/CommunitySolidServer/css-helm-chart) and published on
[ArtifactHUB](https://artifacthub.io/packages/helm/community-solid-server/community-solid-server).
There you will find complete installation instructions.
```shell
# Summary
helm repo add community-solid-server https://communitysolidserver.github.io/css-helm-chart/charts/
helm install my-css community-solid-server/community-solid-server
```
## 🔧 Configuring the server
The Community Solid Server is designed to be flexible
such that people can easily run different configurations.
This is useful for customizing the server with plugins,
testing applications in different setups,
or developing new parts for the server
without needing to change its base code.
### ⏱ Parameters
An easy way to customize the server is
by passing parameters to the server command.
These parameters give you direct access
to some commonly used settings:
| parameter name | default value | description |
|-------------------------|----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
| `--port, -p` | `3000` | The TCP port on which the server should listen. |
| `--baseUrl, -b` | `http://localhost:$PORT/` | The base URL used internally to generate URLs. Change this if your server does not run on `http://localhost:$PORT/`. |
| `--socket` | | The Unix Domain Socket on which the server should listen. `--baseUrl` must be set if this option is provided |
| `--loggingLevel, -l` | `info` | The detail level of logging; useful for debugging problems. Use `debug` for full information. |
| `--config, -c` | `@css:config/default.json` | The configuration(s) for the server. The default only stores data in memory; to persist to your filesystem, use `@css:config/file.json` |
| `--rootFilePath, -f` | `./` | Root folder where the server stores data, when using a file-based configuration. |
| `--sparqlEndpoint, -s` | | URL of the SPARQL endpoint, when using a quadstore-based configuration. |
| `--showStackTrace, -t` | false | Enables detailed logging on error output. |
| `--podConfigJson` | `./pod-config.json` | Path to the file that keeps track of dynamic Pod configurations. Only relevant when using `@css:config/dynamic.json`. |
| `--seededPodConfigJson` | | Path to the file that keeps track of seeded Pod configurations. |
| `--mainModulePath, -m` | | Path from where Components.js will start its lookup when initializing configurations. |
| `--workers, -w` | `1` | Run in multithreaded mode using workers. Special values are `-1` (scale to `num_cores-1`), `0` (scale to `num_cores`) and 1 (singlethreaded). |
### 🔀 Multithreading
The Community Solid Server can be started in multithreaded mode with any config. The config must only contain components
that are threadsafe though. If a non-threadsafe component is used in multithreaded mode, the server will describe with
an error which class is the culprit.
```shell
# Running multithreaded with autoscaling to number of logical cores minus 1
npm start -- -c config/file.json -w -1
```
### 🖥️ Environment variables
Parameters can also be passed through environment variables.
They are prefixed with `CSS_` and converted from `camelCase` to `CAMEL_CASE`
> eg. `--showStackTrace` => `CSS_SHOW_STACK_TRACE`
**Note: command-line arguments will always override environment variables!**
### 🧶 Custom configurations
More substantial changes to server behavior can be achieved
by writing new configuration files in JSON-LD.
The Community Solid Server uses [Components.js](https://componentsjs.readthedocs.io/en/latest/)
to specify how modules and components need to be wired together at runtime.
Recipes for configuring the server can be found at [CommunitySolidServer/recipes](https://github.com/CommunitySolidServer/recipes).
Examples and guidance on configurations
are available in the [`config` folder](https://github.com/CommunitySolidServer/CommunitySolidServer/tree/main/config).
Examples and guidance on custom configurations
are available in the [`config` folder](https://github.com/CommunitySolidServer/CommunitySolidServer/tree/main/config),
and the [configurations tutorial](https://github.com/CommunitySolidServer/tutorials/blob/main/custom-configurations.md).
There is also a [configuration generator](https://communitysolidserver.github.io/configuration-generator/).
Recipes for configuring the server can be found at [CommunitySolidServer/recipes](https://github.com/CommunitySolidServer/recipes).
## 👩🏽‍💻 Developing server code
The server allows writing and plugging in custom modules
without altering its base source code.
The [📗 API documentation](https://communitysolidserver.github.io/CommunitySolidServer/5.x/docs) and
The [📗 API documentation](https://communitysolidserver.github.io/CommunitySolidServer/latest/5.x/docs) and
the [📓 user documentation](https://communitysolidserver.github.io/CommunitySolidServer/)
can help you find your way.
There is also a repository of [📚 comprehensive tutorials](https://github.com/CommunitySolidServer/tutorials/)
@ -86,6 +192,4 @@ and available under the [MIT License](https://github.com/CommunitySolidServer/C
Don't hesitate to [start a discussion](https://github.com/CommunitySolidServer/CommunitySolidServer/discussions)
or [report a bug](https://github.com/CommunitySolidServer/CommunitySolidServer/issues).
There's also [a Matrix-based, CSS-focused chat](https://matrix.to/#/#CommunitySolidServer_community:gitter.im)
Learn more about Solid at [solidproject.org](https://solidproject.org/).

View File

@ -1,126 +1,19 @@
# Community Solid Server release notes
## v7.0.0
### New features
- The minimum supported Node version is now v18.
- Account management and everything related to it have been drastically changed,
see the [usage documentation](https://communitysolidserver.github.io/CommunitySolidServer/7.x/usage/identity-provider/)
for an overview of the new features,
and the [architecture documentation](http://communitysolidserver.github.io/CommunitySolidServer/7.x/architecture/features/accounts/overview/)
for an overview of the new structure.
On a default server, the entry point for everything related to accounts is <http://localhost:3000/.account/>.
Creating an account now requires multiple steps, but allows you to have multiple pods or WebIDs for 1 account.
The architecture has been updated to be more easily extensible.
- Pod seeding has been updated to account for the new account management, with an updated CLI parameter `--seedConfig`,
see the [updated documentation](https://communitysolidserver.github.io/CommunitySolidServer/7.x/usage/seeding-pods/)
for more details.
- Migration was added to update account data automatically from previous versions. See below for more details.
- Due to the changes in account management, setup has been removed completely.
The `*-no-setup.json` configurations have been renamed to `*-root.json` to indicate their focus on the root container.
- The `StaticAssetHandler` can now be used to link static pages to containers.
This can be used to set a static page for the root container of a server.
See the `/config/app/init/static-root.json` config for an example.
### Data migration
Old internal data will need to be migrated.
When starting the server for the first time after updating the version,
this will happen automatically.
A prompt will be shown to confirm.
It is advised to first backup the internal data in case something goes wrong.
When using the filesystem backend with default storage options,
these can be found in the `.internal` folder.
Only account data will be migrated,
other internal data such as OIDC sessions and notification subscriptions will be removed
as how they are stored has changed as well.
This means existing tokens and sessions will be invalidated and users will have to log in again.
Notifications will have to be resubscribed to for the same reason.
This migration step is based on how storage is defined in the configurations provided in this repository.
If you made drastic changes to how internal data is stored,
you might need to have a look at the `app/init/migration/v6.json` configuration.
In case the prompt causes issues, it can be skipped automatically with the `--confirmMigration` CLI option.
### Configuration changes
You might need to make changes to your v6 configuration if you use a custom config.
The `@context` needs to be updated to
`https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld`.
The following changes pertain to the imports in the default configs:
- There is a new `identity/oidc` import set that needs to be added to each config.
Options are `default.json` and `disabled.json`.
- There is a new `static-root.json` import option for `app/init`, setting a static page for the root container.
- There is a new `initialize-root-pod.json` import option for `app/init`, initializing a pod in the root.
- There are more `identity/handler` options to finetune account management availability.
- There is a new set of imports `storage/location` to determine where the root storage of the server is located.
- The `app/setup`and `identity/registration` imports have been removed.
- There is a new `ldp/handler/disabled.json` import to disable the LDP API.
The following changes are relevant for v6 custom configs that replaced certain features.
- All configurations that had a reference to setup have been updated.
- `/app/init/*` imports have changed. Functionality remained the same though.
- All imports that define storages have been updated with new storage classes.
- `/http/notifications/base/storage.json`
- `/storage/keyvalue/storages/storages.json`
- All identifiers containing the string "WebHook" have been renamed to instead use "Webhook"
to be consistent with the notification type.
- `/identity/*` configurations have drastically changed due to the account management update.
- `/http/static/default.json` has been updated to allow easier overriding of the static resources.
### Interface changes
These changes are relevant if you wrote custom modules for the server that depend on existing interfaces.
- The `AppRunner` functions to create and start the server now take a singular arguments object as input.
- Most of the key/value related storages had their constructors changed to allow more values.
- `EncodingPathStorage` has been removed
and its functionality split up over `Base64EncodingStorage` and `ContainerPathStorage`.
`HashEncodingPathStorage` has similarly been replaced by introducing `HashEncodingStorage`.
- All classes with the name `WebHook*` have been renamed to `Webhook*`
to be consistent with the corresponding notification type.
- Most classes related to the IDP have been changed.
- All classes related to setup have been removed.
- The `StaticAssetHandler` has bene updated to support the new functionality.
- `SeededPodInitializer` has been renamed to `SeededAccountInitializer`.
- `WebIdAdapterFactory` has been renamed to `ClientIdAdapterFactory`.
## v6.1.0
### New features
- Added support for HTTP Range headers.
## v6.0.0
### New features
- The server can be configured to use [ACP](https://solidproject.org/TR/acp) instead of WebACL.
`config/file-acp.json` is an example of a configuration that uses this authorization scheme instead.
- Support for the new [Notification specification](https://solidproject.org/TR/2022/notifications-protocol-20221231)
was added. See the documentation for further details.
- All resources now have a storage description header as defined in the v0.10.0 Solid protocol specification.
- The server configuration settings can be set from the package.json or .community-solid-server.config.json/.js files.
- Support for the new [WebSocket Notification protocol](https://solidproject.org/TR/websocket-subscription-2021)
and the [WebHook Notification protocol draft](https://github.com/solid/notifications/blob/main/webhook-subscription-2021.md)
was added.
### Data migration
No actions are required to migrate data.
### Template changes
The expected format of template folders for generating pods or initializing the root has changed,
see the `templates/pod` folder for an example.
More specifically: each of those folders used is now expected to have multiple subfolders.
The subfolder `base` will always be copied,
whereas the subfolders `acp` and `wac` will only be copied if the corresponding access control system is enabled.
### Configuration changes
You might need to make changes to your v5 configuration if you use a custom config.
@ -136,8 +29,6 @@ The following changes pertain to the imports in the default configs:
- A new `http/notifications` set of import options have been added
to determine which notification specification a CSS instance should use.
Most default configurations have been updated to use `http/notifications/websockets.json`.
- `ldp/authorization` and `util/auxiliary` have new options to support ACP.
- `util/auxiliary/no-acl.json` was renamed to `util/auxiliary/empty.json`.
The following changes are relevant for v5 custom configs that replaced certain features.
@ -164,9 +55,6 @@ The following changes are relevant for v5 custom configs that replaced certain f
- `/notifications/*`
- IDP private key generation was moved to a separate generator class.
- `/identity/handler/*`
- The Read/Write lockers have changed slightly.
- `/util/resource-locker/file.json`
- `/util/resource-locker/memory.json`
### Interface changes
@ -184,7 +72,6 @@ These changes are relevant if you wrote custom modules for the server that depen
`PermissionSet` and `Permission` were merged into a single interface.
This impacts all authentication and authorization related classes.
- `HttpServerFactory.startServer` function was renamed to `createServer` and is no longer expected to start the server.
- `GreedyReadWriteLocker` constructor parameters have changed.
## v5.1.0
@ -209,6 +96,7 @@ These changes are relevant if you wrote custom modules for the server that depen
- Regex-based configurations now have ordered entries and use the first match found.
- When starting the server through code, it is now possible to provide CLI value bindings as well in `AppRunner`.
- Support for Node v12 was dropped.
- The server configuration settings can be set from the package.json or .community-solid-server.config.json/.js files.
### Data migration

View File

@ -4,9 +4,7 @@ const { AppRunner } = require('..');
// Attaching a logger to the uncaughtExceptionMonitor event,
// such that the default uncaughtException behavior still occurs.
process.on('uncaughtExceptionMonitor', (err, origin) => {
// eslint-disable-next-line no-console
console.error(`Process is halting due to an ${origin} with error ${err.message}`);
});
// eslint-disable-next-line no-sync
new AppRunner().runCliSync(process);

View File

@ -1,10 +1,10 @@
module.exports = {
extends: [ '@commitlint/config-conventional' ],
extends: ['@commitlint/config-conventional'],
rules: {
'subject-case': [
2,
'never',
[ 'start-case', 'kebab-case', 'snake-case' ],
['start-case', 'kebab-case', 'snake-case'],
],
},
}
};

View File

@ -1,129 +1,67 @@
# Configuration
This folder contains several configurations that can be used to start up the server.
These can be used directly, or used as inspiration on how you would want to configure your server.
All those configurations are created in the same way:
features are enabled or disabled by choosing a specific option for every component.
All components are represented by the subfolders found in the folders here:
`ldp` contains all LDP related components,
`identity` all IDP components, etc.
Options are then chosen by importing 1 entry from every component subfolder.
More information on how this can be done manually,
can be found in this [tutorial](https://github.com/CommunitySolidServer/tutorials/blob/main/custom-configurations.md).
In case none of the available options have the exact feature configuration you want,
it is always possible to not choose any of them and create your own custom version instead.
As manually changing server options can be cumbersome,
there is also an online [configuration generator](https://communitysolidserver.github.io/configuration-generator/).
## How to use
Below we give an overview of the main identifying features of the configurations.
We start with all features of the default configuration,
after which we will explain in which features the other ones differ from it.
The easiest way to create a new config is by creating a JSON-LD file
that imports one option from every component subfolder
(such as either `allow-all.json` or `webacl.json` from `ldp/authorization`).
In case none of the available options suffice, there are 2 other ways to handle this:
## default.json
### Append to an existing config
This is the configuration that is used if no configuration is provided when starting the server.
It stores all data in memory, so this server is perfect for quickly trying some things out,
but not if you want a persistent server.
In case the options mostly suffice, but they just need to do a bit more,
it might be possible to append to one of the solutions.
For authorization, it uses [Web Access Control (WAC)](https://solid.github.io/web-access-control-spec/),
it supports all [notification methods](https://solidproject.org/TR/notifications-protocol) implemented in CSS,
allows users to create accounts, pods, WebIDs, and use them for [Solid-OIDC](https://solid.github.io/solid-oidc/).
For example, in case all the existing metadata parsers can remain,
but an additional one needs to be added,
you could import `ldp/metadata-parser/default.json`
and then add the following in your root config:
It is also initialized with an `index.html` page at root level,
with permissions set in such a way that everyone has full access to the server.
```json
{
"@id": "urn:solid-server:default:MetadataParser",
"@type": "ParallelHandler",
"handlers": [
{ "@type": "MyNewParser" }
]
}
```
Although strictly not allowed by the Solid specification,
this configuration allows users to both write data at root level of the server,
and also create pods in subcontainers.
In all other configurations only or the other (or neither) will be allowed,
but here both are enabled for maximum flexibility when testing things out.
This will add the new parser to the list of metadata parsers.
The `@id` value is needed so Components.js knows which object to add the values to,
and the `@type` is needed so it can interpret the other fields (`handlers` in this case).
## file.json
Note that generally it is only advised to append to ParallelHandlers or key/value maps.
In case the order is important this can not be guaranteed over separate files.
The most important difference with the `default.json` configuration is that this one stores its data as files on disk,
thereby making the data persistent.
Besides that, it also prevents data from being written to the root,
the only way to add data is to create a pod and add data there.
To still show something at root level when the server is started,
a static page is shown which can not be modified using standard Solid requests.
### Create a new option
## file-acp.json
If a more drastic change is required,
the solution is to not import anything from that folder but instead write your own.
The only difference with `file.json`is that this uses
[Access Control Policy (ACP)](https://solid.github.io/authorization-panel/acp-specification/)
for authorization instead of WAC.
For example, in case you only want the slug parser but not any of the others,
you would have to not import anything from `ldp/metadata-parser` folder,
but instead have the following in your root config:
## file-root.json
```json
{
"@id": "urn:solid-server:default:MetadataParser",
"@type": "ParallelHandler",
"handlers": [
{ "@type": "SlugParser" }
]
}
```
This configuration starts from `file.json`, but does not allow the creation of accounts.
Instead, it allows data to be written directly to the root of the server.
To make sure users can write data there after starting the server,
permissions have been set to grant everyone full access,
so this needs to be changed after starting the server.
## file-root-pod.json
The same idea as `file-root.json`,
but here it is done by creating an account with a pod
in the root of the server the first time it is started.
The credentials to this account are stored in the configuration so should be changed afterwards.
This has the advantage of both having your data at root level,
but also allowing you to authenticate using Solid-OIDC.
## https-file-cli.json
A variant of `file.json` that uses HTTPS of HTTP.
The required key and cert file paths need to be defined using two new CLI options: `--httpsKey` and `-httpCert`.
## example-https-file.json
Another way to define HTTPS, but this time through the configuration file itself instead of the CLI.
As can be seen in the configuration itself, two paths are defined, pointing to the key and cert files.
To actually use this solution, you need to update the paths in that file before running the server.
## sparql-endpoint.json
Sets up a server that uses a SPARQL endpoint to store the data.
Only RDF data can be stored on a server using this configuration.
For internal data, such as accounts, temporary OIDC resources, etc,
the servers uses non-RDF data formats.
While other configurations store this kind of data in the same backend as the Solid data,
this is not feasible when using a SPARQL endpoint.
For this reason, this configuration stores all that data in memory,
meaning this solution should not be used if you want persistent accounts.
## sparql-endpoint-root.json
This differs from `sparql-endpoint.json` in the same way as `file-root.json` differs from `file.json`.
## sparql-file-storage.json
Similar to `sparql-endpoint.json` with the main difference being
that here internal data is stored on disk instead of in memory.
## memory-subdomains.json
A memory-based server whose main differentiating feature is how pod URLs are constructed.
In most other configurations, pods are created by appending the chosen name to the base URL of the server,
so for a server running at `http://example.com/`,
choosing the name `test` for your pod would result in `http://example.com/test/`.
With this configuration, the name is used as a subdomain of the url instead,
so the above values would result in a pod at `http://test.example.com/` instead.
## quota-file.json
A file-based server that limits the amount of data a user can put in a pod.
The values in the configuration determine the limit.
## path-routing.json
This configuration serves as an example of how a server can be configured
to serve data from different backends depending on the URL that is used.
In this example, all data in the `/sparql/` container will be stored in a SPARQL backend,
and similarly for `/memory/` and `/file/`.
## oidc.json
A configuration that sets up the server to only function as an Identity Provider.
It does not support creating pods or storing data on the server,
the only available options are creating accounts and linking them to WebIDs.
This way the server can be used to identify those WebIDs during an OIDC interaction.
Don't forget that in some cases you would also have to copy some imports!
The existing options can be used as inspiration.

View File

@ -2,26 +2,31 @@
Options related to the server startup.
## Base
This is the entry point to the main server setup.
* *default*: The main application. This should only be changed/replaced
if you want to start from a different kind of class.
## Init
Contains a list of initializer that need to be run when starting the server.
* *default*: The default setup. The ParallelHandler can be used to add custom Initializers.
* *initialize-root*: Makes sure the root container has the necessary resources to function properly.
* *initialize-prefilled-root*: Similar to `initialize-root` but adds an index page to the root container.
* *initialize-intro*: Similar to `initialize-prefilled-root` but adds an index page
specific to the memory-based server of the default configuration.
* *initialize-root-pod*: Initializes the server with a pod in the root.
Email and password have not yet been set and need to be defined in the base configuration.
See `file-root-pod.json` for an example.
* *static-root*: Shows a static introduction page at the server root. This is not a Solid resource.
This is only relevant if setup is disabled but root container access is still required.
* *initialize-prefilled-root*: Similar to `initialize-root` but adds some introductory resources to the root container.
## Main
## Setup
This is the entry point to the main server setup.
Handles the setup page the first time the server is started.
* *default*: The main application. This should only be changed/replaced
if you want to start from a different kind of class.
* *disabled*: Disables the setup page. Root container access will be impossible unless handled by the Init config above.
Registration and pod creation is still possible if that feature is enabled.
* *optional*: Setup is available at `/setup` but the server can already be used.
Everyone can access the setup page so make sure to complete that as soon as possible.
* *required*: All requests will be redirected to the setup page until setup is completed.
## Variables

View File

@ -1,13 +1,12 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/initializers/base-url.json",
"css:config/app/init/initializers/logger.json",
"css:config/app/init/initializers/server.json",
"css:config/app/init/initializers/seeding.json",
"css:config/app/init/initializers/seeded-pod.json",
"css:config/app/init/initializers/version.json",
"css:config/app/init/initializers/workers.json",
"css:config/app/init/migration/base.json"
"css:config/app/init/initializers/workers.json"
],
"@graph": [
{
@ -16,7 +15,6 @@
"@type": "SequenceHandler",
"handlers": [
{ "@id": "urn:solid-server:default:LoggerInitializer" },
{ "@id": "urn:solid-server:default:EarlyProcessParallelInitializer" },
{ "@id": "urn:solid-server:default:PrimaryInitializer" },
{ "@id": "urn:solid-server:default:WorkerInitializer" }
]
@ -30,13 +28,12 @@
"source": {
"comment": "These initializers will all be executed sequentially when starting the server.",
"@id": "urn:solid-server:default:PrimarySequenceInitializer",
"@type": "SequenceHandler",
"@type":"SequenceHandler",
"handlers": [
{ "@id": "urn:solid-server:default:CleanupInitializer" },
{ "@id": "urn:solid-server:default:MigrationInitializer" },
{ "@id": "urn:solid-server:default:CleanupInitializer"},
{ "@id": "urn:solid-server:default:BaseUrlVerifier" },
{ "@id": "urn:solid-server:default:PrimaryParallelInitializer" },
{ "@id": "urn:solid-server:default:SeededAccountInitializer" },
{ "@id": "urn:solid-server:default:SeededPodInitializer" },
{ "@id": "urn:solid-server:default:ModuleVersionVerifier" },
{ "@id": "urn:solid-server:default:WorkerManager" }
]
@ -61,7 +58,7 @@
{
"comment": "Initializers that need to cleanup or do anything else before something writes to the backend should be added here.",
"@id": "urn:solid-server:default:CleanupInitializer",
"@type": "SequenceHandler",
"@type":"SequenceHandler",
"handlers": [
]
}

View File

@ -1,15 +1,9 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/base/init.json"
],
"@graph": [
{
"comment": "These handlers are called for all processes whenever the server is started, and can be used to ensure that all necessary resources for booting are available.",
"@id": "urn:solid-server:default:EarlyProcessParallelInitializer",
"@type": "ParallelHandler",
"handlers": [ ]
},
{
"comment": "These handlers are called only for the Primary process whenever the server is started, and can be used to ensure that all necessary resources for booting are available. (in singlethreaded mode, these are always called)",
"@id": "urn:solid-server:default:PrimaryParallelInitializer",

View File

@ -1,22 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"import": [
"css:config/app/init/default.json",
"css:config/app/init/initializers/root.json"
],
"@graph": [
{
"comment": "Initializes the root container resource.",
"@id": "urn:solid-server:default:PrimaryParallelInitializer",
"@type": "ParallelHandler",
"handlers": [
{ "@id": "urn:solid-server:default:RootInitializer" }
]
},
{
"@id": "urn:solid-server:default:RootFolderGenerator",
"@type": "StaticFolderGenerator",
"templateFolder": "@css:templates/root/intro"
}
]
}

View File

@ -1,12 +1,12 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/default.json",
"css:config/app/init/initializers/root.json"
"css:config/app/init/base/init.json",
"css:config/app/init/initializers/prefilled-root.json"
],
"@graph": [
{
"comment": "Initializes the root container resource.",
"comment": "These handlers are called only for the Primary process whenever the server is started, and can be used to ensure that all necessary resources for booting are available. (in singlethreaded mode, these are always called)",
"@id": "urn:solid-server:default:PrimaryParallelInitializer",
"@type": "ParallelHandler",
"handlers": [
@ -14,9 +14,10 @@
]
},
{
"@id": "urn:solid-server:default:RootFolderGenerator",
"@type": "StaticFolderGenerator",
"templateFolder": "@css:templates/root/prefilled"
"comment": "These handlers are called only for the workers processes whenever the server is started, and can be used to ensure that all necessary resources for booting are available. (in singlethreaded mode, these are always called)",
"@id": "urn:solid-server:default:WorkerParallelInitializer",
"@type": "ParallelHandler",
"handlers": [ ]
}
]
}

View File

@ -1,17 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"import": [
"css:config/app/init/default.json",
"css:config/app/init/initializers/root-pod.json"
],
"@graph": [
{
"comment": "Initializes the root container resource.",
"@id": "urn:solid-server:default:PrimaryParallelInitializer",
"@type": "ParallelHandler",
"handlers": [
{ "@id": "urn:solid-server:default:RootInitializer" }
]
}
]
}

View File

@ -1,12 +1,12 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/default.json",
"css:config/app/init/base/init.json",
"css:config/app/init/initializers/root.json"
],
"@graph": [
{
"comment": "Initializes the root container resource.",
"comment": "These handlers are called only for the Primary process whenever the server is started, and can be used to ensure that all necessary resources for booting are available. (in singlethreaded mode, these are always called)",
"@id": "urn:solid-server:default:PrimaryParallelInitializer",
"@type": "ParallelHandler",
"handlers": [
@ -14,9 +14,10 @@
]
},
{
"@id": "urn:solid-server:default:RootFolderGenerator",
"@type": "StaticFolderGenerator",
"templateFolder": "@css:templates/root/empty"
"comment": "These handlers are called only for the workers processes whenever the server is started, and can be used to ensure that all necessary resources for booting are available. (in singlethreaded mode, these are always called)",
"@id": "urn:solid-server:default:WorkerParallelInitializer",
"@type": "ParallelHandler",
"handlers": [ ]
}
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Logs a warning if the base URL changes.",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": [

View File

@ -0,0 +1,26 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Makes sure the root container exists and contains the necessary resources.",
"@id": "urn:solid-server:default:RootInitializer",
"@type": "ConditionalHandler",
"storageKey": "rootInitialized",
"storageValue": true,
"storage": { "@id": "urn:solid-server:default:SetupStorage" },
"source": {
"@type": "ContainerInitializer",
"args_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"args_path": "/",
"args_store": { "@id": "urn:solid-server:default:ResourceStore" },
"args_generator": {
"@type": "StaticFolderGenerator",
"templateFolder": "@css:templates/root/prefilled",
"resourcesGenerator": { "@id": "urn:solid-server:default:TemplatedResourcesGenerator" }
},
"args_storageKey": "rootInitialized",
"args_storage": { "@id": "urn:solid-server:default:SetupStorage" }
}
}
]
}

View File

@ -1,21 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Makes sure the root container exists and contains the necessary resources.",
"@id": "urn:solid-server:default:RootInitializer",
"@type": "ConditionalHandler",
"storageKey": "rootInitialized",
"storageValue": true,
"handleStorage": true,
"storage": { "@id": "urn:solid-server:default:SetupStorage" },
"source": {
"@id": "urn:solid-server:default:RootPodInitializer",
"@type": "AccountInitializer",
"accountStore": { "@id": "urn:solid-server:default:AccountStore" },
"passwordStore": { "@id": "urn:solid-server:default:PasswordStore" },
"podCreator": { "@id": "urn:solid-server:default:PodCreator" }
}
}
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Makes sure the root container exists and contains the necessary resources.",
@ -9,14 +9,13 @@
"storageValue": true,
"storage": { "@id": "urn:solid-server:default:SetupStorage" },
"source": {
"@id": "urn:solid-server:default:RootContainerInitializer",
"@type": "ContainerInitializer",
"args_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"args_path": "/",
"args_store": { "@id": "urn:solid-server:default:ResourceStore" },
"args_generator": {
"@id": "urn:solid-server:default:RootFolderGenerator",
"@type": "StaticFolderGenerator",
"templateFolder": "@css:templates/root/empty",
"resourcesGenerator": { "@id": "urn:solid-server:default:TemplatedResourcesGenerator" }
},
"args_storageKey": "rootInitialized",

View File

@ -0,0 +1,23 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Separate manager from the RegistrationHandler in case registration is disabled.",
"@id": "urn:solid-server:default:SeededPodRegistrationManager",
"@type": "RegistrationManager",
"args_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"args_webIdSuffix": "/profile/card#me",
"args_identifierGenerator": { "@id": "urn:solid-server:default:IdentifierGenerator" },
"args_ownershipValidator": { "@id": "urn:solid-server:auth:password:OwnershipValidator" },
"args_accountStore": { "@id": "urn:solid-server:auth:password:AccountStore" },
"args_podManager": { "@id": "urn:solid-server:default:PodManager" }
},
{
"comment": "Initializer that instantiates all the seeded accounts and pods.",
"@id": "urn:solid-server:default:SeededPodInitializer",
"@type": "SeededPodInitializer",
"registrationManager": { "@id": "urn:solid-server:default:SeededPodRegistrationManager" },
"configFilePath": { "@id": "urn:solid-server:default:variable:seededPodConfigJson" }
}
]
}

View File

@ -1,14 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Initializer that instantiates all the seeded accounts and pods.",
"@id": "urn:solid-server:default:SeededAccountInitializer",
"@type": "SeededAccountInitializer",
"accountStore": { "@id": "urn:solid-server:default:AccountStore" },
"passwordStore": { "@id": "urn:solid-server:default:PasswordStore" },
"podCreator": { "@id": "urn:solid-server:default:PodCreator" },
"configFilePath": { "@id": "urn:solid-server:default:variable:seedConfig" }
}
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Creates the server that starts listening for requests.",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Logs a warning if the base URL changes.",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Spawns the required amount of workers",

View File

@ -1,16 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"import": [
"css:config/app/init/migration/v6.json"
],
"@graph": [
{
"comment": "Handles all migration initializers.",
"@id": "urn:solid-server:default:MigrationInitializer",
"@type": "SequenceHandler",
"handlers": [
{ "@id": "urn:solid-server:default:V6MigrationHandler" }
]
}
]
}

View File

@ -1,104 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Handles migration of v6 internal data. In a conditional handler to prevent issues if something fails between migration and writing the new version.",
"@id": "urn:solid-server:default:V6MigrationHandler",
"@type": "ConditionalHandler",
"storageKey": "v6-migration",
"storageValue": true,
"storage": { "@id": "urn:solid-server:default:SetupStorage" },
"handleStorage": true,
"source": {
"@id": "urn:solid-server:default:V6MigrationInitializer",
"@type": "V6MigrationInitializer",
"versionKey": "current-server-version",
"setupStorage": { "@id": "urn:solid-server:default:V6MigrationSetupStorage" },
"accountStorage": { "@id": "urn:solid-server:default:V6MigrationAccountStorage" },
"clientCredentialsStorage": { "@id": "urn:solid-server:default:V6MigrationClientCredentialsStorage" },
"cleanupStorages": [
{ "@id": "urn:solid-server:default:V6MigrationAccountStorage" },
{ "@id": "urn:solid-server:default:V6MigrationClientCredentialsStorage" },
{ "@id": "urn:solid-server:default:V6MigrationForgotPasswordStorage" },
{ "@id": "urn:solid-server:default:V6MigrationKeyStorage" },
{ "@id": "urn:solid-server:default:V6MigrationAdapterStorage" },
{ "@id": "urn:solid-server:default:V6MigrationTokenStorage" },
{ "@id": "urn:solid-server:default:V6MigrationNotificationStorage" }
],
"newAccountStorage": { "@id": "urn:solid-server:default:AccountStorage" },
"newSetupStorage": { "@id": "urn:solid-server:default:SetupStorage" },
"skipConfirmation": { "@id": "urn:solid-server:default:variable:confirmMigration" }
}
},
{
"comment": "All storages changed so we need the old setup storage to correctly read the version key",
"@id": "urn:solid-server:default:V6MigrationSetupStorage",
"@type": "Base64EncodingStorage",
"source": {
"@type": "SingleContainerJsonStorage",
"source": { "@id": "urn:solid-server:default:ResourceStore_Backend" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"container": "/.internal/setup/"
}
},
{
"@id": "urn:solid-server:default:V6MigrationAccountStorage",
"@type": "Base64EncodingStorage",
"source": {
"@type": "SingleContainerJsonStorage",
"source": { "@id": "urn:solid-server:default:ResourceStore_Backend" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"container": "/.internal/accounts/"
}
},
{
"@id": "urn:solid-server:default:V6MigrationClientCredentialsStorage",
"@type": "Base64EncodingStorage",
"source": {
"@type": "SingleContainerJsonStorage",
"source": { "@id": "urn:solid-server:default:ResourceStore_Backend" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"container": "/.internal/accounts/credentials/"
}
},
{
"@id": "urn:solid-server:default:V6MigrationForgotPasswordStorage",
"@type": "SingleContainerJsonStorage",
"source": { "@id": "urn:solid-server:default:ResourceStore_Backend" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"container": "/.internal/forgot-password/"
},
{
"@id": "urn:solid-server:default:V6MigrationKeyStorage",
"@type": "SingleContainerJsonStorage",
"source": { "@id": "urn:solid-server:default:ResourceStore_Backend" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"container": "/.internal/idp/keys/"
},
{
"@id": "urn:solid-server:default:V6MigrationAdapterStorage",
"@type": "SingleContainerJsonStorage",
"source": { "@id": "urn:solid-server:default:ResourceStore_Backend" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"container": "/.internal/idp/adapter/"
},
{
"@id": "urn:solid-server:default:V6MigrationTokenStorage",
"@type": "SingleContainerJsonStorage",
"source": { "@id": "urn:solid-server:default:ResourceStore_Backend" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"container": "/.internal/idp/tokens/"
},
{
"@id": "urn:solid-server:default:V6MigrationNotificationStorage",
"@type": "SingleContainerJsonStorage",
"source": { "@id": "urn:solid-server:default:ResourceStore_Backend" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"container": "/.internal/notifications/"
}
]
}

View File

@ -1,21 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"import": [
"css:config/app/init/default.json"
],
"@graph": [
{
"comment": "Sets the root of the server to a static page.",
"@id": "urn:solid-server:default:StaticAssetHandler",
"@type": "StaticAssetHandler",
"assets": [
{
"@id": "urn:solid-server:default:RootStaticAsset",
"@type": "StaticAssetEntry",
"relativeUrl": "/",
"filePath": "@css:templates/root/static/index.html"
}
]
}
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/main/general/templates.json"
],
@ -37,7 +37,7 @@
{
"comment": "Finalizers that need to cleanup once no more data will be written to the backend should be added here.",
"@id": "urn:solid-server:default:CleanupFinalizer",
"@type": "SequenceHandler",
"@type":"SequenceHandler",
"handlers": [
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Template engine that finds the appropriate template engine to use based on the template extension.",
@ -17,14 +17,6 @@
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" }
}
]
},
{
"comment": "Renders the main template of all HTML pages. Other generated templates should be fed as input into this.",
"@id": "urn:solid-server:default:MainTemplateEngine",
"@type": "StaticTemplateEngine",
"templateEngine": { "@id": "urn:solid-server:default:TemplateEngine" },
"template": "@css:templates/main.html.ejs"
}
]
}

View File

@ -0,0 +1,10 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Completely disables the setup page.",
"@id": "urn:solid-server:default:SetupHandler",
"@type": "UnsupportedAsyncHandler"
}
]
}

View File

@ -0,0 +1,20 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Redirects all request to the setup.",
"@id": "urn:solid-server:default:SetupRedirectHandler",
"@type": "RedirectingHttpHandler",
"redirects": [
{
"RedirectingHttpHandler:_redirects_key": ".*",
"RedirectingHttpHandler:_redirects_value": "/setup"
}
],
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"targetExtractor": { "@id": "urn:solid-server:default:TargetExtractor" },
"responseWriter": { "@id": "urn:solid-server:default:ResponseWriter" },
"statusCode": 302
}
]
}

View File

@ -0,0 +1,70 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Handles everything related to the first-time server setup.",
"@id": "urn:solid-server:default:SetupParsingHandler",
"@type": "ParsingHttpHandler",
"args_requestParser": { "@id": "urn:solid-server:default:RequestParser" },
"args_errorHandler": { "@id": "urn:solid-server:default:ErrorHandler" },
"args_responseWriter": { "@id": "urn:solid-server:default:ResponseWriter" },
"args_operationHandler": {
"@id": "urn:solid-server:default:SetupHttpHandler",
"@type": "SetupHttpHandler",
"args_handler": {
"@type": "SetupHandler",
"args_initializer": { "@id": "urn:solid-server:default:SetupInitializer" },
"args_registrationManager": { "@id": "urn:solid-server:default:SetupRegistrationManager" }
},
"args_converter": { "@id": "urn:solid-server:default:RepresentationConverter" },
"args_storageKey": "setupCompleted-2.0",
"args_storage": { "@id": "urn:solid-server:default:SetupStorage" },
"args_templateEngine": {
"comment": "Renders the specific page and embeds it into the main HTML body.",
"@type": "ChainedTemplateEngine",
"renderedName": "htmlBody",
"engines": [
{
"comment": "Renders the main setup template.",
"@type": "StaticTemplateEngine",
"templateEngine": { "@id": "urn:solid-server:default:TemplateEngine" },
"template": "@css:templates/setup/index.html.ejs"
},
{
"comment": "Will embed the result of the first engine into the main HTML template.",
"@type": "StaticTemplateEngine",
"templateEngine": { "@id": "urn:solid-server:default:TemplateEngine" },
"template": "@css:templates/main.html.ejs"
}
]
}
}
},
{
"comment": "Separate manager from the RegistrationHandler in case registration is disabled.",
"@id": "urn:solid-server:default:SetupRegistrationManager",
"@type": "RegistrationManager",
"args_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"args_webIdSuffix": "/profile/card#me",
"args_identifierGenerator": { "@id": "urn:solid-server:default:IdentifierGenerator" },
"args_ownershipValidator": { "@id": "urn:solid-server:auth:password:OwnershipValidator" },
"args_accountStore": { "@id": "urn:solid-server:auth:password:AccountStore" },
"args_podManager": { "@id": "urn:solid-server:default:PodManager" }
},
{
"comment": "Separate initializer as we only want a simple one that sets the root .acl.",
"@id": "urn:solid-server:default:SetupInitializer",
"@type": "ContainerInitializer",
"args_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"args_path": "/",
"args_store": { "@id": "urn:solid-server:default:ResourceStore" },
"args_generator": {
"@type": "StaticFolderGenerator",
"templateFolder": "@css:templates/root/empty",
"resourcesGenerator": { "@id": "urn:solid-server:default:TemplatedResourcesGenerator" }
},
"args_storageKey": "rootInitialized",
"args_storage": { "@id": "urn:solid-server:default:SetupStorage" }
}
]
}

View File

@ -0,0 +1,23 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/setup/handlers/setup.json"
],
"@graph": [
{
"comment": "Combines both the redirect and the setup.",
"@id": "urn:solid-server:default:SetupHandler",
"@type": "ConditionalHandler",
"storageKey": "setupCompleted-2.0",
"storageValue": true,
"storage": { "@id": "urn:solid-server:default:SetupStorage" },
"source": {
"@type": "RouterHandler",
"args_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"args_targetExtractor": { "@id": "urn:solid-server:default:TargetExtractor" },
"args_allowedPathNames": [ "/setup" ],
"args_handler": { "@id": "urn:solid-server:default:SetupParsingHandler" }
}
}
]
}

View File

@ -0,0 +1,30 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/setup/handlers/redirect.json",
"css:config/app/setup/handlers/setup.json"
],
"@graph": [
{
"comment": "Combines both the redirect and the setup.",
"@id": "urn:solid-server:default:SetupHandler",
"@type": "ConditionalHandler",
"storageKey": "setupCompleted-2.0",
"storageValue": true,
"storage": { "@id": "urn:solid-server:default:SetupStorage" },
"source": {
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:SetupRedirectHandler" },
{
"@type": "RouterHandler",
"args_baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"args_targetExtractor": { "@id": "urn:solid-server:default:TargetExtractor" },
"args_allowedPathNames": [ "/setup" ],
"args_handler": { "@id": "urn:solid-server:default:SetupParsingHandler" }
}
]
}
}
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Extracts CLI arguments into a key/value object. Config and mainModulePath are only defined here so their description is returned.",
@ -105,11 +105,11 @@
},
{
"@type": "YargsParameter",
"name": "seedConfig",
"name": "seededPodConfigJson",
"options": {
"requiresArg": true,
"type": "string",
"describe": "Path to the file that will be used to seed accounts and pods."
"describe": "Path to the file that will be used to seed pods."
}
},
{
@ -121,14 +121,6 @@
"type": "number",
"describe": "Run the server in multithreaded mode using workers. (special values: -1: num_cores-1, 0: num_cores). Defaults to 1 (singlethreaded)"
}
},
{
"@type": "YargsParameter",
"name": "confirmMigration",
"options": {
"type": "boolean",
"describe": "Skips the confirmation prompts during migration from older versions."
}
}
],
"options": {

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/variables/cli/cli.json",
"css:config/app/variables/resolver/resolver.json"

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Converts an input key/value object into an object mapping values to Components.js variables",
@ -33,7 +33,7 @@
"CombinedShorthandResolver:_resolvers_value": {
"@type": "KeyExtractor",
"key": "socket",
"defaultValue": ""
"defaultValue" : ""
}
},
{
@ -68,10 +68,10 @@
}
},
{
"CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:seedConfig",
"CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:seededPodConfigJson",
"CombinedShorthandResolver:_resolvers_value": {
"@type": "AssetPathExtractor",
"key": "seedConfig"
"key": "seededPodConfigJson"
}
},
{
@ -81,14 +81,6 @@
"key": "workers",
"defaultValue": 1
}
},
{
"CombinedShorthandResolver:_resolvers_key": "urn:solid-server:default:variable:confirmMigration",
"CombinedShorthandResolver:_resolvers_value": {
"@type": "KeyExtractor",
"key": "confirmMigration",
"defaultValue": false
}
}
]
}

View File

@ -1,8 +1,9 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/initialize-intro.json",
"css:config/app/main/default.json",
"css:config/app/init/initialize-prefilled-root.json",
"css:config/app/setup/optional.json",
"css:config/app/variables/default.json",
"css:config/http/handler/default.json",
"css:config/http/middleware/default.json",
@ -12,9 +13,9 @@
"css:config/identity/access/public.json",
"css:config/identity/email/default.json",
"css:config/identity/handler/default.json",
"css:config/identity/oidc/default.json",
"css:config/identity/ownership/token.json",
"css:config/identity/pod/static.json",
"css:config/identity/registration/enabled.json",
"css:config/ldp/authentication/dpop-bearer.json",
"css:config/ldp/authorization/webacl.json",
"css:config/ldp/handler/default.json",
@ -23,7 +24,6 @@
"css:config/ldp/modes/default.json",
"css:config/storage/backend/memory.json",
"css:config/storage/key-value/resource-store.json",
"css:config/storage/location/root.json",
"css:config/storage/middleware/default.json",
"css:config/util/auxiliary/acl.json",
"css:config/util/identifiers/suffix.json",

View File

@ -1,20 +1,21 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/static-root.json",
"css:config/app/main/default.json",
"css:config/app/init/default.json",
"css:config/app/setup/required.json",
"css:config/app/variables/default.json",
"css:config/http/handler/default.json",
"css:config/http/middleware/default.json",
"css:config/http/notifications/all.json",
"css:config/http/notifications/websockets.json",
"css:config/http/server-factory/http.json",
"css:config/http/static/default.json",
"css:config/identity/access/public.json",
"css:config/identity/email/default.json",
"css:config/identity/handler/default.json",
"css:config/identity/oidc/default.json",
"css:config/identity/ownership/token.json",
"css:config/identity/pod/dynamic.json",
"css:config/identity/registration/enabled.json",
"css:config/ldp/authentication/dpop-bearer.json",
"css:config/ldp/authorization/webacl.json",
"css:config/ldp/handler/default.json",
@ -23,7 +24,6 @@
"css:config/ldp/modes/default.json",
"css:config/storage/backend/dynamic.json",
"css:config/storage/key-value/resource-store.json",
"css:config/storage/location/pod.json",
"css:config/storage/middleware/default.json",
"css:config/util/auxiliary/acl.json",
"css:config/util/identifiers/suffix.json",

View File

@ -1,20 +1,21 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/static-root.json",
"css:config/app/main/default.json",
"css:config/app/init/default.json",
"css:config/app/setup/required.json",
"css:config/app/variables/default.json",
"css:config/http/handler/default.json",
"css:config/http/middleware/default.json",
"css:config/http/notifications/all.json",
"css:config/http/notifications/websockets.json",
"css:config/http/static/default.json",
"css:config/identity/access/public.json",
"css:config/identity/email/default.json",
"css:config/identity/handler/default.json",
"css:config/identity/oidc/default.json",
"css:config/identity/ownership/token.json",
"css:config/identity/pod/static.json",
"css:config/identity/registration/enabled.json",
"css:config/ldp/authentication/dpop-bearer.json",
"css:config/ldp/authorization/webacl.json",
"css:config/ldp/handler/default.json",
@ -23,7 +24,6 @@
"css:config/ldp/modes/default.json",
"css:config/storage/backend/file.json",
"css:config/storage/key-value/resource-store.json",
"css:config/storage/location/pod.json",
"css:config/storage/middleware/default.json",
"css:config/util/auxiliary/acl.json",
"css:config/util/identifiers/suffix.json",

View File

@ -1,20 +1,21 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/static-root.json",
"css:config/app/main/default.json",
"css:config/app/init/default.json",
"css:config/app/setup/required.json",
"css:config/app/variables/default.json",
"css:config/http/handler/default.json",
"css:config/http/middleware/default.json",
"css:config/http/notifications/all.json",
"css:config/http/notifications/websockets.json",
"css:config/http/server-factory/http.json",
"css:config/http/static/default.json",
"css:config/identity/access/public.json",
"css:config/identity/email/default.json",
"css:config/identity/handler/default.json",
"css:config/identity/oidc/default.json",
"css:config/identity/ownership/token.json",
"css:config/identity/pod/static.json",
"css:config/identity/registration/enabled.json",
"css:config/ldp/authentication/dpop-bearer.json",
"css:config/ldp/authorization/acp.json",
"css:config/ldp/handler/default.json",
@ -23,7 +24,6 @@
"css:config/ldp/modes/default.json",
"css:config/storage/backend/file.json",
"css:config/storage/key-value/resource-store.json",
"css:config/storage/location/pod.json",
"css:config/storage/middleware/default.json",
"css:config/util/auxiliary/acr.json",
"css:config/util/identifiers/suffix.json",

View File

@ -1,20 +1,21 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/initialize-root.json",
"css:config/app/main/default.json",
"css:config/app/init/initialize-root.json",
"css:config/app/setup/disabled.json",
"css:config/app/variables/default.json",
"css:config/http/handler/default.json",
"css:config/http/middleware/default.json",
"css:config/http/notifications/all.json",
"css:config/http/notifications/websockets.json",
"css:config/http/server-factory/http.json",
"css:config/http/static/default.json",
"css:config/identity/access/public.json",
"css:config/identity/email/default.json",
"css:config/identity/handler/no-accounts.json",
"css:config/identity/oidc/default.json",
"css:config/identity/handler/default.json",
"css:config/identity/ownership/token.json",
"css:config/identity/pod/static.json",
"css:config/identity/registration/disabled.json",
"css:config/ldp/authentication/dpop-bearer.json",
"css:config/ldp/authorization/webacl.json",
"css:config/ldp/handler/default.json",
@ -23,7 +24,6 @@
"css:config/ldp/modes/default.json",
"css:config/storage/backend/file.json",
"css:config/storage/key-value/resource-store.json",
"css:config/storage/location/root.json",
"css:config/storage/middleware/default.json",
"css:config/util/auxiliary/acl.json",
"css:config/util/identifiers/suffix.json",
@ -37,7 +37,7 @@
{
"comment": [
"A Solid server that stores its resources on disk and uses WAC for authorization.",
"No registration and the root container is initialized to allow full access for everyone so make sure to change this."
"No setup is required and the root container is initialized to allow full access for everyone so make sure to change this."
]
}
]

View File

@ -1,51 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"import": [
"css:config/app/init/initialize-root-pod.json",
"css:config/app/main/default.json",
"css:config/app/variables/default.json",
"css:config/http/handler/default.json",
"css:config/http/middleware/default.json",
"css:config/http/notifications/all.json",
"css:config/http/server-factory/http.json",
"css:config/http/static/default.json",
"css:config/identity/access/public.json",
"css:config/identity/email/default.json",
"css:config/identity/handler/no-accounts-pods.json",
"css:config/identity/oidc/default.json",
"css:config/identity/ownership/token.json",
"css:config/identity/pod/static.json",
"css:config/ldp/authentication/dpop-bearer.json",
"css:config/ldp/authorization/webacl.json",
"css:config/ldp/handler/default.json",
"css:config/ldp/metadata-parser/default.json",
"css:config/ldp/metadata-writer/default.json",
"css:config/ldp/modes/default.json",
"css:config/storage/backend/file.json",
"css:config/storage/key-value/resource-store.json",
"css:config/storage/location/root.json",
"css:config/storage/middleware/default.json",
"css:config/util/auxiliary/acl.json",
"css:config/util/identifiers/suffix.json",
"css:config/util/index/default.json",
"css:config/util/logging/winston.json",
"css:config/util/representation-conversion/default.json",
"css:config/util/resource-locker/file.json",
"css:config/util/variables/default.json"
],
"@graph": [
{
"comment": [
"A Solid server that stores its resources on disk and uses WAC for authorization.",
"A pod will be created in the root with the email/password login defined here.",
"It is advised to immediately change this password after starting the server."
]
},
{
"@id": "urn:solid-server:default:RootPodInitializer",
"@type": "AccountInitializer",
"email": "test@example.com",
"password": "secret!"
}
]
}

View File

@ -1,20 +1,21 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/app/init/static-root.json",
"css:config/app/main/default.json",
"css:config/app/init/default.json",
"css:config/app/setup/required.json",
"css:config/app/variables/default.json",
"css:config/http/handler/default.json",
"css:config/http/middleware/default.json",
"css:config/http/notifications/all.json",
"css:config/http/notifications/websockets.json",
"css:config/http/server-factory/http.json",
"css:config/http/static/default.json",
"css:config/identity/access/public.json",
"css:config/identity/email/default.json",
"css:config/identity/handler/default.json",
"css:config/identity/oidc/default.json",
"css:config/identity/ownership/token.json",
"css:config/identity/pod/static.json",
"css:config/identity/registration/enabled.json",
"css:config/ldp/authentication/dpop-bearer.json",
"css:config/ldp/authorization/webacl.json",
"css:config/ldp/handler/default.json",
@ -23,7 +24,6 @@
"css:config/ldp/modes/default.json",
"css:config/storage/backend/file.json",
"css:config/storage/key-value/resource-store.json",
"css:config/storage/location/pod.json",
"css:config/storage/middleware/default.json",
"css:config/util/auxiliary/acl.json",
"css:config/util/identifiers/suffix.json",

View File

@ -22,18 +22,14 @@ Determines how notifications should be sent out from the server when resources c
* *all*: Supports all available notification types of the Solid Notifications protocol
[specification](https://solidproject.org/TR/notifications-protocol).
Currently, this includes WebhookChannel2023, WebSocketChannel2023 and StreamingHTTPChannel2023.
Currently, this includes WebHookSubscription2021 and WebSocketSubscription2021.
* *disabled*: No notifications are sent out.
* *legacy-websocket*: Follows the legacy Solid WebSocket
[specification](https://github.com/solid/solid-spec/blob/master/api-websockets.md).
Will be removed in future versions.
* *new-old-websockets.json*: Support for both the legacy Solid Websockets and the new WebSocketChannel2023.
* *streaming-http*: Follows the StreamingHTTPChannel2023
[specification](https://solid.github.io/notifications/streaming-http-channel-2023) draft.
* *webhooks*: Follows the WebhookChannel2023
[specification](https://solid.github.io/notifications/webhook-channel-2023) draft.
* *websockets*: Follows the WebSocketChannel2023
[specification](https://solid.github.io/notifications/websocket-channel-2023).
* *webhooks*: Follows the WebHookSubscription2021
[specification](https://github.com/solid/notifications/blob/main/webhook-subscription-2021.md) draft.
* *websockets*: Follows the WebSocketSubscription2021
[specification](https://solidproject.org/TR/websocket-subscription-2021).
## Server-Factory

View File

@ -1,6 +1,8 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/handler/handlers/notifications.json",
"css:config/http/handler/handlers/oidc.json",
"css:config/http/handler/handlers/storage-description.json"
],
"@graph": [
@ -11,10 +13,10 @@
"handlers": [
{ "@id": "urn:solid-server:default:Middleware" },
{
"@id": "urn:solid-server:default:BaseHttpHandler",
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:StaticAssetHandler" },
{ "@id": "urn:solid-server:default:SetupHandler" },
{ "@id": "urn:solid-server:default:OidcHandler" },
{ "@id": "urn:solid-server:default:NotificationHttpHandler" },
{ "@id": "urn:solid-server:default:StorageDescriptionHandler" },

View File

@ -0,0 +1,26 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server:default:NotificationHttpHandler",
"@type": "RouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"targetExtractor": { "@id": "urn:solid-server:default:TargetExtractor" },
"allowedPathNames": [ "^/.notifications/" ],
"handler": { "@id": "urn:solid-server:default:NotificationParsingHandler" }
},
{
"@id": "urn:solid-server:default:NotificationParsingHandler",
"@type": "ParsingHttpHandler",
"requestParser": { "@id": "urn:solid-server:default:RequestParser" },
"errorHandler": { "@id": "urn:solid-server:default:ErrorHandler" },
"responseWriter": { "@id": "urn:solid-server:default:ResponseWriter" },
"operationHandler": {
"comment": "New notification subscription types should be added here to allow subscriptions.",
"@id": "urn:solid-server:default:NotificationTypeHandler",
"@type": "WaterfallHandler",
"handlers": [ ]
}
}
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Routes all OIDC related requests to the OIDC library.",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Example handler to configure redirect patterns.",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "The relative path appended to a storage container URL to find its description resource.",
@ -18,18 +18,14 @@
"requestParser": { "@id": "urn:solid-server:default:RequestParser" },
"errorHandler": { "@id": "urn:solid-server:default:ErrorHandler" },
"responseWriter": { "@id": "urn:solid-server:default:ResponseWriter" },
"operationHandler": {
"comment": "Converts outgoing responses based on the user preferences",
"@type": "ConvertingOperationHttpHandler",
"converter": { "@id": "urn:solid-server:default:RepresentationConverter" },
"operationHandler": {
"@type": "StorageDescriptionHandler",
"store": { "@id": "urn:solid-server:default:ResourceStore" },
"path": { "@id": "urn:solid-server:default:variable:storageDescriptionPath" },
"converter": { "@id": "urn:solid-server:default:RepresentationConverter" },
"describer": { "@id": "urn:solid-server:default:StorageDescriber" }
}
}
}
},
{
"comment": "Combines the output of all storage describers.",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/handler/handlers/storage-description.json"
],
@ -11,10 +11,10 @@
"handlers": [
{ "@id": "urn:solid-server:default:Middleware" },
{
"@id": "urn:solid-server:default:BaseHttpHandler",
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:StaticAssetHandler" },
{ "@id": "urn:solid-server:default:SetupHandler" },
{ "@id": "urn:solid-server:default:StorageDescriptionHandler" },
{ "@id": "urn:solid-server:default:LdpHandler" }
]

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/middleware/handlers/constant-headers.json",
"css:config/http/middleware/handlers/cors.json"

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Adds several constant headers.",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Adds all the necessary CORS headers.",
@ -21,7 +21,6 @@
"Accept-Post",
"Accept-Put",
"Allow",
"Content-Range",
"ETag",
"Last-Modified",
"Link",

View File

@ -1,15 +1,15 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/notifications/base/description.json",
"css:config/http/notifications/base/handler.json",
"css:config/http/notifications/base/http.json",
"css:config/http/notifications/base/listener.json",
"css:config/http/notifications/base/storage.json",
"css:config/http/notifications/streaming-http/http.json",
"css:config/http/notifications/websockets/description.json",
"css:config/http/notifications/websockets/handler.json",
"css:config/http/notifications/websockets/http.json",
"css:config/http/notifications/websockets/subscription.json",
"css:config/http/notifications/webhooks/description.json",
"css:config/http/notifications/webhooks/handler.json",
"css:config/http/notifications/webhooks/routes.json",
"css:config/http/notifications/webhooks/subscription.json"

View File

@ -1,30 +1,18 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "New notification subscription types should add a handler containing their descriptions so they can be discovered.",
"@id": "urn:solid-server:default:StorageDescriber",
"@type": "ArrayUnionHandler",
"handlers": [
{
"comment": "New notification subscription types should add a NotificationChannelType here so they can be discovered.",
"@id": "urn:solid-server:default:NotificationDescriber",
"@type": "NotificationDescriber",
"converter": { "@id": "urn:solid-server:default:RepresentationConverter" },
"subscriptions": [
]
}
]
"handlers": [ ]
},
{
"comment": "The root URL of all Notification subscription routes.",
"@id": "urn:solid-server:default:NotificationRoute",
"@type": "RelativePathInteractionRoute",
"base": {
"@type": "AbsolutePathInteractionRoute",
"path": { "@id": "urn:solid-server:default:variable:baseUrl" }
},
"base": { "@id": "urn:solid-server:default:variable:baseUrl" },
"relativePath": "/.notifications/"
}
]

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Generates the Notification objects and caches them based on the topic.",
@ -13,15 +13,11 @@
"@type": "WaterfallHandler",
"handlers": [
{ "@type": "DeleteNotificationGenerator" },
{
"@type": "AddRemoveNotificationGenerator",
"store": { "@id": "urn:solid-server:default:ResourceStore" },
"eTagHandler": { "@id": "urn:solid-server:default:ETagHandler" }
},
{
"@type": "ActivityNotificationGenerator",
"store": { "@id": "urn:solid-server:default:ResourceStore" },
"eTagHandler": { "@id": "urn:solid-server:default:ETagHandler" }
"store": {
"@id": "urn:solid-server:default:ResourceStore"
}
}
]
}

View File

@ -1,58 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server:default:NotificationHttpHandler",
"@type": "RouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"targetExtractor": { "@id": "urn:solid-server:default:TargetExtractor" },
"allowedPathNames": [ "^/.notifications/" ],
"handler": { "@id": "urn:solid-server:default:NotificationParsingHandler" }
},
{
"@id": "urn:solid-server:default:NotificationParsingHandler",
"@type": "ParsingHttpHandler",
"requestParser": { "@id": "urn:solid-server:default:RequestParser" },
"errorHandler": { "@id": "urn:solid-server:default:ErrorHandler" },
"responseWriter": { "@id": "urn:solid-server:default:ResponseWriter" },
"operationHandler": {
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:NotificationReadWriteHandler" },
{ "@id": "urn:solid-server:default:NotificationDeleteHandler" }
]
}
},
{
"comment": "Handles reading and writing notification subscriptions and channels.",
"@id": "urn:solid-server:default:NotificationReadWriteHandler",
"@type": "OperationRouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"allowedMethods": [ "HEAD", "GET", "POST" ],
"handler": {
"comment": "Converts outgoing responses based on the user preferences",
"@type": "ConvertingOperationHttpHandler",
"converter": { "@id": "urn:solid-server:default:RepresentationConverter" },
"operationHandler": {
"comment": "New notification subscription types should be added here to allow subscriptions.",
"@id": "urn:solid-server:default:NotificationTypeHandler",
"@type": "WaterfallHandler",
"handlers": [ ]
}
}
},
{
"comment": "Handles deleting notification channels.",
"@id": "urn:solid-server:default:NotificationDeleteHandler",
"@type": "OperationRouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"allowedMethods": [ "DELETE" ],
"handler": {
"@type": "NotificationUnsubscriber",
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" }
}
}
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Listens to the activities emitted by the MonitoringStore.",
@ -20,7 +20,7 @@
"comment": "The ListeningActivityHandler is added to the list of Initializers so Components.js finds and instantiates it.",
"@id": "urn:solid-server:default:PrimaryParallelInitializer",
"@type": "ParallelHandler",
"handlers": [{ "@id": "urn:solid-server:default:ListeningActivityHandler" }]
"handlers": [ { "@id": "urn:solid-server:default:ListeningActivityHandler" } ]
}
]
}

View File

@ -1,13 +1,13 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Storage to be used to keep track of subscriptions.",
"@id": "urn:solid-server:default:SubscriptionStorage",
"@type": "KeyValueChannelStorage",
"@type": "KeyValueSubscriptionStorage",
"locker": { "@id": "urn:solid-server:default:ResourceLocker" },
"storage": {
"@type": "ContainerPathStorage",
"@type": "EncodingPathStorage",
"relativePath": "/notifications/",
"source": { "@id": "urn:solid-server:default:KeyValueStorage" }
}

View File

@ -1,10 +1,8 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Disables notification routing.",
"@id": "urn:solid-server:default:NotificationHttpHandler",
"@type": "UnsupportedAsyncHandler"
"comment": "Disable notifications by not attaching a notification listener."
}
]
}

View File

@ -1,20 +1,14 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Disables notification routing.",
"@id": "urn:solid-server:default:NotificationHttpHandler",
"@type": "UnsupportedAsyncHandler"
},
{
"@id": "urn:solid-server:default:WebSocketHandler",
"@type": "WaterfallHandler",
"@id": "urn:solid-server:default:ServerConfigurator",
"@type": "ParallelHandler",
"handlers": [
{
"comment": "Catches the server upgrade events and handles the WebSocket connections.",
"@type": "UnsecureWebSocketsProtocol",
"source": { "@id": "urn:solid-server:default:ResourceStore" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" }
"source": { "@id": "urn:solid-server:default:ResourceStore" }
}
]
},

View File

@ -1,38 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"import": [
"css:config/http/notifications/base/description.json",
"css:config/http/notifications/base/handler.json",
"css:config/http/notifications/base/http.json",
"css:config/http/notifications/base/listener.json",
"css:config/http/notifications/base/storage.json",
"css:config/http/notifications/websockets/handler.json",
"css:config/http/notifications/websockets/http.json",
"css:config/http/notifications/websockets/subscription.json"
],
"@graph": [
{
"@id": "urn:solid-server:default:WebSocketHandler",
"@type": "WaterfallHandler",
"handlers": [
{
"comment": "Catches the server upgrade events and handles the WebSocket connections.",
"@type": "UnsecureWebSocketsProtocol",
"source": { "@id": "urn:solid-server:default:ResourceStore" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" }
}
]
},
{
"@id": "urn:solid-server:default:ParallelMiddleware",
"@type": "ParallelHandler",
"handlers": [
{
"comment": "Advertises the websocket connection.",
"@type": "WebSocketAdvertiser",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" }
}
]
}
]
}

View File

@ -1,15 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"import": [
"css:config/http/notifications/base/description.json",
"css:config/http/notifications/base/handler.json",
"css:config/http/notifications/base/http.json",
"css:config/http/notifications/base/storage.json",
"css:config/http/notifications/streaming-http/http.json"
],
"@graph": [
{
"comment": "All the relevant components are made in the specific imports seen above."
}
]
}

View File

@ -1,87 +0,0 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server:default:StreamingHTTP2023Route",
"@type": "RelativePathInteractionRoute",
"base": { "@id": "urn:solid-server:default:NotificationRoute" },
"relativePath": "/StreamingHTTPChannel2023/"
},
{
"comment": "Creates updatesViaStreamingHttp2023 Link relations",
"@id": "urn:solid-server:default:StreamingHttpMetadataWriter",
"@type": "StreamingHttpMetadataWriter",
"route": { "@id": "urn:solid-server:default:StreamingHTTP2023Route" }
},
{
"comment": "Allows discovery of the corresponding streaming HTTP channel",
"@id": "urn:solid-server:default:MetadataWriter",
"@type": "ParallelHandler",
"handlers": [
{ "@id": "urn:solid-server:default:StreamingHttpMetadataWriter" }
]
},
{
"comment": "Handles the request targeting a StreamingHTTPChannel2023 receiveFrom endpoint.",
"@id": "urn:solid-server:default:StreamingHttp2023Router",
"@type": "OperationRouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"allowedMethods": [ "GET" ],
"allowedPathNames": [ "/StreamingHTTPChannel2023/" ],
"handler": {
"@id": "urn:solid-server:default:StreamingHttp2023RequestHandler",
"@type": "StreamingHttpRequestHandler",
"streamMap": { "@id": "urn:solid-server:default:StreamingHttpMap" },
"route": { "@id": "urn:solid-server:default:StreamingHTTP2023Route" },
"generator": { "@id": "urn:solid-server:default:BaseNotificationGenerator" },
"serializer": { "@id": "urn:solid-server:default:BaseNotificationSerializer" },
"credentialsExtractor": { "@id": "urn:solid-server:default:CredentialsExtractor" },
"permissionReader": { "@id": "urn:solid-server:default:PermissionReader" },
"authorizer": { "@id": "urn:solid-server:default:Authorizer" }
}
},
{
"comment": "Add the router to notification type handler",
"@id": "urn:solid-server:default:NotificationTypeHandler",
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:StreamingHttp2023Router" }
]
},
{
"comment": "Opened response streams will be stored in this Map.",
"@id": "urn:solid-server:default:StreamingHttpMap",
"@type": "StreamingHttpMap"
},
{
"comment": "Emits serialized notifications through Streaming HTTP.",
"@id": "urn:solid-server:default:StreamingHttp2023Emitter",
"@type": "StreamingHttp2023Emitter",
"streamMap": { "@id": "urn:solid-server:default:StreamingHttpMap" }
},
{
"comment": "Listens to the activities emitted by the MonitoringStore.",
"@id": "urn:solid-server:default:StreamingHttpListeningActivityHandler",
"@type": "StreamingHttpListeningActivityHandler",
"emitter": { "@id": "urn:solid-server:default:ResourceStore" },
"streamMap": { "@id": "urn:solid-server:default:StreamingHttpMap" },
"source": {
"comment": "Handles the generation and serialization of notifications for StreamingHTTPChannel2023",
"@id": "urn:solid-server:default:StreamingHttpNotificationHandler",
"@type": "ComposedNotificationHandler",
"generator": { "@id": "urn:solid-server:default:BaseNotificationGenerator" },
"serializer": { "@id": "urn:solid-server:default:BaseNotificationSerializer" },
"emitter": { "@id": "urn:solid-server:default:StreamingHttp2023Emitter" },
"eTagHandler": { "@id": "urn:solid-server:default:ETagHandler" }
}
},
{
"comment": "Add the activity handler to the primary initializer",
"@id": "urn:solid-server:default:PrimaryParallelInitializer",
"@type": "ParallelHandler",
"handlers": [
{ "@id": "urn:solid-server:default:StreamingHttpListeningActivityHandler" }
]
}
]
}

View File

@ -1,11 +1,11 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/notifications/base/description.json",
"css:config/http/notifications/base/handler.json",
"css:config/http/notifications/base/http.json",
"css:config/http/notifications/base/listener.json",
"css:config/http/notifications/base/storage.json",
"css:config/http/notifications/webhooks/description.json",
"css:config/http/notifications/webhooks/handler.json",
"css:config/http/notifications/webhooks/routes.json",
"css:config/http/notifications/webhooks/subscription.json"

View File

@ -0,0 +1,18 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server:default:StorageDescriber",
"@type": "ArrayUnionHandler",
"handlers": [
{
"comment": "Handles the storage description triples used for discovery of a WebHookSubscription2021 endpoint.",
"@type": "WebHookDescriber",
"route": { "@id": "urn:solid-server:default:WebHookRoute" },
"relative": "#webhookNotification",
"webIdRoute": { "@id": "urn:solid-server:default:WebHookWebIdRoute" }
}
]
}
]
}

View File

@ -1,25 +1,24 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Handles the generation and serialization of notifications for WebhookChannel2023.",
"@id": "urn:solid-server:default:WebhookNotificationHandler",
"comment": "Handles the generation and serialization of notifications for WebHookSubscription2021.",
"@id": "urn:solid-server:default:WebHookNotificationHandler",
"@type": "TypedNotificationHandler",
"type": "http://www.w3.org/ns/solid/notifications#WebhookChannel2023",
"type": "WebHookSubscription2021",
"source": {
"@type": "ComposedNotificationHandler",
"generator": { "@id": "urn:solid-server:default:BaseNotificationGenerator" },
"serializer": { "@id": "urn:solid-server:default:BaseNotificationSerializer" },
"emitter": { "@id": "urn:solid-server:default:WebhookEmitter" },
"eTagHandler": { "@id": "urn:solid-server:default:ETagHandler" }
"emitter": { "@id": "urn:solid-server:default:WebHookEmitter" }
}
},
{
"comment": "Emits serialized notifications through HTTP requests to the Webhook.",
"@id": "urn:solid-server:default:WebhookEmitter",
"@type": "WebhookEmitter",
"comment": "Emits serialized notifications through HTTP requests to the WebHook.",
"@id": "urn:solid-server:default:WebHookEmitter",
"@type": "WebHookEmitter",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"webIdRoute": { "@id": "urn:solid-server:default:WebhookWebIdRoute" },
"webIdRoute": { "@id": "urn:solid-server:default:WebHookWebIdRoute" },
"jwkGenerator": { "@id": "urn:solid-server:default:JwkGenerator" }
},
@ -27,8 +26,8 @@
"@id": "urn:solid-server:default:NotificationHandler",
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:WebhookNotificationHandler" }
{ "@id": "urn:solid-server:default:WebHookNotificationHandler" }
]
}
},
]
}

View File

@ -1,28 +1,47 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server:default:WebhookRoute",
"@id": "urn:solid-server:default:WebHookRoute",
"@type": "RelativePathInteractionRoute",
"base": { "@id": "urn:solid-server:default:NotificationRoute" },
"relativePath": "/WebhookChannel2023/"
"relativePath": "/WebHookSubscription2021/"
},
{
"@id": "urn:solid-server:default:WebhookWebIdRoute",
"@id": "urn:solid-server:default:WebHookUnsubscribeRoute",
"@type": "RelativePathInteractionRoute",
"base": { "@id": "urn:solid-server:default:WebhookRoute" },
"relativePath": "/webId",
"ensureSlash": false
"base": { "@id": "urn:solid-server:default:WebHookRoute" },
"relativePath": "/unsubscribe/"
},
{
"@id": "urn:solid-server:default:WebHookWebIdRoute",
"@type": "RelativePathInteractionRoute",
"base": { "@id": "urn:solid-server:default:WebHookRoute" },
"relativePath": "/webId"
},
{
"comment": "Handles the WebhookChannel2023 WebID.",
"@id": "urn:solid-server:default:WebhookWebId",
"comment": "Handles unsubscribing from a WebHookSubscription2021.",
"@id": "urn:solid-server:default:WebHookUnsubscriber",
"@type": "OperationRouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"allowedPathNames": [ "/WebhookChannel2023/webId$" ],
"allowedMethods": [ "DELETE" ],
"allowedPathNames": [ "/WebHookSubscription2021/unsubscribe/" ],
"handler": {
"@type": "WebhookWebId",
"@type": "WebHookUnsubscriber",
"credentialsExtractor": { "@id": "urn:solid-server:default:CredentialsExtractor" },
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" }
}
},
{
"comment": "Handles the WebHookSubscription2021 WebID.",
"@id": "urn:solid-server:default:WebHookWebId",
"@type": "OperationRouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"allowedPathNames": [ "/WebHookSubscription2021/webId" ],
"handler": {
"@type": "WebHookWebId",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" }
}
},
@ -31,8 +50,9 @@
"@id": "urn:solid-server:default:NotificationTypeHandler",
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:WebhookRouter" },
{ "@id": "urn:solid-server:default:WebhookWebId" }
{ "@id": "urn:solid-server:default:WebHookSubscriber" },
{ "@id": "urn:solid-server:default:WebHookUnsubscriber" },
{ "@id": "urn:solid-server:default:WebHookWebId" }
]
}
]

View File

@ -1,45 +1,32 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Handles the subscriptions targeting a WebhookChannel2023.",
"@id": "urn:solid-server:default:WebhookRouter",
"comment": "Handles the subscriptions targeting a WebHookSubscription2021.",
"@id": "urn:solid-server:default:WebHookSubscriber",
"@type": "OperationRouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"allowedMethods": [ "HEAD", "GET", "POST" ],
"allowedPathNames": [ "/WebhookChannel2023/$" ],
"allowedMethods": [ "POST" ],
"allowedPathNames": [ "/WebHookSubscription2021/$" ],
"handler": {
"@id": "urn:solid-server:default:WebhookSubscriber",
"@type": "NotificationSubscriber",
"channelType": { "@id": "urn:solid-server:default:WebhookChannel2023Type" },
"converter": { "@id": "urn:solid-server:default:RepresentationConverter" },
"subscriptionType": { "@id": "urn:solid-server:default:WebHookSubscription2021" },
"credentialsExtractor": { "@id": "urn:solid-server:default:CredentialsExtractor" },
"permissionReader": { "@id": "urn:solid-server:default:PermissionReader" },
"authorizer": { "@id": "urn:solid-server:default:Authorizer" },
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" }
"authorizer": { "@id": "urn:solid-server:default:Authorizer" }
}
},
{
"comment": "Contains all the metadata relevant for a WebhookChannel2023.",
"@id": "urn:solid-server:default:WebhookChannel2023Type",
"@type": "WebhookChannel2023Type",
"route": { "@id": "urn:solid-server:default:WebhookRoute" },
"webIdRoute": { "@id": "urn:solid-server:default:WebhookWebIdRoute" },
"comment": "Contains all the metadata relevant for a WebHookSubscription2021.",
"@id": "urn:solid-server:default:WebHookSubscription2021",
"@type": "WebHookSubscription2021",
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" },
"unsubscribeRoute": { "@id": "urn:solid-server:default:WebHookUnsubscribeRoute" },
"stateHandler": {
"@type": "BaseStateHandler",
"handler": { "@id": "urn:solid-server:default:WebhookNotificationHandler" },
"handler": { "@id": "urn:solid-server:default:WebHookNotificationHandler" },
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" }
}
},
{
"@id": "urn:solid-server:default:NotificationDescriber",
"@type": "NotificationDescriber",
"subscriptions": [
{
"@id": "urn:solid-server:default:WebhookChannel2023Type"
}
]
}
]
}

View File

@ -1,11 +1,11 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/notifications/base/description.json",
"css:config/http/notifications/base/handler.json",
"css:config/http/notifications/base/http.json",
"css:config/http/notifications/base/listener.json",
"css:config/http/notifications/base/storage.json",
"css:config/http/notifications/websockets/description.json",
"css:config/http/notifications/websockets/handler.json",
"css:config/http/notifications/websockets/http.json",
"css:config/http/notifications/websockets/subscription.json"

View File

@ -0,0 +1,18 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server:default:StorageDescriber",
"@type": "ArrayUnionHandler",
"handlers": [
{
"comment": "Handles the storage description triples used for discovery of a WebSocketSubscription2021 endpoint.",
"@type": "NotificationDescriber",
"route": { "@id": "urn:solid-server:default:WebSocket2021Route" },
"relative": "#websocketNotification",
"type": "http://www.w3.org/ns/solid/notifications#WebSocketSubscription2021"
}
]
}
]
}

View File

@ -1,23 +1,22 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Handles the generation and serialization of notifications for WebSocketChannel2023.",
"@id": "urn:solid-server:default:WebSocket2023NotificationHandler",
"comment": "Handles the generation and serialization of notifications for WebSocketSubscription2021.",
"@id": "urn:solid-server:default:WebSocket2021NotificationHandler",
"@type": "TypedNotificationHandler",
"type": "http://www.w3.org/ns/solid/notifications#WebSocketChannel2023",
"type": "WebSocketSubscription2021",
"source": {
"@type": "ComposedNotificationHandler",
"generator": { "@id": "urn:solid-server:default:BaseNotificationGenerator" },
"serializer": { "@id": "urn:solid-server:default:BaseNotificationSerializer" },
"emitter": { "@id": "urn:solid-server:default:WebSocket2023Emitter" },
"eTagHandler": { "@id": "urn:solid-server:default:ETagHandler" }
"emitter": { "@id": "urn:solid-server:default:WebSocket2021Emitter" }
}
},
{
"comment": "Emits serialized notifications through WebSockets.",
"@id": "urn:solid-server:default:WebSocket2023Emitter",
"@type": "WebSocket2023Emitter",
"@id": "urn:solid-server:default:WebSocket2021Emitter",
"@type": "WebSocket2021Emitter",
"socketMap": { "@id": "urn:solid-server:default:WebSocketMap" }
},
@ -25,7 +24,7 @@
"@id": "urn:solid-server:default:NotificationHandler",
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:WebSocket2023NotificationHandler" }
{ "@id": "urn:solid-server:default:WebSocket2021NotificationHandler" }
]
}
]

View File

@ -1,17 +1,17 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Catches newly opened WebSockets and verifies if they belong to a subscription.",
"@id": "urn:solid-server:default:WebSocket2023Listener",
"@type": "WebSocket2023Listener",
"@id": "urn:solid-server:default:WebSocket2021Listener",
"@type": "WebSocket2021Listener",
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" },
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"route": { "@id": "urn:solid-server:default:WebSocket2021Route" },
"handler": {
"@type": "SequenceHandler",
"handlers": [
{ "@id": "urn:solid-server:default:WebSocket2023Storer" },
{ "@id": "urn:solid-server:default:WebSocket2023StateHandler" }
{ "@id": "urn:solid-server:default:WebSocket2021Storer" },
{ "@id": "urn:solid-server:default:WebSocket2021StateHandler" }
]
}
},
@ -22,24 +22,24 @@
},
{
"comment": "Stores the opened WebSockets for reuse.",
"@id": "urn:solid-server:default:WebSocket2023Storer",
"@type": "WebSocket2023Storer",
"@id": "urn:solid-server:default:WebSocket2021Storer",
"@type": "WebSocket2021Storer",
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" },
"socketMap": { "@id": "urn:solid-server:default:WebSocketMap" }
},
{
"comment": "Handles the state feature of a WebSocketChannel2023 subscription.",
"@id": "urn:solid-server:default:WebSocket2023StateHandler",
"comment": "Handles the state feature of a WebSocketSubscription2021 subscription.",
"@id": "urn:solid-server:default:WebSocket2021StateHandler",
"@type": "BaseStateHandler",
"handler": { "@id": "urn:solid-server:default:WebSocket2023NotificationHandler" },
"handler": { "@id": "urn:solid-server:default:WebSocket2021NotificationHandler" },
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" }
},
{
"@id": "urn:solid-server:default:WebSocketHandler",
"@type": "WaterfallHandler",
"@id": "urn:solid-server:default:ServerConfigurator",
"@type": "ParallelHandler",
"handlers": [
{ "@id": "urn:solid-server:default:WebSocket2023Listener" }
{ "@id": "urn:solid-server:default:WebSocket2021Listener" }
]
}
]

View File

@ -1,52 +1,40 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Handles the subscriptions targeting a WebSocketChannel2023.",
"@id": "urn:solid-server:default:WebSocket2023Router",
"comment": "Handles the subscriptions targeting a WebSocketSubscription2021.",
"@id": "urn:solid-server:default:WebSocket2021Subscriber",
"@type": "OperationRouterHandler",
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"allowedMethods": [ "HEAD", "GET", "POST" ],
"allowedPathNames": [ "/WebSocketChannel2023/$" ],
"allowedMethods": [ "POST" ],
"allowedPathNames": [ "/WebSocketSubscription2021/" ],
"handler": {
"@id": "urn:solid-server:default:WebSocket2023Subscriber",
"@type": "NotificationSubscriber",
"channelType": { "@id": "urn:solid-server:default:WebSocketChannel2023Type" },
"converter": { "@id": "urn:solid-server:default:RepresentationConverter" },
"subscriptionType": { "@id": "urn:solid-server:default:WebSocketSubscription2021" },
"credentialsExtractor": { "@id": "urn:solid-server:default:CredentialsExtractor" },
"permissionReader": { "@id": "urn:solid-server:default:PermissionReader" },
"authorizer": { "@id": "urn:solid-server:default:Authorizer" },
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" }
"authorizer": { "@id": "urn:solid-server:default:Authorizer" }
}
},
{
"@id": "urn:solid-server:default:WebSocket2023Route",
"@id": "urn:solid-server:default:WebSocket2021Route",
"@type": "RelativePathInteractionRoute",
"base": { "@id": "urn:solid-server:default:NotificationRoute" },
"relativePath": "/WebSocketChannel2023/"
"relativePath": "/WebSocketSubscription2021/"
},
{
"comment": "Contains all the metadata relevant for a WebSocketChannel2023.",
"@id": "urn:solid-server:default:WebSocketChannel2023Type",
"@type": "WebSocketChannel2023Type",
"route": { "@id": "urn:solid-server:default:WebSocket2023Route" }
"comment": "Contains all the metadata relevant for a WebSocketSubscription2021.",
"@id": "urn:solid-server:default:WebSocketSubscription2021",
"@type": "WebSocketSubscription2021",
"storage": { "@id": "urn:solid-server:default:SubscriptionStorage" },
"route": { "@id": "urn:solid-server:default:WebSocket2021Route" }
},
{
"@id": "urn:solid-server:default:NotificationTypeHandler",
"@type": "WaterfallHandler",
"handlers": [
{ "@id": "urn:solid-server:default:WebSocket2023Router" }
]
},
{
"@id": "urn:solid-server:default:NotificationDescriber",
"@type": "NotificationDescriber",
"subscriptions": [
{
"@id": "urn:solid-server:default:WebSocketChannel2023Type"
}
{ "@id": "urn:solid-server:default:WebSocket2021Subscriber" }
]
}
]

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server:default:ServerConfigurator",
@ -11,16 +11,6 @@
"@type": "HandlerServerConfigurator",
"handler": { "@id": "urn:solid-server:default:HttpHandler" },
"showStackTrace": { "@id": "urn:solid-server:default:variable:showStackTrace" }
},
{
"comment": "Handles all WebSocket connections to the server.",
"@id": "urn:solid-server:default:WebSocketServerConfigurator",
"@type": "WebSocketServerConfigurator",
"handler": {
"@id": "urn:solid-server:default:WebSocketHandler",
"@type": "WaterfallHandler",
"handlers": []
}
}
]
}

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/server-factory/configurator/default.json"
],

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/server-factory/configurator/default.json"
],

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"import": [
"css:config/http/server-factory/configurator/default.json",
"css:config/http/server-factory/https/cli.json",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"@id": "urn:solid-server-app-setup:default:CliExtractor",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Adds resolvers to assign the HTTPS CLI values to the Components.js variables.",

View File

@ -1,5 +1,5 @@
{
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^7.0.0/components/context.jsonld",
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^6.0.0/components/context.jsonld",
"@graph": [
{
"comment": "Servers static files on fixed URLs.",
@ -9,35 +9,26 @@
"baseUrl": { "@id": "urn:solid-server:default:variable:baseUrl" },
"assets": [
{
"@id": "urn:solid-server:default:FaviconStaticAsset",
"@type": "StaticAssetEntry",
"relativeUrl": "/favicon.ico",
"filePath": "@css:templates/images/favicon.ico"
"StaticAssetHandler:_assets_key": "/favicon.ico",
"StaticAssetHandler:_assets_value": "@css:templates/images/favicon.ico"
},
{
"@id": "urn:solid-server:default:StylesStaticAsset",
"@type": "StaticAssetEntry",
"relativeUrl": "/.well-known/css/styles/",
"filePath": "@css:templates/styles/"
"StaticAssetHandler:_assets_key": "/.well-known/css/styles/",
"StaticAssetHandler:_assets_value": "@css:templates/styles/"
},
{
"@id": "urn:solid-server:default:FontsStaticAsset",
"@type": "StaticAssetEntry",
"relativeUrl": "/.well-known/css/fonts/",
"filePath": "@css:templates/fonts/"
"StaticAssetHandler:_assets_key": "/.well-known/css/fonts/",
"StaticAssetHandler:_assets_value": "@css:templates/fonts/"
},
{
"@id": "urn:solid-server:default:ImagesStaticAsset",
"@type": "StaticAssetEntry",
"relativeUrl": "/.well-known/css/images/",
"filePath": "@css:templates/images/"
"StaticAssetHandler:_assets_key": "/.well-known/css/images/",
"StaticAssetHandler:_assets_value": "@css:templates/images/"
},
{
"@id": "urn:solid-server:default:ScriptsStaticAsset",
"@type": "StaticAssetEntry",
"relativeUrl": "/.well-known/css/scripts/",
"filePath": "@css:templates/scripts/"
"StaticAssetHandler:_assets_key": "/.well-known/css/scripts/",
"StaticAssetHandler:_assets_value": "@css:templates/scripts/"
}
]
}
]

Some files were not shown because too many files have changed in this diff Show More