From cfdd1221f05f2b51abc770e64407bb8392224383 Mon Sep 17 00:00:00 2001 From: Joachim Van Herwegen Date: Wed, 9 Feb 2022 08:48:02 +0100 Subject: [PATCH] fix: Always define @type in configs --- config/app/setup/disabled.json | 3 --- config/app/setup/handlers/setup.json | 21 +++++++++++++++---- config/identity/access/public.json | 3 ++- config/identity/access/restricted.json | 6 ++++-- .../handler/account-store/default.json | 3 ++- .../identity/handler/interaction/routes.json | 5 +++-- config/identity/ownership/token.json | 3 ++- config/identity/pod/dynamic.json | 3 ++- config/identity/registration/enabled.json | 9 +++++--- .../readers/access-checkers/agent-group.json | 3 ++- config/quota-file.json | 8 ++++--- config/storage/backend/dynamic.json | 3 ++- config/storage/backend/sparql.json | 5 +++-- config/storage/key-value/resource-store.json | 6 ++++-- config/storage/middleware/default.json | 13 +++++++----- config/util/resource-locker/redis.json | 3 ++- test/integration/config/quota-global.json | 8 ++++--- test/integration/config/quota-pod.json | 5 +++-- test/integration/config/restricted-idp.json | 2 +- test/integration/config/server-memory.json | 2 +- test/integration/config/setup-memory.json | 2 +- test/unit/init/AppRunner.test.ts | 4 ++++ 22 files changed, 79 insertions(+), 41 deletions(-) diff --git a/config/app/setup/disabled.json b/config/app/setup/disabled.json index 3fea56575..a587a679d 100644 --- a/config/app/setup/disabled.json +++ b/config/app/setup/disabled.json @@ -1,8 +1,5 @@ { "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^4.0.0/components/context.jsonld", - "import": [ - "css:config/app/init/initializers/root.json" - ], "@graph": [ { "comment": "Completely disables the setup page.", diff --git a/config/app/setup/handlers/setup.json b/config/app/setup/handlers/setup.json index 882c29147..d940566dd 100644 --- a/config/app/setup/handlers/setup.json +++ b/config/app/setup/handlers/setup.json @@ -1,8 +1,5 @@ { "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^4.0.0/components/context.jsonld", - "import": [ - "css:config/app/init/initializers/root.json" - ], "@graph": [ { "comment": "Handles everything related to the first-time server setup.", @@ -16,7 +13,7 @@ "@type": "SetupHttpHandler", "args_handler": { "@type": "SetupHandler", - "args_initializer": { "@id": "urn:solid-server:default:RootInitializer" }, + "args_initializer": { "@id": "urn:solid-server:default:SetupInitializer" }, "args_registrationManager": { "@id": "urn:solid-server:default:SetupRegistrationManager" } }, "args_converter": { "@id": "urn:solid-server:default:RepresentationConverter" }, @@ -51,6 +48,22 @@ "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": "TemplatedResourcesGenerator", + "templateFolder": "@css:templates/root/empty", + "factory": { "@type": "ExtensionBasedMapperFactory" }, + "templateEngine": { "@type": "HandlebarsTemplateEngine" } + }, + "args_storageKey": "rootInitialized", + "args_storage": { "@id": "urn:solid-server:default:SetupStorage" } } ] } diff --git a/config/identity/access/public.json b/config/identity/access/public.json index 712a04011..afd73db65 100644 --- a/config/identity/access/public.json +++ b/config/identity/access/public.json @@ -4,7 +4,8 @@ { "comment": "Allow everyone to register new pods.", "@id": "urn:solid-server:default:IdentityProviderAuthorizingHandler", - "AuthorizingHttpHandler:_args_permissionReader": { + "@type": "AuthorizingHttpHandler", + "args_permissionReader": { "@type": "AllStaticReader", "allow": true } diff --git a/config/identity/access/restricted.json b/config/identity/access/restricted.json index 180de439e..0a4a038b1 100644 --- a/config/identity/access/restricted.json +++ b/config/identity/access/restricted.json @@ -8,12 +8,14 @@ { "comment": "Use the same authorization for IDP components as is used for LDP, such that for instance registration can be restricted to certain agents.", "@id": "urn:solid-server:default:IdentityProviderAuthorizingHandler", - "AuthorizingHttpHandler:_args_permissionReader": { "@id": "urn:solid-server:default:PermissionReader" } + "@type": "AuthorizingHttpHandler", + "args_permissionReader": { "@id": "urn:solid-server:default:PermissionReader" } }, { "comment": "IDP-related containers require initialized resources to support authorization.", "@id": "urn:solid-server:default:ParallelInitializer", - "ParallelHandler:_handlers": [ + "@type": "ParallelHandler", + "handlers": [ { "@id": "urn:solid-server:default:IdpContainerInitializer" }, { "@id": "urn:solid-server:default:WellKnownContainerInitializer" } ] diff --git a/config/identity/handler/account-store/default.json b/config/identity/handler/account-store/default.json index a0c963d86..514c6ce43 100644 --- a/config/identity/handler/account-store/default.json +++ b/config/identity/handler/account-store/default.json @@ -28,7 +28,8 @@ { "comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.", "@id": "urn:solid-server:default:Finalizer", - "ParallelFinalizer:_finalizers": [ { "@id": "urn:solid-server:default:ExpiringForgotPasswordStorage" } ] + "@type": "ParallelFinalizer", + "finalizers": [ { "@id": "urn:solid-server:default:ExpiringForgotPasswordStorage" } ] } ] } diff --git a/config/identity/handler/interaction/routes.json b/config/identity/handler/interaction/routes.json index 155257988..a8ea5cc48 100644 --- a/config/identity/handler/interaction/routes.json +++ b/config/identity/handler/interaction/routes.json @@ -23,7 +23,8 @@ { "comment": "Adds controls and API version to JSON responses.", "@id": "urn:solid-server:auth:password:ControlHandler", - "ControlHandler:_source" : { "@id": "urn:solid-server:auth:password:LocationInteractionHandler" } + "@type": "ControlHandler", + "source" : { "@id": "urn:solid-server:auth:password:LocationInteractionHandler" } } ] }, @@ -31,7 +32,7 @@ "comment": "Converts 3xx redirects to 200 JSON responses for consumption by browser scripts.", "@id": "urn:solid-server:auth:password:LocationInteractionHandler", "@type": "LocationInteractionHandler", - "LocationInteractionHandler:_source" : { "@id": "urn:solid-server:auth:password:InteractionRouteHandler" } + "source" : { "@id": "urn:solid-server:auth:password:InteractionRouteHandler" } }, { "comment": "Handles every interaction based on their route.", diff --git a/config/identity/ownership/token.json b/config/identity/ownership/token.json index 8eb2a2222..31b65958b 100644 --- a/config/identity/ownership/token.json +++ b/config/identity/ownership/token.json @@ -21,7 +21,8 @@ { "comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.", "@id": "urn:solid-server:default:Finalizer", - "ParallelFinalizer:_finalizers": [ { "@id": "urn:solid-server:default:ExpiringTokenStorage" } ] + "@type": "ParallelFinalizer", + "finalizers": [ { "@id": "urn:solid-server:default:ExpiringTokenStorage" } ] } ] } diff --git a/config/identity/pod/dynamic.json b/config/identity/pod/dynamic.json index 400d14ddc..1480ee1e5 100644 --- a/config/identity/pod/dynamic.json +++ b/config/identity/pod/dynamic.json @@ -25,7 +25,8 @@ { "comment": "Add to the list of initializers.", "@id": "urn:solid-server:default:ParallelInitializer", - "ParallelHandler:_handlers": [ + "@type": "ParallelHandler", + "handlers": [ { "comment": "Initializer that instantiates all the dynamic pods.", "@type": "ConfigPodInitializer", diff --git a/config/identity/registration/enabled.json b/config/identity/registration/enabled.json index 759bb411c..a1f4ace6c 100644 --- a/config/identity/registration/enabled.json +++ b/config/identity/registration/enabled.json @@ -6,7 +6,8 @@ "@graph": [ { "@id": "urn:solid-server:auth:password:InteractionRouteHandler", - "WaterfallHandler:_handlers": [ + "@type": "WaterfallHandler", + "handlers": [ { "comment": [ "This handler is required to prevent Components.js issues with arrays.", @@ -19,7 +20,8 @@ }, { "@id": "urn:solid-server:auth:password:ControlHandler", - "ControlHandler:_controls": [ + "@type": "ControlHandler", + "controls": [ { "ControlHandler:_controls_key": "register", "ControlHandler:_controls_value": { "@id": "urn:solid-server:auth:password:RegistrationRoute" } @@ -28,7 +30,8 @@ }, { "@id": "urn:solid-server:auth:password:HtmlViewHandler", - "HtmlViewHandler:_templates": [ + "@type": "HtmlViewHandler", + "templates": [ { "HtmlViewHandler:_templates_key": "@css:templates/identity/email-password/register.html.ejs", "HtmlViewHandler:_templates_value": { "@id": "urn:solid-server:auth:password:RegistrationRoute" } diff --git a/config/ldp/authorization/readers/access-checkers/agent-group.json b/config/ldp/authorization/readers/access-checkers/agent-group.json index c3967f18f..d8cc2596e 100644 --- a/config/ldp/authorization/readers/access-checkers/agent-group.json +++ b/config/ldp/authorization/readers/access-checkers/agent-group.json @@ -14,7 +14,8 @@ { "comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.", "@id": "urn:solid-server:default:Finalizer", - "ParallelFinalizer:_finalizers": [ { "@id": "urn:solid-server:default:ExpiringAclCache" } ] + "@type": "ParallelFinalizer", + "finalizers": [ { "@id": "urn:solid-server:default:ExpiringAclCache" } ] } ] } diff --git a/config/quota-file.json b/config/quota-file.json index 32cbc2a2b..fa7093bd0 100644 --- a/config/quota-file.json +++ b/config/quota-file.json @@ -38,12 +38,14 @@ }, { "@id": "urn:solid-server:default:QuotaStrategy", - "PodQuotaStrategy:_limit_amount": 7000, - "PodQuotaStrategy:_limit_unit": "bytes" + "@type": "PodQuotaStrategy", + "limit_amount": 7000, + "limit_unit": "bytes" }, { "@id": "urn:solid-server:default:SizeReporter", - "FileSizeReporter:_ignoreFolders": [ "^/\\.internal$" ] + "@type": "FileSizeReporter", + "ignoreFolders": [ "^/\\.internal$" ] } ] } diff --git a/config/storage/backend/dynamic.json b/config/storage/backend/dynamic.json index 38cb5fcaa..a328d7069 100644 --- a/config/storage/backend/dynamic.json +++ b/config/storage/backend/dynamic.json @@ -13,7 +13,8 @@ { "comment": "Which store to use for requests that do not match any pod, e.g. for storage.", "@id": "urn:solid-server:default:RouterRule", - "BaseUrlRouterRule:_baseStore": { + "@type": "BaseUrlRouterRule", + "baseStore": { "@id": "urn:solid-server:default:ResourceStore_DataAccessor", "@type": "DataAccessorBasedStore", "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, diff --git a/config/storage/backend/sparql.json b/config/storage/backend/sparql.json index 243090822..351bbcde8 100644 --- a/config/storage/backend/sparql.json +++ b/config/storage/backend/sparql.json @@ -15,8 +15,9 @@ { "comment": "This makes it so all incoming data is converted to quad objects.", "@id": "urn:solid-server:default:ResourceStore_Converting", - "RepresentationConvertingStore:_options_inConverter": { "@id": "urn:solid-server:default:RepresentationConverter" }, - "RepresentationConvertingStore:_options_inType": "internal/quads" + "@type": "RepresentationConvertingStore", + "options_inConverter": { "@id": "urn:solid-server:default:RepresentationConverter" }, + "options_inType": "internal/quads" } ] } diff --git a/config/storage/key-value/resource-store.json b/config/storage/key-value/resource-store.json index f12860153..f6706a7ba 100644 --- a/config/storage/key-value/resource-store.json +++ b/config/storage/key-value/resource-store.json @@ -23,7 +23,8 @@ { "comment": "Block external access to the storage containers to avoid exposing internal data.", "@id": "urn:solid-server:default:PathBasedReader", - "PathBasedReader:_paths": [ + "@type": "PathBasedReader", + "paths": [ { "PathBasedReader:_paths_key": "^/.internal(/.*)?$", "PathBasedReader:_paths_value": { @@ -36,7 +37,8 @@ { "comment": "Marks the /.internal/ storage container as an auxiliary resource, thereby hiding it from container representations.", "@id": "urn:solid-server:default:AuxiliaryStrategy", - "RoutingAuxiliaryStrategy:_sources": [ + "@type": "RoutingAuxiliaryStrategy", + "sources": [ { "@type": "ComposedAuxiliaryStrategy", "identifierStrategy": { diff --git a/config/storage/middleware/default.json b/config/storage/middleware/default.json index b840c1c5c..7fdae7d88 100644 --- a/config/storage/middleware/default.json +++ b/config/storage/middleware/default.json @@ -16,25 +16,28 @@ "comment": "Sets up a stack of utility stores used by most instances.", "@id": "urn:solid-server:default:ResourceStore", "@type": "MonitoringStore", - "MonitoringStore:_source": { "@id": "urn:solid-server:default:ResourceStore_Index" } + "source": { "@id": "urn:solid-server:default:ResourceStore_Index" } }, { "comment": "When a container with an index.html document is accessed, serve that HTML document instead of the container.", "@id": "urn:solid-server:default:ResourceStore_Index", "@type": "IndexRepresentationStore", - "IndexRepresentationStore:_source": { "@id": "urn:solid-server:default:ResourceStore_Locking" } + "source": { "@id": "urn:solid-server:default:ResourceStore_Locking" } }, { "@id": "urn:solid-server:default:ResourceStore_Locking", - "LockingResourceStore:_source": { "@id": "urn:solid-server:default:ResourceStore_Patching" } + "@type": "LockingResourceStore", + "source": { "@id": "urn:solid-server:default:ResourceStore_Patching" } }, { "@id": "urn:solid-server:default:ResourceStore_Patching", - "PatchingStore:_source": { "@id": "urn:solid-server:default:ResourceStore_Converting" } + "@type": "PatchingStore", + "source": { "@id": "urn:solid-server:default:ResourceStore_Converting" } }, { "@id": "urn:solid-server:default:ResourceStore_Converting", - "RepresentationConvertingStore:_source": { "@id": "urn:solid-server:default:ResourceStore_Backend" } + "@type": "RepresentationConvertingStore", + "source": { "@id": "urn:solid-server:default:ResourceStore_Backend" } } ] } diff --git a/config/util/resource-locker/redis.json b/config/util/resource-locker/redis.json index fd1ea69dd..d509b1ed5 100644 --- a/config/util/resource-locker/redis.json +++ b/config/util/resource-locker/redis.json @@ -14,7 +14,8 @@ { "comment": "Makes sure the redis connection is closed when the application needs to stop. Also deletes still-existing locks and counters.", "@id": "urn:solid-server:default:Finalizer", - "ParallelFinalizer:_finalizers": [ + "@type": "ParallelFinalizer", + "finalizers": [ { "@id": "urn:solid-server:default:RedisLocker" } diff --git a/test/integration/config/quota-global.json b/test/integration/config/quota-global.json index 4860e1d8f..95a1c3a02 100644 --- a/test/integration/config/quota-global.json +++ b/test/integration/config/quota-global.json @@ -42,14 +42,16 @@ }, { "@id": "urn:solid-server:default:QuotaStrategy", - "GlobalQuotaStrategy:_limit_amount": { + "@type": "GlobalQuotaStrategy", + "limit_amount": { "@id": "urn:solid-server:default:variable:GlobalQuota" }, - "GlobalQuotaStrategy:_limit_unit": "bytes" + "limit_unit": "bytes" }, { "@id": "urn:solid-server:default:SizeReporter", - "FileSizeReporter:_ignoreFolders": [ "^/\\.internal$" ] + "@type": "FileSizeReporter", + "ignoreFolders": [ "^/\\.internal$" ] }, { "@id": "urn:solid-server:test:Instances", diff --git a/test/integration/config/quota-pod.json b/test/integration/config/quota-pod.json index fc3b7b276..d9a8d54d4 100644 --- a/test/integration/config/quota-pod.json +++ b/test/integration/config/quota-pod.json @@ -42,10 +42,11 @@ }, { "@id": "urn:solid-server:default:QuotaStrategy", - "PodQuotaStrategy:_limit_amount": { + "@type": "PodQuotaStrategy", + "limit_amount": { "@id": "urn:solid-server:default:variable:PodQuota" }, - "PodQuotaStrategy:_limit_unit": "bytes" + "limit_unit": "bytes" }, { "@id": "urn:solid-server:test:Instances", diff --git a/test/integration/config/restricted-idp.json b/test/integration/config/restricted-idp.json index 02df9c858..a3ee69c57 100644 --- a/test/integration/config/restricted-idp.json +++ b/test/integration/config/restricted-idp.json @@ -35,7 +35,7 @@ { "@id": "urn:solid-server:test:Instances", "@type": "RecordObject", - "RecordObject:_record": [ + "record": [ { "RecordObject:_record_key": "app", "RecordObject:_record_value": { "@id": "urn:solid-server:default:App" } diff --git a/test/integration/config/server-memory.json b/test/integration/config/server-memory.json index 36a0b47b8..79053e245 100644 --- a/test/integration/config/server-memory.json +++ b/test/integration/config/server-memory.json @@ -34,7 +34,7 @@ { "@id": "urn:solid-server:test:Instances", "@type": "RecordObject", - "RecordObject:_record": [ + "record": [ { "RecordObject:_record_key": "app", "RecordObject:_record_value": { "@id": "urn:solid-server:default:App" } diff --git a/test/integration/config/setup-memory.json b/test/integration/config/setup-memory.json index d74eab65c..689597c6d 100644 --- a/test/integration/config/setup-memory.json +++ b/test/integration/config/setup-memory.json @@ -35,7 +35,7 @@ { "@id": "urn:solid-server:test:Instances", "@type": "RecordObject", - "RecordObject:_record": [ + "record": [ { "RecordObject:_record_key": "app", "RecordObject:_record_value": { "@id": "urn:solid-server:default:App" } diff --git a/test/unit/init/AppRunner.test.ts b/test/unit/init/AppRunner.test.ts index 2b728e4f9..c90dcd9bc 100644 --- a/test/unit/init/AppRunner.test.ts +++ b/test/unit/init/AppRunner.test.ts @@ -140,6 +140,7 @@ describe('AppRunner', (): void => { dumpErrorState: true, logLevel: 'info', mainModulePath: joinFilePath(__dirname, '../../../'), + typeChecking: false, }); expect(manager.configRegistry.register).toHaveBeenCalledTimes(1); expect(manager.configRegistry.register) @@ -180,6 +181,7 @@ describe('AppRunner', (): void => { dumpErrorState: true, logLevel: 'debug', mainModulePath: '/var/cwd/module/path', + typeChecking: false, }); expect(manager.configRegistry.register).toHaveBeenCalledTimes(1); expect(manager.configRegistry.register).toHaveBeenCalledWith('/var/cwd/myconfig.json'); @@ -273,6 +275,7 @@ describe('AppRunner', (): void => { dumpErrorState: true, logLevel: 'info', mainModulePath: joinFilePath(__dirname, '../../../'), + typeChecking: false, }); expect(manager.configRegistry.register).toHaveBeenCalledTimes(1); expect(manager.configRegistry.register) @@ -323,6 +326,7 @@ describe('AppRunner', (): void => { dumpErrorState: true, logLevel: 'info', mainModulePath: joinFilePath(__dirname, '../../../'), + typeChecking: false, }); expect(manager.configRegistry.register).toHaveBeenCalledTimes(1); expect(manager.configRegistry.register)