* 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
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.
* Solution works but tests don't
* refactor(FetchUtil): use arrayifyStream
* refactor(FetchUtil): split fetchDataset into 2 separate functions
* style(FetchUtil): onelining instead of declaring new local var
* test: trying to mock rdfDereferencer
* refactor: promise can't have async function as arg
* test(FetchUtil): pass Quad array to mockDereference instead
* test: all tests should pass now and coverage is back to 100%
* style: comment typo
* chore: make package.json and package-lock.json compatible with main
* chore: fix package.json double entries
* chore: updated package.json to be alfabetical again
* refactor(AgentGroupAccessChecker): Remove converter from contructor and config
* refactor(TokenOwnerShipValidator): Remove converter from constructor and config
* refactor(FetchUtil): Return BadRequestHttpError instead of generic Error
* test(FetchUtil): return Response object instead of mocking fetch
* style: typos and newlines
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.
* feat: (AppRunner) Mechanism to configure cli args and derive componentsjs vars from them implemented
* fix: (AppRunner) tidying
* fix: (AppRunner) tidying up
* fix: (AppRunner) runCli method made sync
* fix; (VarResolver) refactored to multiple files, and other stylistic fixes.
* chore: (AppRunner) Uses builder pattern for yargs base arguments setup to enable better typescript inference
* fix(AppRunner): refactoring AppRunner and VarResolver
* fix(AppRunner): refactoring AppRunner promise handling
* fix(AppRunner): verror dependency removal
* fix: Simplify CLI error handling
* feat: Use same config for both CLI and app instantiation
* fix: Update typings and imports
* feat: Split VariableResolver behaviour to 2 classes
* feat: Move default value behaviour from CLI to ValueComputers
* test: Add unit tests for new CLI classes
* feat: Integrate new CLI configuration with all default configurations
* feat: Add createApp function to AppRunner
* docs: Update comments in CLI-related classes
* fix: Various fixes and refactors
Co-authored-by: damooo <damodara@protonmail.com>
* 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>
Due to key/value stores using JSON objects,
the SPARQL resource store can not be used to store them,
meaning the only out of the box solution that works is memory storage.
This config makes it so file storage can be used for internal storage
while still having a SPARQL backend.
Configuration has been updated so the IDP requests
also pass through an Authorization component.
A new config option was added to choose
which authorization scheme to use for the IDP.
The initializer can now be used for any container.
The initializer also does not handle the repeat check anymore,
this is now configured with a ConditionalHandler.
This allows easier reuse of certain reoccurring behaviours,
such as authorization.
The AuthenticatedLdpHandler is no longer required
since it is a combination of parsing and authorization.
This did require a small change to the OperationHandler interface.
This required AuxiliaryStrategy to have a new function
indicating if the auxiliary resource just used its associated resource authorization
or its own.
These readers will determine which permissions
are available for the incoming credentials.
Their results then get combined in a UnionReader
and authorized in a PermissionBasedAuthorizer
This adds options for enabling setup to the config folder.
All default configs with permanent storage (file/sparql)
are configured to require setup at server start.
Memory-based configs merely have it as an option.
The IDP behaviour has been changed to move all error related knowledge
to the IdentityProviderHttpHandler instead of managing it
in the Interactionhandlers.
Each IDP class using storage now has a different storage.
This way those classes don't have to worry about clashing keys anymore.
All internal storage is now in the /.internal/ container,
thereby making it easier to take the location of the internal data into account:
only 1 path needs to be blocked and a regex router handling internal data
differently only has to match 1 path as well.