All notable changes to this project will be documented in this file.
v0.7.0 - 2021-01-28
- feat: Update config to include LockingResourceStore
- feat: Add ConstantMetadataWriter.
- feat: Set MS-Author-Via header.
- feat: Set Accept-Patch header.
- feat: Add acl link header writer
- feat: Add ParallelHandler.
- feat: Support folders in StaticAssetHandler.
- feat: Update ResourceLocker interface
- feat: Update WrappedExpiringResourceLocker to new interface
- fix: Remove locking from the SparqlUpdatePatchHandler
- feat: Update LockingResourceStore to use new locking interface
v0.6.0 - 2021-01-21
- feat: Export UnsecureConstantCredentialsExtractor.
- feat: Add IfNeededConverter and PassthroughConverter.
- feat: Support composite PATCH updates
- Add optional path and url suffixes to FixedContentTypeMapper
- feat: Implement UnsupportedAsyncHandler.
- feat: Add ConstantConverter.
- feat: Set Vary header.
- feat: Add StaticAssetHandler.
- feat: Add placeholders for static assets to configuration.
v0.4.1 - 2021-01-13
- feat: Only convert when needed.
- feat: Add BaseResourceStore.
- fix: Update acl authorizer to make write rights imply append rights
- feat: Add transformSafely.
- refactor: Make request related handle calls consistent
- feat: Store target identifier when parsing metadata
- fix: Use base IRI when parsing SPARQL update queries
- feat: Add Content-Type constructor to metadata.
- feat: Add BasicRepresentation.
- feat: Use ldp: prefix in container representations.
- fix: Prevent POST BasicRequestParserests from creating intermediate containers
- fix: Don't get normalized metadata for root containers
- fix: Take baseIRI into account when calling parseQuads
- test: Move diamond identifier test to ldp handler tests
- fix: Generalize typing on pushQuad.
- fix: Allow Content-Type: 0 on GET.
- fix: Always keep guarded error listener attached
v0.4.0 - 2021-01-06
- feat: Create new resources when patching
- feat: Add read-only store.
- feat: Create ContainerManager for containing container conventions
- feat: Add constant WebID extractor.
- feat: Initialize root containers with RootContainerInitializer
- feat: ExtensionBasedMapper no longer throws if there is no file
- feat: Support .meta files for pod provisioning
- feat: Add pod template to indicate storage
- feat: Add RecordObject.
- feat: Bearer token support
- feat: Add extra logging for root container creation.
- feat: Add mainModulePath and globalModules CLI flags.
- feat: Improve path logging.
- feat: Expose UriConstants.
- feat: Expose ConversionUtil.
- feat: Expose ContentTypes.
- feat: Expose GuardedStream.
- feat: Support strings in addQuad.
- feat: Expose UriUtil.
- feat: Incorporate server-side representation quality.
- feat: Validate Accept-DateTime.
- feat: Allow querying metadata.
- feat: Support writer prefixes.
- refactor: Split off AclInitializer.
- refactor: Split off LoggerInitializer.
- refactor: Split off ServerInitializer.
- refactor: Remove Setup.
- change: Refactor AllVoidCompositeHandler into SequenceHandler.
- change: Rename FirstCompositeHandler into WaterfallHandler.
- change: Make RepresentationMetadata accept a ResourceIdentifier.
- refactor: Replace getParentContainer util function with ContainerManager
- refactor: Also create named nodes for vocabularies.
- refactor: Rename UriUtil into TermUtil.
- refactor: Use record for representation preference.
- refactor: Rename RepresentationPreference into ValuePreferences.
- fix: Only set content-type for documents in sparql store
- fix: Allow quad data for containers
- fix: Do not write error if response already started.
- fix: Allow overwriting and deleting root container in SparqlDataAccessor
- fix: Allow deletion of root in InMemoryDataAccessor
- fix: Allow DataAccessorBasedStore to create root
- fix: Remove metadata content-type assumption from FileDataAccessor
- fix: Remove metadata content-type assumption from QuadUtil
- fix: Only check relevant type triples
- fix: Execute only one main handler.
- fix: Prevent deletion of root storage containers
- fix: Remove faulty no-routing configuration.
- fix: Expose Location header via CORS.
- fix: Export all errors.
- fix: Distinguish instantiation and initialization errors.
- fix: Ensure root file path is absolute.
- fix: Emit all guarded errors to all listeners.
- fix: Sort preferences by descending weight.
- fix: Allow credentials over CORS.
- fix: Join and normalize paths consistently.
- fix: Prefer Turtle as default content type.
v0.3.0 - 2020-12-03
- feat: Store status, body and metadata in ResponseDescription
- feat: Create MetadataSerializer
- feat: Reject unacceptable content types
- feat: Make internal/quads unacceptable output
- feat: Implement ExpiringLock and -ResourceLocker
- feat: Add a monitoring store.
- feat: Add WebSocket functionality to server.
- feat: Implement the Solid WebSocket protocol.
- feat: Include parent containers in POST and DELETE changes.
- feat: Advertise WebSocket via Updates-Via header.
- feat: Create function to wrap streams to not lose errors
- feat: Export WebSocket classes.
- feat: Wire up WebSockets.
- feat: Add DPoPWebIdExtractor.
- feat: Add patch logging.
- feat: Make HeaderHandler customizable.
- feat: Make CorsHandler customizable.
- feat: Expose Updates-Via header via CORS.
- feat: Implement --baseUrl flag.
- feat: Add LDP request logging.
- feat: Support the Forwarded header.
- feat: create PodHttpHandler with default interfaces
- feat: add implementations of pod-related interfaces
- feat: add template based data generator
- feat: integrate pod creation
- refactor: Create multiple composite handlers
- refactor: Make piping consistent
- refactor: Remove identifier parameter
- refactor: Clean up utility functions
- refactor: Add isContainerPath function
- refactor: Add ExpressHttpServerFactory.
- refactor: move ExtensionBasedMapper into mapping directory
- refactor: abstract parts of ExtensionBasedMapper into MapperUtil
- change: use isContainerIdentifier in FixedContentTypeMapper
- refactor: Move lock stuff in its own folder
- change: Drop Node 10 support.
- change: Make credential extractors specialized.
- change: Do not warn in canHandle.
- change: Increase logging level of lock expiry.
- refactor: Separate middleware from Express.
- change: Move WebSocketAdvertiser to middleware.
- refactor: Refactor runCli to take optional arguments.
- fix: Integrate wrapStreamError to prevent uncaught errors
- fix: Correctly handle acl behaviour for acl identifiers
- fix: Update quad converter config parameters
- fix: Rename UnsupportedHttpError into BadRequestError.
- fix: Always release lock when patching
- fix: Create container data before adding content-type
- fix: Do not generate empty INSERT graph.
- fix: Do not overwrite existing root ACL.
v0.2.0 - 2020-11-05
- feat: Expose types
- feat: Implement resource mapper for the file resource store (#142)
- feat: More integration tests and test configs (#154)
- feat: Update RepresentationMetadata to store triples
- feat: Add logging
- feat: Implement HEAD request support
- feat: Have ExtensionBasedMapper handle extensions correctly
- feat: Decode URI in target extractor
- feat: Create MetadataHandler
- feat: Integrate MetadataHandler
- feat: Add support for mocking fs
- feat: Create DataAccessorBasedStore to have a standard store implementation
- feat: Create file-based DataAccessor
- feat: Add DataAccessorBasedStore integration
- feat: Create InMemoryDataAccessor
- feat: Fully support storing content-type in file extensions
- feat: Implement SPARQL-based ResourceStore
- feat: Support SPARQL store backends
- feat: Update RepresentationConvertingStore to convert incoming data
- feat: Implement a first draft of the RoutingResourceStore
- feat: Create a RoutingResourceStore that takes routing rules
- feat: Create multiple configs supporting different store backends
- feat: Create routing configs and partially clean up config structure
- refactor: Rename BasePermissionsExtractor to MethodPermissionsExtractor
- refactor: Simplify MethodPermissionsExtractor
- refactor: More precise error messages
- refactor: Make PassthroughStore generic
- chore: update to componentsjs-generator with generics support
- refactor: Remove RuntimeConfig in favor of config variables, Closes #106
- refactor: Streamline RepresentationMetadata interface
- refactor: Make URI constants consistent
- refactor: Fix typo
- refactor: Update eslint related dependencies
- refactor: Apply naming-convention rules
- refactor: Rename UriUtil functions
- refactor: Remove Turtle to Quad and Quad to Turtle converters
- refactor: Move file related metadata to FileResourceStore
- refactor: Let caller decide which error pipeStreamAndErrors should throw
- refactor: Rename instances of data resource to document
- refactor: Remove file and in memory stores
- refactor: Make ExtensionBasedMapper only expose what is needed
- refactor: Implement empty canHandle on base class. (#289)
- chore: Organize tests (#292)
- chore: Use Jest recommended linting.
- refactor: Change constructor so it is supported by Components.js
- refactor: Change routing constructors to work with Components.js
- refactor: Change PreferenceSupport constructor to work with Components.js
- chore: Add docker npm scripts.
- chore: Enable/disable Docker testing with a flag.
- fix: metadata file error in FileResourceStore
- fix: Retain status codes when combining errors
- fix: Have AsyncHandlers only check what is necessary
- Fix typo.
- fix: Make sure all URI characters are correctly encoded
- fix: Fix test issues
- fix: Remove metadata file if no new metadata is stored
- fix: Provide full coverage for util functions
- fix: Correctly parse URL domain
- fix: Resolve duplicate error message and no trailing newline
- fix: Write tests and fix related bugs, refactor code
v0.1.1 - 2020-09-03
v0.1.0 - 2020-09-03
- feat: Send server identification
- feat: Integrate ChainedConverter into the server
- feat: Dynamically determine matching types in ChainedConverter
- feat: Create RepresentationConverter that chains other converters
- feat: allow custom config to be passed
- feat: Enable dependency injection with auto-generated components
- feat: add support for parsing more RDF formats using rdf-parse
- feat: Support link and slug headers in SimpleBodyParser
- feat: Move runtime config into dedicated component, Closes #67
- feat: Add file based ResourceStore (#52)
- feat: Add more extensive permission parsing support
- feat: Integrate acl with rest of server
- feat: Add acl support
- feat: Integrate data conversion with rest of server
- feat: Convert data from ResourceStore based on preferences
- feat: Specifiy constants in separate file
- feat: Integrate PATCH functionality
- feat: Add support for SPARQL updates on ResourceStores
- feat: Add OperationHandler for PATCH
- feat: Add BodyParser for SPARQL updates
- feat: Add lock functionality
- feat: Add prepare script
- feat: Set up server using express
- feat: Add coveralls support
- feat: Validate Accept* headers while parsing
- feat: Fully support Accept* headers
- feat: add simple response writer
- feat: add simple operation handlers
- feat: add simple resource store
- feat: add simple permissions related handlers
- feat: add response description interface
- feat: add simple request parser
- feat: add simple preference parser
- feat: add simple target extractor
- feat: add simple body parser
- feat: add request parsing related interfaces
- feat: add typed readable
- feat: Add README with architecture links
- feat: add AuthenticatedLdpHandler
- feat: add FirstCompositeHandler to support multiple handlers
- feat: add custom errors
- feat: add additional supported interfaces
- Initial configuration