* feat: only allow metadata to be edited with PATCH request & only allow metadata files to be edited when a resource is available
* fix: remove unnecesary log at POST
* feat: PUT resets metadata contents + not possible to add metadata with PUT to container
* feat: add metadataStrategy (auxiliaryStrategy) + use that strategy in operationhandlers
* feat: PUT request on existing LDPC is not allowed as it would be possible to edit (read reset) metadata
* test: add unit tests to operationhandlers to handle metadata editing
* test: add unit tests to representationPatchHandler to handle metadata editing
* fix: update dependency of meta.json to version 3.0.0
* fix: lint and dependency still v2
* fix: replaced file references to resource references + moved Patch check to new patchhandler which is more generic
* fix: moved checking metadata resources checking from DELETE and POST handler down to DABS
* fix: remove PATCH message about metadata extension
* fix: move PATCH message about metadata extension
* WIP: adding writeMetadata + getMetadata in DABS and add writeMetadata to DataAccessors (part 1)
* WIP: implement writeMetadata in memorybackend + change resourceExists
* WIP: implement writeMetadata in SparqlDataAccessor.ts
* test: fix test interfaces
* test: InMemoryDataAccessor.ts resulted into changing identifier for writeMetadata in DataAccessor.ts (now taking subject identifier instead of metadata resource identifier)
* test: accessor tests implemented for metadata
* test: add RdfImmutableCheckPatcher.test.ts
* test: add tests in DataAccessorBasedStore.test.ts
* test: fix template config for DynamicPods test
* test: add integration tests for metadata
* fix: change metaStrategy to metadataStrategy
* refactor: comments updated to new location CSS on github + some alphabetical edits
* refactor: remove getMetadata function in DABS as it is only used once
* refactor: add DataAccessorBasedStoreArgs to DataAccessorBasedStore.ts
* docs: modify documentation for writeMetadata function in DataAccessor.ts
* feat: ldp:contains is also part of the metadata resource of a container
* refactor: change function name and move check to DataAccessorBasedStore
* fix: fix tests for DABS and PutOperationHandler
* feat: avoid cloneRepresentation by introducing RdfPatcher, RdfStorePatcher and modifying ImmutableMetadataPatcher, N3Patcher, patching.json and SparqlUpdatePatcher
* test: fix patcher tests
* feat: create sparqlInsertMetadata in SparqlDataAccessor.ts
* fix: move check during put on container if it exists already back to PutOperationHandler.ts after discussion in PR
* test: update tests PutOperationHandler.ts and DataAccessorBasedStore.ts regarding previous commit
* test: add converter to DABS and replace rejection on data during container creation to warning
* test: implemented RdfPatcher test
* feat: remove ContainerPatcher
* fix: fix lint
* fix: fix integration tests
* refactor: fix minor issues mentioned in the PR
* WIP: problem with removeResponseMetadata
* refactor: remove responseMetadata in QuadToRdfConverter.ts
* feat: handle ResponeMetadata when writing to the store via a patch
* refactor: refactor based on comments in PR
* feat: make ImmutableMetadataPatcher.ts instantiation more clear
* test: achieve 100% coverage again
* fix: fix lint
* refactor: return to explicit arguments for the DABS
* fix: return to explicit arguments for the DABS (missed one)
* feat: optimise immutable checker
* fix: fix, enhance docs + optimise config files
* fix: DABS + QuadToRdfConverter feedback implemented
* fix: patching feedback implemented
* test: update operationhandler tests
* test: update integration tests after feedback
* test: update DABS tests after feedback
* test: update ImmutableMetadataPatcher.test.ts after feedback
* test: update patch tests after feedback
* docs: add documentation about editing metadata
* fix: config: intendation + name change + extra filters | filter pattern
* docs: tsdoc added to RdfStorePatcher.ts
* fix: DABS split implemented for getRepresentation + comment refactoring
* docs: further documentation on removing response data on serialization
* fix: DABS getRepresentation method
* docs: apply feedback from Joachim on the documentation of metadata-editing.md
* fix: indentation fix + fix metadata-editing.md documentation after feedback from Joachim
* docs: small fix in metadata-editing.md documentation after feedback from Joachim
* fix: fix metadata-editing.md documentation after feedback from Joachim
* fix: fix tests meta-editing after feedback Joachim
* feat: first attempt at RELEASE_NOTES.md
* docs: update release notes based on feedback
* docs: fix newline
* fix: patching config changes after feedback
* docs: metadata editing documentation changes after feedback
* docs: metadata editing documentation changes after feedback
* docs: metadata editing documentation changes after feedback
* feat: optimisation on ImmutableMetadataPatcher.ts algorithm
* feat: remove converter from DABS and add conversion for metadata resources in the RCS
* fix: Fix documentation RepresentationPatchHandler.ts + fix response graph not being stored due to convertingstore
* feat: make RepresentationPatcher generic
* test: generic RepresentationPatcher tests
* test: 100% coverage for patchers again
* feat: containers can be created with POST with no content-type
* feat: Immutable checks always with subject identifier
* feat: create AuxiliaryLinkMetadataWriter for adding description resources Link Header
* test: add tests for AuxiliaryLinkMetadataWriter and update them for ImmutableMetadataPatcher
* feat: remove metadataGenerator from acl.json and fix tests accordingly
* WIP: preserve metadata on PUT
* feat: preserve metadata on PUT
* fix: keep metadata on PATCHes
* test: add unit tests for preserving metadata on PUT
* fix: remove inConverter from sparql endpoint as that is already the default in the (converting.json)
* fix: add metadatastrategy to RepresentationConvertingStore in regex.json
* test: add integration tests for preserving metadata on PUT
* docs: update release notes and adding documentation about preserving metadata on PUT
* WIP: Template create setRepresentation
* fix: Move container exists and not allowed check to setRepresentation
* test: fix lint
* fix: update configs and documentation
* refactor: update and add documentation + small refactoring
* refactor: update and add documentation + small refactoring + fix tests
* fix: Dynamic pod config + tests
* fix: TemplatedResourcesGenerator does not create containers when they already exist
* fix: metadata preservation now deals with complex content types
* docs: explain the case when there is no content-type
* fix: minor comments
test: unit test succeeds
fix: not quiting loop when releasing unexisting lock
refactor: pull wait() function into TimerUtils
feat: store all locks inside a single lock folder
feat: use md5 hashing for filepath hashes
test: coverage back to 100%
fix: store locks in proper .internal/locks folder
feat: reworked tryfn
test: coverage back to 100%
buidl: package json types next to lib
style: linting
dos: add more documentation to Locker classes
refactor: SingleThreadedResourceLocker -> MemoryResourceLocker
refactor: MultiThreadedResourceLocker -> FileSystemResourceLocker
feat: update all file-based backend configs to use the new FileSystemResourceLocker
feat: add warning on starting the MemoryResourceLocker in a worker process
test: coverage back to 100%
fix: finalizer of file.json was configured wrong
docs: updated release notes for 5.0.0
refactor: incorporated changes so far
refactor: retryFunctions are less complex now
test: jitter fix
refactor: more elegant way of providing default attemptSettings to constructor
style(jsdoc): rewording of jsdoc comment
fix: RegExp(/regex/) => /regex/
fix: Replace Error with InternalServerError
docs: jsdoc for RedisReadWriteLocker class
feat: make RedisReadWriteLocker a ResourceLocker too
test: coverage back to 100%
refactor: linting fix
style(jsdoc): Add explanation to tryRedisFn() method
refactor: remove RedisResourceLocker
fix: bug in lua script
chore(deps): update ioredis, remove redlock
refactor: removed RedisResourceLocker in favor of generic RedisLocker class
test: add redis lua scripts tests and integrate all 3 redis integration tests in 1
refactor: remove .vscode folder from index
refactor: Add some typing and change redis references to Redis in comments
refactor: more changes after PR review
refactor: remove redis.json
refactor: rename redis-rw.json to redis.json
docs: added readme and release notes
* refactor: move toCachedNamedNode (private)
* chore: only NamedNodes predicates in removes
* feat: enforce NamedNode predicates in most cases
* feat: getAll only accepts NamedNodes
* feat: toCachedNamedNode only accepts string arg
* tests: use NamedNodes for getAll calls
* test: remove unnecessary string check for coverage
* tests: fix NamedNodes in new tests after rebase
* feat: metadatawriters store NamedNodes
* refactor: toCachedNamedNode as utility function
* fix: double write of linkRelMap
* test: use the CONTENT_TYPE constant
Implemented new StringUtil helper functions: splitCommaSeparated, sanitizeUrlPart, isValidFileName.
Added helper functions to HeaderUtil: matchesAuthorizationScheme, hasScheme.
Added unit tests for the new helper functions.
Refactored codebase to use helper functions instead of regexes if applicable.
* feat: allow OriginalUrlExtractor to be configured with an identifierStrategy. Included the existing parameter 'includeQueryString' in the OriginalUrlExtractorArgs type.
* test: fixed OriginalUrlExtractor instantiation in OriginalUrlExtractor and RequestParser tests
* fix: Server no longer warns when accessing a URL out of scope #1148
* test: updated tests broken by #1148 fix
* test: ensuring 100% coverage
Co-authored-by: Wannes Kerckhove <wannes.kerckhove@ugent.be>
* feat(seeding): seed accounts and pods with seeded-pod-config.json
* feat(seeding): dry up SeededPodInitializer by using RegistrationManager directly and make compatible with version/3.0.0
* feat(seeding): update seed config files to version 3.0.0 context
* feat(seeding): simplify seeded-root config by importing pre-existing prefilled-root config
* feat(seeding): Add seeding as a default initializer, update seeded pod copy and guide, change seeded pod config to array
* feat(seeding): remove template info from seeded pod guide, use mockFs, code style nit, fix redlock test
* feat(seeding): remove old config file
* fix: slugs ending on slash with link header cannot create containers
* refactor(DataAccessorBasedStore): removing duplicate code and errors
* test(ServerFetch): fix integration tests that create a container
* fix: Reinstate original checks in setResource to let tests succeed
* test: change to container paths to end in / on POST only
* refactor: incorporate review changes
* fix: Error check was too strict
Co-authored-by: Joachim Van Herwegen <joachimvh@gmail.com>
* test: make testcase to test allowed slash behaviour
* test: removed unnecessary code from tests
* test: remove metadata line and duplicate tests
Co-authored-by: Joachim Van Herwegen <joachimvh@gmail.com>
The biggest resulting change is that the consent page always appears
after logging in.
Some minor fixes to be closer to the spec are included
together with some minor structural refactors.
This is a revert of a previous change
but is now possible due to the use of JSON bodies.
This does mean JavaScript is required in the HTML page,
but that will be required for future changes anyway.