mirror of
https://github.com/CommunitySolidServer/CommunitySolidServer.git
synced 2024-10-03 14:55:10 +00:00

* feat: implemented SizeReporter and FileSizeReporter * test: FileSizeReporter tests * feat: added QuotedDataAccessor * test: added extra test to check recursiveness of filesizereporter * feat: added QuotaStrategy interface * feat: further progress in different files * feat: wrote doc, tests and improved code * feat: fixed bugs and code is now runnable and buildable * feat: finished implementation * fix: revert accidental chanegs * fix: fileSizeReported did not count container size * fix: bug calculating container sizes fixed * test: FileSizeReporter tests * test: QuotaDataValidator tests * test: QuotaError tests * fix: removed console.log * doc: added doc to several files * doc: changed doc for QuotaStrategy to new implementation * fix: improved content length regex * feat: improved GlobalQuotaStrategy code * fix: made FileSizeReported readonly * feat: added comments to quota-file.json * fix: changed default tempFilePath variable * test: included new tempFilePath variable in testing * chore: created seperate command for start:file:quota to pass tests * feat: removed all sync fs calls from FileSizeReporter * feat: minor changes in multple files * fix: changed function signatures to be in line with others * feat: optimized quota data validation * feat: improved FileSizeReporter code * fix: corrected calculation of containersizes and fixed erroring edgecase * feat: save content-length as number in metadata * feat: added comments and changed GlobalQuotaStrategy constructor * feat: changed file names and added small comment * test: AtomicFileDataAccessor tests * test: completed FileSizeReporter tests * fix: content-length is now saved correctly in RepresentationMetadata * feat: adapted content length metadata + tests * fix: removed tempFilePath variable * fix: reverted .gitignore * fix: forgot to remove tempFilePath variable from componentsjs config * test: GlobalQuotaStrategy tests * feat: replaced DataValidator with Validator * feat: reworked DataValidator * feat: added calcultateChunkSize() to SizeReporter * test: updated FileSizeReporter tests * fix: tempFile location now relative to rootFilePath * test: QuotaDataValidator tests * fix: corrected FileSizeReporter tests * fix: adapted FileSizeReporter tests * fix: FileSizeReporter bug on Windows * fix: regex linting error * feat: changed Validator class * feat: added PodQuotaStrategy to enable suota on a per pod basis * chore: bump context versions * fix: Capitalized comments in json file * chore: renamed ValidatorArgs to ValidatorInput * chore: order all exports * fix: made TODO comment clearer * chore: added seperated config files for global and pod based quota + fixed comments * chore: made minor changes to comments * feat: added PassthroughDataAccessor * feat: added PasstroughtDataAccessor + tests * fix: added invalid header check to ContentLengthParser * chore: improved mocks * chore: move quota limit higher up in config * fix: atomicity issue in AtomicFileDataAccessor * chore: moved .internal folder to config from FileSizeReporter * fix: improved algorithm to ignore folders while calculating file size in FileSizeReporter * fix: changes to support containers in the future * fix: added error handling to prevent reading of unexistent files * feat: added generic type to SizeReporter to calculate chunk sizes * test: use mocked DataAccessor * chore: added some comments to test and made minor improvement * fix: fs mock rename * chore: QuotaStrategy.estimateSize refactor * chore: move trackAvailableSpace to abstract class QuotaStrategy * fix: improved test case * test: quota integration tests * chore: edited some comments * chore: change lstat to stat * feat: moved estimateSize to SizeReporter to be consistent with calcultateChunkSize * test: finish up tests to reach coverage * fix: basic config * fix: minor changes to test CI run * fix: small fix for windows * fix: improved writing to file * chore: linting errors * chore: rename trackAvailableSpace * test: improved integration tests * test: logging info for test debugging * test: extra logging for debugging * test: logging for debugging * test: logging for debugging * test: logging for debugging * test: improved Quota integration test setup * test: improve quota tests for CI run * test: debugging Quota test * test: uncommented global quota test * test: changed global quota parameters * test: logging for debugging * test: logging cleanup * chore: minor changes, mostly typo fixes * chore: remove console.log * fix: getting inconsistent results * chore: try fix index.ts CI error * chore: try fix CI error * chore: try fix CI error * chore: revert last commits * chore: fix inconsistent files with origin * test: minor test improvements * chore: minor refactors and improvements * fix: added extra try catch for breaking bug * chore: improve config * chore: minor code improvements * test: use mockFs * feat: add extra check in podQuotaStrategy * chore: replace handle by handleSafe in ValidatingDataAccessor * chore: typo * test: improved Quota integration tests * test: made comment in test more correct * fix: rm -> rmdir for backwards compatibility * fix: fsPromises issue * chore: leave out irrelevant config * chore: removed start script from package.json * fix: Small fixes Co-authored-by: Joachim Van Herwegen <joachimvh@gmail.com>
4.7 KiB
4.7 KiB
Community Solid Server release notes
v3.0.0
New features
- The Identity Provider now uses the
webid
scope as required for Solid-OIDC. - The
VoidLocker
can be used to disable locking for development/testing purposes. This can be enabled by changing the/config/util/resource-locker/
import todebug-void.json
- Added support for setting a quota on the server. See the
config/quota-file.json
config for an example.
Configuration changes
You might need to make changes to your v2 configuration if you use a custom config.
The following changes pertain to the imports in the default configs:
- ...
The following changes are relevant for v2 custom configs that replaced certain features.
- Conversion has been simplified so most converters are part of the conversion chain:
/util/representation-conversion/default.json
- The IDP settings have changed to support the latest Solid-OIDC draft.
/identity/handler/provider-factory/identity.json
- Requests targeting the OIDC library now use a separate handler.
/http/handler/default.json
/identity/handler/default.json
Interface changes
These changes are relevant if you wrote custom modules for the server that depend on existing interfaces.
TypedRepresentationConverter
function signatures changed and base functionality moved toBaseTypedRepresentationConverter
v2.0.0
New features
- Pod owners always have Control access to resources stored in their Pod.
- The server now offers a one-time setup upon first boot.
This can be accessed by going to
/setup
. Configurations with a persistent backend enforce setup before the server can be used, preventing unintended modifications in the backend. These have corresponding*-no-setup.json
files where setup is disabled, so the pre-v2.0 behavior is still available. ETag
,Last-Modified
,If-None-Match
, and related conditional headers are supported.PATCH
ing containers is now supported.PUT
/POST
requests with empty bodies are supported.- WebACL authorization supports groups.
- IDP components (registration, login, etc.) fully support JSON input and output.
- There is a new configuration
sparql-file-storage.json
to have a SPARQL backend with file storage.sparql-file-storage.json
. - A server can be set up to restrict access to IDP components using WebACL.
A consequence of this is that IDP components are only accessible using a trailing slash.
E.g.,
/idp/register/
works,/idp/register
will error.
Configuration changes
You might need to make changes to your v1 configuration if you use a custom config.
The following changes pertain to the imports in the default configs:
- There are 2 new configuration options that for which a valid option needs to be imported:
/app/setup
determines how and if setup should be enabled./identity/access
determines if IDP access (e.g., registration) should be restricted
- The
/app/init/default.json
configuration no longer initializes the root container. This behaviour has been moved to the other options for/app/init
. /ldp/permissions
changed to/ldp/modes
and only has a default option now.
The following changes are relevant for v1 custom configs that replaced certain features. The path indicates which JSON-LD files were impacted by the change.
IdentityProviderHttpHandler
andInteractionRoute
arguments have changed substantially./identity/handler/default.json
/identity/handler/interaction/*
/identity/registration/*
.
- All internal storage is now stored in the
/.internal/
container./storage/key-value/resource-store.json
.
- Patching related classes have changed.
/storage/middleware/stores/patching.json
.
BasicRequestParser
now needs aconditionsParser
argument./ldp/handler/components/request-parser.json
.
LinkTypeParser
has been renamed toLinkRelParser
and now takes mappings as input./ldp/metadata-parser/*
ComposedAuxiliaryStrategy
isRootRequired
has been renamed torequiredInRoot
./util/auxiliary/strategies/acl.json
.
- Many changes to authentication and authorization structure.
- Config
/ldp/authentication/*
and/ldp/authorization/*
.
- Config
- All
HttpHandler
s have been changed./app/setup/handlers/setup.json
/http/handler/default.json
/identity/handler/default.json
/ldp/handler/default.json
.
v1.1.0
New features
- The
ConstantConverter
can now filter on media type using theenabledMediaRanges
anddisabledMediaRanges
options. That way, the server can be configured to bypass a default UI when accessing images or PDF documents. (https://github.com/solid/community-server/discussions/895, https://github.com/solid/community-server/pull/925)
v1.0.0
First release of the Community Solid Server.