fix: Always define @type in configs

This commit is contained in:
Joachim Van Herwegen 2022-02-09 08:48:02 +01:00
parent ce27bec207
commit cfdd1221f0
22 changed files with 79 additions and 41 deletions

View File

@ -1,8 +1,5 @@
{ {
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^4.0.0/components/context.jsonld", "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^4.0.0/components/context.jsonld",
"import": [
"css:config/app/init/initializers/root.json"
],
"@graph": [ "@graph": [
{ {
"comment": "Completely disables the setup page.", "comment": "Completely disables the setup page.",

View File

@ -1,8 +1,5 @@
{ {
"@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^4.0.0/components/context.jsonld", "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^4.0.0/components/context.jsonld",
"import": [
"css:config/app/init/initializers/root.json"
],
"@graph": [ "@graph": [
{ {
"comment": "Handles everything related to the first-time server setup.", "comment": "Handles everything related to the first-time server setup.",
@ -16,7 +13,7 @@
"@type": "SetupHttpHandler", "@type": "SetupHttpHandler",
"args_handler": { "args_handler": {
"@type": "SetupHandler", "@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_registrationManager": { "@id": "urn:solid-server:default:SetupRegistrationManager" }
}, },
"args_converter": { "@id": "urn:solid-server:default:RepresentationConverter" }, "args_converter": { "@id": "urn:solid-server:default:RepresentationConverter" },
@ -51,6 +48,22 @@
"args_ownershipValidator": { "@id": "urn:solid-server:auth:password:OwnershipValidator" }, "args_ownershipValidator": { "@id": "urn:solid-server:auth:password:OwnershipValidator" },
"args_accountStore": { "@id": "urn:solid-server:auth:password:AccountStore" }, "args_accountStore": { "@id": "urn:solid-server:auth:password:AccountStore" },
"args_podManager": { "@id": "urn:solid-server:default:PodManager" } "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" }
} }
] ]
} }

View File

@ -4,7 +4,8 @@
{ {
"comment": "Allow everyone to register new pods.", "comment": "Allow everyone to register new pods.",
"@id": "urn:solid-server:default:IdentityProviderAuthorizingHandler", "@id": "urn:solid-server:default:IdentityProviderAuthorizingHandler",
"AuthorizingHttpHandler:_args_permissionReader": { "@type": "AuthorizingHttpHandler",
"args_permissionReader": {
"@type": "AllStaticReader", "@type": "AllStaticReader",
"allow": true "allow": true
} }

View File

@ -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.", "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", "@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.", "comment": "IDP-related containers require initialized resources to support authorization.",
"@id": "urn:solid-server:default:ParallelInitializer", "@id": "urn:solid-server:default:ParallelInitializer",
"ParallelHandler:_handlers": [ "@type": "ParallelHandler",
"handlers": [
{ "@id": "urn:solid-server:default:IdpContainerInitializer" }, { "@id": "urn:solid-server:default:IdpContainerInitializer" },
{ "@id": "urn:solid-server:default:WellKnownContainerInitializer" } { "@id": "urn:solid-server:default:WellKnownContainerInitializer" }
] ]

View File

@ -28,7 +28,8 @@
{ {
"comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.", "comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.",
"@id": "urn:solid-server:default:Finalizer", "@id": "urn:solid-server:default:Finalizer",
"ParallelFinalizer:_finalizers": [ { "@id": "urn:solid-server:default:ExpiringForgotPasswordStorage" } ] "@type": "ParallelFinalizer",
"finalizers": [ { "@id": "urn:solid-server:default:ExpiringForgotPasswordStorage" } ]
} }
] ]
} }

View File

@ -23,7 +23,8 @@
{ {
"comment": "Adds controls and API version to JSON responses.", "comment": "Adds controls and API version to JSON responses.",
"@id": "urn:solid-server:auth:password:ControlHandler", "@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.", "comment": "Converts 3xx redirects to 200 JSON responses for consumption by browser scripts.",
"@id": "urn:solid-server:auth:password:LocationInteractionHandler", "@id": "urn:solid-server:auth:password:LocationInteractionHandler",
"@type": "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.", "comment": "Handles every interaction based on their route.",

View File

@ -21,7 +21,8 @@
{ {
"comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.", "comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.",
"@id": "urn:solid-server:default:Finalizer", "@id": "urn:solid-server:default:Finalizer",
"ParallelFinalizer:_finalizers": [ { "@id": "urn:solid-server:default:ExpiringTokenStorage" } ] "@type": "ParallelFinalizer",
"finalizers": [ { "@id": "urn:solid-server:default:ExpiringTokenStorage" } ]
} }
] ]
} }

View File

@ -25,7 +25,8 @@
{ {
"comment": "Add to the list of initializers.", "comment": "Add to the list of initializers.",
"@id": "urn:solid-server:default:ParallelInitializer", "@id": "urn:solid-server:default:ParallelInitializer",
"ParallelHandler:_handlers": [ "@type": "ParallelHandler",
"handlers": [
{ {
"comment": "Initializer that instantiates all the dynamic pods.", "comment": "Initializer that instantiates all the dynamic pods.",
"@type": "ConfigPodInitializer", "@type": "ConfigPodInitializer",

View File

@ -6,7 +6,8 @@
"@graph": [ "@graph": [
{ {
"@id": "urn:solid-server:auth:password:InteractionRouteHandler", "@id": "urn:solid-server:auth:password:InteractionRouteHandler",
"WaterfallHandler:_handlers": [ "@type": "WaterfallHandler",
"handlers": [
{ {
"comment": [ "comment": [
"This handler is required to prevent Components.js issues with arrays.", "This handler is required to prevent Components.js issues with arrays.",
@ -19,7 +20,8 @@
}, },
{ {
"@id": "urn:solid-server:auth:password:ControlHandler", "@id": "urn:solid-server:auth:password:ControlHandler",
"ControlHandler:_controls": [ "@type": "ControlHandler",
"controls": [
{ {
"ControlHandler:_controls_key": "register", "ControlHandler:_controls_key": "register",
"ControlHandler:_controls_value": { "@id": "urn:solid-server:auth:password:RegistrationRoute" } "ControlHandler:_controls_value": { "@id": "urn:solid-server:auth:password:RegistrationRoute" }
@ -28,7 +30,8 @@
}, },
{ {
"@id": "urn:solid-server:auth:password:HtmlViewHandler", "@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_key": "@css:templates/identity/email-password/register.html.ejs",
"HtmlViewHandler:_templates_value": { "@id": "urn:solid-server:auth:password:RegistrationRoute" } "HtmlViewHandler:_templates_value": { "@id": "urn:solid-server:auth:password:RegistrationRoute" }

View File

@ -14,7 +14,8 @@
{ {
"comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.", "comment": "Makes sure the expiring storage cleanup timer is stopped when the application needs to stop.",
"@id": "urn:solid-server:default:Finalizer", "@id": "urn:solid-server:default:Finalizer",
"ParallelFinalizer:_finalizers": [ { "@id": "urn:solid-server:default:ExpiringAclCache" } ] "@type": "ParallelFinalizer",
"finalizers": [ { "@id": "urn:solid-server:default:ExpiringAclCache" } ]
} }
] ]
} }

View File

@ -38,12 +38,14 @@
}, },
{ {
"@id": "urn:solid-server:default:QuotaStrategy", "@id": "urn:solid-server:default:QuotaStrategy",
"PodQuotaStrategy:_limit_amount": 7000, "@type": "PodQuotaStrategy",
"PodQuotaStrategy:_limit_unit": "bytes" "limit_amount": 7000,
"limit_unit": "bytes"
}, },
{ {
"@id": "urn:solid-server:default:SizeReporter", "@id": "urn:solid-server:default:SizeReporter",
"FileSizeReporter:_ignoreFolders": [ "^/\\.internal$" ] "@type": "FileSizeReporter",
"ignoreFolders": [ "^/\\.internal$" ]
} }
] ]
} }

View File

@ -13,7 +13,8 @@
{ {
"comment": "Which store to use for requests that do not match any pod, e.g. for storage.", "comment": "Which store to use for requests that do not match any pod, e.g. for storage.",
"@id": "urn:solid-server:default:RouterRule", "@id": "urn:solid-server:default:RouterRule",
"BaseUrlRouterRule:_baseStore": { "@type": "BaseUrlRouterRule",
"baseStore": {
"@id": "urn:solid-server:default:ResourceStore_DataAccessor", "@id": "urn:solid-server:default:ResourceStore_DataAccessor",
"@type": "DataAccessorBasedStore", "@type": "DataAccessorBasedStore",
"identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" }, "identifierStrategy": { "@id": "urn:solid-server:default:IdentifierStrategy" },

View File

@ -15,8 +15,9 @@
{ {
"comment": "This makes it so all incoming data is converted to quad objects.", "comment": "This makes it so all incoming data is converted to quad objects.",
"@id": "urn:solid-server:default:ResourceStore_Converting", "@id": "urn:solid-server:default:ResourceStore_Converting",
"RepresentationConvertingStore:_options_inConverter": { "@id": "urn:solid-server:default:RepresentationConverter" }, "@type": "RepresentationConvertingStore",
"RepresentationConvertingStore:_options_inType": "internal/quads" "options_inConverter": { "@id": "urn:solid-server:default:RepresentationConverter" },
"options_inType": "internal/quads"
} }
] ]
} }

View File

@ -23,7 +23,8 @@
{ {
"comment": "Block external access to the storage containers to avoid exposing internal data.", "comment": "Block external access to the storage containers to avoid exposing internal data.",
"@id": "urn:solid-server:default:PathBasedReader", "@id": "urn:solid-server:default:PathBasedReader",
"PathBasedReader:_paths": [ "@type": "PathBasedReader",
"paths": [
{ {
"PathBasedReader:_paths_key": "^/.internal(/.*)?$", "PathBasedReader:_paths_key": "^/.internal(/.*)?$",
"PathBasedReader:_paths_value": { "PathBasedReader:_paths_value": {
@ -36,7 +37,8 @@
{ {
"comment": "Marks the /.internal/ storage container as an auxiliary resource, thereby hiding it from container representations.", "comment": "Marks the /.internal/ storage container as an auxiliary resource, thereby hiding it from container representations.",
"@id": "urn:solid-server:default:AuxiliaryStrategy", "@id": "urn:solid-server:default:AuxiliaryStrategy",
"RoutingAuxiliaryStrategy:_sources": [ "@type": "RoutingAuxiliaryStrategy",
"sources": [
{ {
"@type": "ComposedAuxiliaryStrategy", "@type": "ComposedAuxiliaryStrategy",
"identifierStrategy": { "identifierStrategy": {

View File

@ -16,25 +16,28 @@
"comment": "Sets up a stack of utility stores used by most instances.", "comment": "Sets up a stack of utility stores used by most instances.",
"@id": "urn:solid-server:default:ResourceStore", "@id": "urn:solid-server:default:ResourceStore",
"@type": "MonitoringStore", "@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.", "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", "@id": "urn:solid-server:default:ResourceStore_Index",
"@type": "IndexRepresentationStore", "@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", "@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", "@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", "@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" }
} }
] ]
} }

View File

@ -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.", "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", "@id": "urn:solid-server:default:Finalizer",
"ParallelFinalizer:_finalizers": [ "@type": "ParallelFinalizer",
"finalizers": [
{ {
"@id": "urn:solid-server:default:RedisLocker" "@id": "urn:solid-server:default:RedisLocker"
} }

View File

@ -42,14 +42,16 @@
}, },
{ {
"@id": "urn:solid-server:default:QuotaStrategy", "@id": "urn:solid-server:default:QuotaStrategy",
"GlobalQuotaStrategy:_limit_amount": { "@type": "GlobalQuotaStrategy",
"limit_amount": {
"@id": "urn:solid-server:default:variable:GlobalQuota" "@id": "urn:solid-server:default:variable:GlobalQuota"
}, },
"GlobalQuotaStrategy:_limit_unit": "bytes" "limit_unit": "bytes"
}, },
{ {
"@id": "urn:solid-server:default:SizeReporter", "@id": "urn:solid-server:default:SizeReporter",
"FileSizeReporter:_ignoreFolders": [ "^/\\.internal$" ] "@type": "FileSizeReporter",
"ignoreFolders": [ "^/\\.internal$" ]
}, },
{ {
"@id": "urn:solid-server:test:Instances", "@id": "urn:solid-server:test:Instances",

View File

@ -42,10 +42,11 @@
}, },
{ {
"@id": "urn:solid-server:default:QuotaStrategy", "@id": "urn:solid-server:default:QuotaStrategy",
"PodQuotaStrategy:_limit_amount": { "@type": "PodQuotaStrategy",
"limit_amount": {
"@id": "urn:solid-server:default:variable:PodQuota" "@id": "urn:solid-server:default:variable:PodQuota"
}, },
"PodQuotaStrategy:_limit_unit": "bytes" "limit_unit": "bytes"
}, },
{ {
"@id": "urn:solid-server:test:Instances", "@id": "urn:solid-server:test:Instances",

View File

@ -35,7 +35,7 @@
{ {
"@id": "urn:solid-server:test:Instances", "@id": "urn:solid-server:test:Instances",
"@type": "RecordObject", "@type": "RecordObject",
"RecordObject:_record": [ "record": [
{ {
"RecordObject:_record_key": "app", "RecordObject:_record_key": "app",
"RecordObject:_record_value": { "@id": "urn:solid-server:default:App" } "RecordObject:_record_value": { "@id": "urn:solid-server:default:App" }

View File

@ -34,7 +34,7 @@
{ {
"@id": "urn:solid-server:test:Instances", "@id": "urn:solid-server:test:Instances",
"@type": "RecordObject", "@type": "RecordObject",
"RecordObject:_record": [ "record": [
{ {
"RecordObject:_record_key": "app", "RecordObject:_record_key": "app",
"RecordObject:_record_value": { "@id": "urn:solid-server:default:App" } "RecordObject:_record_value": { "@id": "urn:solid-server:default:App" }

View File

@ -35,7 +35,7 @@
{ {
"@id": "urn:solid-server:test:Instances", "@id": "urn:solid-server:test:Instances",
"@type": "RecordObject", "@type": "RecordObject",
"RecordObject:_record": [ "record": [
{ {
"RecordObject:_record_key": "app", "RecordObject:_record_key": "app",
"RecordObject:_record_value": { "@id": "urn:solid-server:default:App" } "RecordObject:_record_value": { "@id": "urn:solid-server:default:App" }

View File

@ -140,6 +140,7 @@ describe('AppRunner', (): void => {
dumpErrorState: true, dumpErrorState: true,
logLevel: 'info', logLevel: 'info',
mainModulePath: joinFilePath(__dirname, '../../../'), mainModulePath: joinFilePath(__dirname, '../../../'),
typeChecking: false,
}); });
expect(manager.configRegistry.register).toHaveBeenCalledTimes(1); expect(manager.configRegistry.register).toHaveBeenCalledTimes(1);
expect(manager.configRegistry.register) expect(manager.configRegistry.register)
@ -180,6 +181,7 @@ describe('AppRunner', (): void => {
dumpErrorState: true, dumpErrorState: true,
logLevel: 'debug', logLevel: 'debug',
mainModulePath: '/var/cwd/module/path', mainModulePath: '/var/cwd/module/path',
typeChecking: false,
}); });
expect(manager.configRegistry.register).toHaveBeenCalledTimes(1); expect(manager.configRegistry.register).toHaveBeenCalledTimes(1);
expect(manager.configRegistry.register).toHaveBeenCalledWith('/var/cwd/myconfig.json'); expect(manager.configRegistry.register).toHaveBeenCalledWith('/var/cwd/myconfig.json');
@ -273,6 +275,7 @@ describe('AppRunner', (): void => {
dumpErrorState: true, dumpErrorState: true,
logLevel: 'info', logLevel: 'info',
mainModulePath: joinFilePath(__dirname, '../../../'), mainModulePath: joinFilePath(__dirname, '../../../'),
typeChecking: false,
}); });
expect(manager.configRegistry.register).toHaveBeenCalledTimes(1); expect(manager.configRegistry.register).toHaveBeenCalledTimes(1);
expect(manager.configRegistry.register) expect(manager.configRegistry.register)
@ -323,6 +326,7 @@ describe('AppRunner', (): void => {
dumpErrorState: true, dumpErrorState: true,
logLevel: 'info', logLevel: 'info',
mainModulePath: joinFilePath(__dirname, '../../../'), mainModulePath: joinFilePath(__dirname, '../../../'),
typeChecking: false,
}); });
expect(manager.configRegistry.register).toHaveBeenCalledTimes(1); expect(manager.configRegistry.register).toHaveBeenCalledTimes(1);
expect(manager.configRegistry.register) expect(manager.configRegistry.register)