From 8e138c36d19543a49f97241d3852e9f2284acfec Mon Sep 17 00:00:00 2001 From: Ruben Verborgh Date: Sat, 2 Jan 2021 22:03:48 +0100 Subject: [PATCH] refactor: Use types to create vocabularies. --- src/authorization/WebAclAuthorizer.ts | 2 +- src/index.ts | 4 +- src/init/AclInitializer.ts | 2 +- src/init/RootContainerInitializer.ts | 2 +- src/ldp/http/metadata/LinkTypeParser.ts | 2 +- src/ldp/http/metadata/SlugParser.ts | 2 +- .../response/CreatedResponseDescription.ts | 2 +- src/storage/DataAccessorBasedStore.ts | 2 +- src/storage/accessors/FileDataAccessor.ts | 2 +- src/storage/accessors/SparqlDataAccessor.ts | 2 +- src/storage/conversion/QuadToRdfConverter.ts | 2 +- src/storage/conversion/RdfToQuadConverter.ts | 2 +- src/storage/patch/SparqlUpdatePatchHandler.ts | 2 +- src/util/ResourceUtil.ts | 2 +- src/util/UriConstants.ts | 72 --------------- src/util/UriUtil.ts | 2 +- src/util/Vocabularies.ts | 89 +++++++++++++++++++ test/integration/LdpHandlerWithAuth.test.ts | 2 +- .../integration/LdpHandlerWithoutAuth.test.ts | 2 +- test/integration/LockingResourceStore.test.ts | 2 +- test/integration/LpdHandlerOperations.test.ts | 2 +- .../RepresentationConverter.test.ts | 2 +- .../unit/ldp/http/BasicResponseWriter.test.ts | 2 +- .../metadata/BasicMetadataExtractor.test.ts | 2 +- .../metadata/LinkRelMetadataWriter.test.ts | 2 +- .../ldp/http/metadata/LinkTypeParser.test.ts | 2 +- .../metadata/MappedMetadataWriter.test.ts | 2 +- .../unit/ldp/http/metadata/SlugParser.test.ts | 2 +- .../operations/PostOperationHandler.test.ts | 2 +- .../RepresentationMetadata.test.ts | 2 +- .../storage/DataAccessorBasedStore.test.ts | 2 +- .../RepresentationConvertingStore.test.ts | 2 +- .../accessors/FileDataAccessor.test.ts | 2 +- .../accessors/InMemoryDataAccessor.test.ts | 2 +- .../accessors/SparqlDataAccessor.test.ts | 2 +- .../conversion/ChainedConverter.test.ts | 2 +- .../conversion/QuadToRdfConverter.test.ts | 2 +- .../conversion/RdfToQuadConverter.test.ts | 2 +- test/unit/util/UriUtil.test.ts | 2 +- test/unit/util/Vocabularies.test.ts | 17 ++++ test/util/TestHelpers.ts | 2 +- 41 files changed, 145 insertions(+), 111 deletions(-) delete mode 100644 src/util/UriConstants.ts create mode 100644 src/util/Vocabularies.ts create mode 100644 test/unit/util/Vocabularies.test.ts diff --git a/src/authorization/WebAclAuthorizer.ts b/src/authorization/WebAclAuthorizer.ts index 9e8e3ae22..dd8bd7720 100644 --- a/src/authorization/WebAclAuthorizer.ts +++ b/src/authorization/WebAclAuthorizer.ts @@ -12,7 +12,7 @@ import { InternalServerError } from '../util/errors/InternalServerError'; import { NotFoundHttpError } from '../util/errors/NotFoundHttpError'; import { UnauthorizedHttpError } from '../util/errors/UnauthorizedHttpError'; import type { IdentifierStrategy } from '../util/identifiers/IdentifierStrategy'; -import { ACL, FOAF } from '../util/UriConstants'; +import { ACL, FOAF } from '../util/Vocabularies'; import type { AclManager } from './AclManager'; import type { AuthorizerArgs } from './Authorizer'; import { Authorizer } from './Authorizer'; diff --git a/src/index.ts b/src/index.ts index fbcb0f87d..6ad5ccad5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -199,6 +199,6 @@ export * from './util/QuadUtil'; export * from './util/RecordObject'; export * from './util/SequenceHandler'; export * from './util/StreamUtil'; -export * from './util/WaterfallHandler'; -export * from './util/UriConstants'; export * from './util/UriUtil'; +export * from './util/Vocabularies'; +export * from './util/WaterfallHandler'; diff --git a/src/init/AclInitializer.ts b/src/init/AclInitializer.ts index 0ad6accc4..b7c401dbe 100644 --- a/src/init/AclInitializer.ts +++ b/src/init/AclInitializer.ts @@ -7,7 +7,7 @@ import { TEXT_TURTLE } from '../util/ContentTypes'; import { NotFoundHttpError } from '../util/errors/NotFoundHttpError'; import { ensureTrailingSlash } from '../util/PathUtil'; import { guardedStreamFrom } from '../util/StreamUtil'; -import { CONTENT_TYPE } from '../util/UriConstants'; +import { CONTENT_TYPE } from '../util/Vocabularies'; import { Initializer } from './Initializer'; /** diff --git a/src/init/RootContainerInitializer.ts b/src/init/RootContainerInitializer.ts index 5bc693e45..53c0bb20a 100644 --- a/src/init/RootContainerInitializer.ts +++ b/src/init/RootContainerInitializer.ts @@ -8,8 +8,8 @@ import { NotFoundHttpError } from '../util/errors/NotFoundHttpError'; import { ensureTrailingSlash } from '../util/PathUtil'; import { generateResourceQuads } from '../util/ResourceUtil'; import { guardedStreamFrom } from '../util/StreamUtil'; -import { PIM, RDF } from '../util/UriConstants'; import { toCachedNamedNode } from '../util/UriUtil'; +import { PIM, RDF } from '../util/Vocabularies'; import { Initializer } from './Initializer'; import namedNode = DataFactory.namedNode; diff --git a/src/ldp/http/metadata/LinkTypeParser.ts b/src/ldp/http/metadata/LinkTypeParser.ts index 99c68108f..16925a464 100644 --- a/src/ldp/http/metadata/LinkTypeParser.ts +++ b/src/ldp/http/metadata/LinkTypeParser.ts @@ -2,7 +2,7 @@ import { DataFactory } from 'n3'; import { getLoggerFor } from '../../../logging/LogUtil'; import type { HttpRequest } from '../../../server/HttpRequest'; import { parseParameters, splitAndClean, transformQuotedStrings } from '../../../util/HeaderUtil'; -import { RDF } from '../../../util/UriConstants'; +import { RDF } from '../../../util/Vocabularies'; import type { RepresentationMetadata } from '../../representation/RepresentationMetadata'; import type { MetadataParser } from './MetadataParser'; diff --git a/src/ldp/http/metadata/SlugParser.ts b/src/ldp/http/metadata/SlugParser.ts index cf895a093..b49524bf1 100644 --- a/src/ldp/http/metadata/SlugParser.ts +++ b/src/ldp/http/metadata/SlugParser.ts @@ -1,7 +1,7 @@ import { getLoggerFor } from '../../../logging/LogUtil'; import type { HttpRequest } from '../../../server/HttpRequest'; import { BadRequestHttpError } from '../../../util/errors/BadRequestHttpError'; -import { HTTP } from '../../../util/UriConstants'; +import { HTTP } from '../../../util/Vocabularies'; import type { RepresentationMetadata } from '../../representation/RepresentationMetadata'; import type { MetadataParser } from './MetadataParser'; diff --git a/src/ldp/http/response/CreatedResponseDescription.ts b/src/ldp/http/response/CreatedResponseDescription.ts index 229276d5c..a8603e1a3 100644 --- a/src/ldp/http/response/CreatedResponseDescription.ts +++ b/src/ldp/http/response/CreatedResponseDescription.ts @@ -1,5 +1,5 @@ import { DataFactory } from 'n3'; -import { HTTP } from '../../../util/UriConstants'; +import { HTTP } from '../../../util/Vocabularies'; import { RepresentationMetadata } from '../../representation/RepresentationMetadata'; import type { ResourceIdentifier } from '../../representation/ResourceIdentifier'; import { ResponseDescription } from './ResponseDescription'; diff --git a/src/storage/DataAccessorBasedStore.ts b/src/storage/DataAccessorBasedStore.ts index b6e29fa80..b1eb8cfb4 100644 --- a/src/storage/DataAccessorBasedStore.ts +++ b/src/storage/DataAccessorBasedStore.ts @@ -22,7 +22,7 @@ import { import { parseQuads } from '../util/QuadUtil'; import { generateResourceQuads } from '../util/ResourceUtil'; import { guardedStreamFrom } from '../util/StreamUtil'; -import { CONTENT_TYPE, HTTP, LDP, PIM, RDF } from '../util/UriConstants'; +import { CONTENT_TYPE, HTTP, LDP, PIM, RDF } from '../util/Vocabularies'; import type { DataAccessor } from './accessors/DataAccessor'; import type { ResourceStore } from './ResourceStore'; diff --git a/src/storage/accessors/FileDataAccessor.ts b/src/storage/accessors/FileDataAccessor.ts index 77bc9023d..19e07198f 100644 --- a/src/storage/accessors/FileDataAccessor.ts +++ b/src/storage/accessors/FileDataAccessor.ts @@ -16,8 +16,8 @@ import type { Guarded } from '../../util/GuardedStream'; import { isContainerIdentifier } from '../../util/PathUtil'; import { parseQuads, pushQuad, serializeQuads } from '../../util/QuadUtil'; import { generateContainmentQuads, generateResourceQuads } from '../../util/ResourceUtil'; -import { CONTENT_TYPE, DCTERMS, LDP, POSIX, RDF, XSD } from '../../util/UriConstants'; import { toCachedNamedNode, toLiteral } from '../../util/UriUtil'; +import { CONTENT_TYPE, DCTERMS, LDP, POSIX, RDF, XSD } from '../../util/Vocabularies'; import type { FileIdentifierMapper, ResourceLink } from '../mapping/FileIdentifierMapper'; import type { DataAccessor } from './DataAccessor'; diff --git a/src/storage/accessors/SparqlDataAccessor.ts b/src/storage/accessors/SparqlDataAccessor.ts index 3b50b2a05..2b3dea737 100644 --- a/src/storage/accessors/SparqlDataAccessor.ts +++ b/src/storage/accessors/SparqlDataAccessor.ts @@ -27,8 +27,8 @@ import { guardStream } from '../../util/GuardedStream'; import type { Guarded } from '../../util/GuardedStream'; import type { IdentifierStrategy } from '../../util/identifiers/IdentifierStrategy'; import { isContainerIdentifier } from '../../util/PathUtil'; -import { CONTENT_TYPE, LDP } from '../../util/UriConstants'; import { toCachedNamedNode } from '../../util/UriUtil'; +import { CONTENT_TYPE, LDP } from '../../util/Vocabularies'; import type { DataAccessor } from './DataAccessor'; const { defaultGraph, namedNode, quad, variable } = DataFactory; diff --git a/src/storage/conversion/QuadToRdfConverter.ts b/src/storage/conversion/QuadToRdfConverter.ts index c3efe5e7b..35e4ccf7f 100644 --- a/src/storage/conversion/QuadToRdfConverter.ts +++ b/src/storage/conversion/QuadToRdfConverter.ts @@ -5,7 +5,7 @@ import { RepresentationMetadata } from '../../ldp/representation/RepresentationM import type { RepresentationPreferences } from '../../ldp/representation/RepresentationPreferences'; import { INTERNAL_QUADS } from '../../util/ContentTypes'; import { guardStream } from '../../util/GuardedStream'; -import { CONTENT_TYPE } from '../../util/UriConstants'; +import { CONTENT_TYPE } from '../../util/Vocabularies'; import { matchingMediaTypes } from './ConversionUtil'; import type { RepresentationConverterArgs } from './RepresentationConverter'; import { TypedRepresentationConverter } from './TypedRepresentationConverter'; diff --git a/src/storage/conversion/RdfToQuadConverter.ts b/src/storage/conversion/RdfToQuadConverter.ts index 21aeaff21..12c06f55a 100644 --- a/src/storage/conversion/RdfToQuadConverter.ts +++ b/src/storage/conversion/RdfToQuadConverter.ts @@ -5,7 +5,7 @@ import { RepresentationMetadata } from '../../ldp/representation/RepresentationM import { INTERNAL_QUADS } from '../../util/ContentTypes'; import { BadRequestHttpError } from '../../util/errors/BadRequestHttpError'; import { pipeSafely } from '../../util/StreamUtil'; -import { CONTENT_TYPE } from '../../util/UriConstants'; +import { CONTENT_TYPE } from '../../util/Vocabularies'; import type { RepresentationConverterArgs } from './RepresentationConverter'; import { TypedRepresentationConverter } from './TypedRepresentationConverter'; diff --git a/src/storage/patch/SparqlUpdatePatchHandler.ts b/src/storage/patch/SparqlUpdatePatchHandler.ts index 39df46886..6f08aa5be 100644 --- a/src/storage/patch/SparqlUpdatePatchHandler.ts +++ b/src/storage/patch/SparqlUpdatePatchHandler.ts @@ -14,7 +14,7 @@ import { NotFoundHttpError } from '../../util/errors/NotFoundHttpError'; import { NotImplementedHttpError } from '../../util/errors/NotImplementedHttpError'; import { guardStream } from '../../util/GuardedStream'; import type { ResourceLocker } from '../../util/locking/ResourceLocker'; -import { CONTENT_TYPE } from '../../util/UriConstants'; +import { CONTENT_TYPE } from '../../util/Vocabularies'; import type { ResourceStore } from '../ResourceStore'; import { PatchHandler } from './PatchHandler'; diff --git a/src/util/ResourceUtil.ts b/src/util/ResourceUtil.ts index d3b03dfab..a3c2011aa 100644 --- a/src/util/ResourceUtil.ts +++ b/src/util/ResourceUtil.ts @@ -2,8 +2,8 @@ import { DataFactory } from 'n3'; import type { NamedNode, Quad } from 'rdf-js'; import { RepresentationMetadata } from '../ldp/representation/RepresentationMetadata'; import { pushQuad } from './QuadUtil'; -import { LDP, RDF } from './UriConstants'; import { toCachedNamedNode } from './UriUtil'; +import { LDP, RDF } from './Vocabularies'; /** * Helper function to generate type quads for a Container or Resource. diff --git a/src/util/UriConstants.ts b/src/util/UriConstants.ts deleted file mode 100644 index 58058f887..000000000 --- a/src/util/UriConstants.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* eslint-disable @typescript-eslint/naming-convention */ -const createNamespace = (prefix: string): ((suf: string) => string) => (suffix: string): string => `${prefix}${suffix}`; - -const ACL_PREFIX = createNamespace('http://www.w3.org/ns/auth/acl#'); -export const ACL = { - accessTo: ACL_PREFIX('accessTo'), - agent: ACL_PREFIX('agent'), - agentClass: ACL_PREFIX('agentClass'), - default: ACL_PREFIX('default'), - mode: ACL_PREFIX('mode'), - - Write: ACL_PREFIX('Write'), - Read: ACL_PREFIX('Read'), - Append: ACL_PREFIX('Append'), - Control: ACL_PREFIX('Control'), -}; - -const DCTERMS_PREFIX = createNamespace('http://purl.org/dc/terms/'); -export const DCTERMS = { - modified: DCTERMS_PREFIX('modified'), -}; - -const FOAF_PREFIX = createNamespace('http://xmlns.com/foaf/0.1/'); -export const FOAF = { - Agent: FOAF_PREFIX('Agent'), - AuthenticatedAgent: FOAF_PREFIX('AuthenticatedAgent'), -}; - -const HTTP_PREFIX = createNamespace('urn:solid:http:'); -export const HTTP = { - location: HTTP_PREFIX('location'), - slug: HTTP_PREFIX('slug'), -}; - -const LDP_PREFIX = createNamespace('http://www.w3.org/ns/ldp#'); -export const LDP = { - contains: LDP_PREFIX('contains'), - - BasicContainer: LDP_PREFIX('BasicContainer'), - Container: LDP_PREFIX('Container'), - Resource: LDP_PREFIX('Resource'), -}; - -const MA_PREFIX = createNamespace('http://www.w3.org/ns/ma-ont#'); -export const MA = { - format: MA_PREFIX('format'), -}; - -const PIM_PREFIX = createNamespace('http://www.w3.org/ns/pim/space#'); -export const PIM = { - Storage: PIM_PREFIX('Storage'), -}; - -const POSIX_PREFIX = createNamespace('http://www.w3.org/ns/posix/stat#'); -export const POSIX = { - mtime: POSIX_PREFIX('mtime'), - size: POSIX_PREFIX('size'), -}; - -const RDF_PREFIX = createNamespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#'); -export const RDF = { - type: RDF_PREFIX('type'), -}; - -const XSD_PREFIX = createNamespace('http://www.w3.org/2001/XMLSchema#'); -export const XSD = { - dateTime: XSD_PREFIX('dateTime'), - integer: XSD_PREFIX('integer'), -}; - -// Alias for most commonly used URI -export const CONTENT_TYPE = MA.format; diff --git a/src/util/UriUtil.ts b/src/util/UriUtil.ts index 8360c39bd..4e461e726 100644 --- a/src/util/UriUtil.ts +++ b/src/util/UriUtil.ts @@ -1,6 +1,6 @@ import { DataFactory } from 'n3'; import type { Literal, NamedNode, Term } from 'rdf-js'; -import { CONTENT_TYPE } from './UriConstants'; +import { CONTENT_TYPE } from './Vocabularies'; const { namedNode, literal } = DataFactory; diff --git a/src/util/Vocabularies.ts b/src/util/Vocabularies.ts new file mode 100644 index 000000000..6850721a1 --- /dev/null +++ b/src/util/Vocabularies.ts @@ -0,0 +1,89 @@ +/* eslint-disable @typescript-eslint/naming-convention, function-paren-newline */ + +type PrefixResolver = (localName: string) => T; +type RecordOf = Record; + +export type Namespace = + PrefixResolver & RecordOf; + +/** + * Creates a function that expands local names from the given base URI, + * and exports the given local names as properties on the returned object. + */ +export const createNamespace = (baseUri: string, ...localNames: T[]): +Namespace => { + // Create a function that expands local names + const expanded = {} as Record; + const namespace = ((localName: string): string => { + if (!(localName in expanded)) { + expanded[localName] = `${baseUri}${localName}`; + } + return expanded[localName]; + }) as Namespace; + + // Expose the listed local names as properties + for (const localName of localNames) { + (namespace as RecordOf)[localName] = namespace(localName); + } + return namespace; +}; + +export const ACL = createNamespace('http://www.w3.org/ns/auth/acl#', + 'accessTo', + 'agent', + 'agentClass', + 'default', + 'mode', + + 'Write', + 'Read', + 'Append', + 'Control', +); + +export const DCTERMS = createNamespace('http://purl.org/dc/terms/', + 'modified', +); + +export const FOAF = createNamespace('http://xmlns.com/foaf/0.1/', + 'Agent', + 'AuthenticatedAgent', +); + +export const HTTP = createNamespace('urn:solid:http:', + 'location', + 'slug', +); + +export const LDP = createNamespace('http://www.w3.org/ns/ldp#', + 'contains', + + 'BasicContainer', + 'Container', + 'Resource', +); + +export const MA = createNamespace('http://www.w3.org/ns/ma-ont#', + 'format', +); + +export const PIM = createNamespace('http://www.w3.org/ns/pim/space#', + 'Storage', +); + +export const POSIX = createNamespace('http://www.w3.org/ns/posix/stat#', + 'mtime', + 'size', +); + +export const RDF = createNamespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#', + 'type', +); + +export const XSD = createNamespace('http://www.w3.org/2001/XMLSchema#', + 'dateTime', + 'integer', +); + +// Alias for most commonly used URI +export const CONTENT_TYPE = MA.format; diff --git a/test/integration/LdpHandlerWithAuth.test.ts b/test/integration/LdpHandlerWithAuth.test.ts index f3ced7656..7dc57bcc2 100644 --- a/test/integration/LdpHandlerWithAuth.test.ts +++ b/test/integration/LdpHandlerWithAuth.test.ts @@ -3,7 +3,7 @@ import { join } from 'path'; import type { HttpHandler, Initializer, ResourceStore } from '../../src/'; import { RepresentationMetadata } from '../../src/ldp/representation/RepresentationMetadata'; import { guardStream } from '../../src/util/GuardedStream'; -import { CONTENT_TYPE, LDP } from '../../src/util/UriConstants'; +import { CONTENT_TYPE, LDP } from '../../src/util/Vocabularies'; import { AclHelper, ResourceHelper } from '../util/TestHelpers'; import { BASE, getTestFolder, createFolder, removeFolder, instantiateFromConfig } from './Config'; diff --git a/test/integration/LdpHandlerWithoutAuth.test.ts b/test/integration/LdpHandlerWithoutAuth.test.ts index 0c08a8915..a4c34001f 100644 --- a/test/integration/LdpHandlerWithoutAuth.test.ts +++ b/test/integration/LdpHandlerWithoutAuth.test.ts @@ -1,5 +1,5 @@ import type { HttpHandler, Initializer, ResourceStore } from '../../src/'; -import { LDP } from '../../src/util/UriConstants'; +import { LDP } from '../../src/util/Vocabularies'; import { ResourceHelper } from '../util/TestHelpers'; import { BASE, getTestFolder, createFolder, removeFolder, instantiateFromConfig } from './Config'; diff --git a/test/integration/LockingResourceStore.test.ts b/test/integration/LockingResourceStore.test.ts index 5e61fbb60..eae571a1d 100644 --- a/test/integration/LockingResourceStore.test.ts +++ b/test/integration/LockingResourceStore.test.ts @@ -13,7 +13,7 @@ import type { ResourceLocker } from '../../src/util/locking/ResourceLocker'; import { SingleThreadedResourceLocker } from '../../src/util/locking/SingleThreadedResourceLocker'; import { WrappedExpiringResourceLocker } from '../../src/util/locking/WrappedExpiringResourceLocker'; import { guardedStreamFrom } from '../../src/util/StreamUtil'; -import { CONTENT_TYPE } from '../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../src/util/Vocabularies'; import { BASE } from './Config'; describe('A LockingResourceStore', (): void => { diff --git a/test/integration/LpdHandlerOperations.test.ts b/test/integration/LpdHandlerOperations.test.ts index d28ab34d3..bf274e8d6 100644 --- a/test/integration/LpdHandlerOperations.test.ts +++ b/test/integration/LpdHandlerOperations.test.ts @@ -4,7 +4,7 @@ import { namedNode, quad } from '@rdfjs/data-model'; import { Parser } from 'n3'; import type { MockResponse } from 'node-mocks-http'; import type { HttpHandler } from '../../src/server/HttpHandler'; -import { LDP } from '../../src/util/UriConstants'; +import { LDP } from '../../src/util/Vocabularies'; import { performRequest } from '../util/Util'; import { BASE, instantiateFromConfig } from './Config'; diff --git a/test/integration/RepresentationConverter.test.ts b/test/integration/RepresentationConverter.test.ts index acfb248ba..bbfdec707 100644 --- a/test/integration/RepresentationConverter.test.ts +++ b/test/integration/RepresentationConverter.test.ts @@ -4,7 +4,7 @@ import { ChainedConverter } from '../../src/storage/conversion/ChainedConverter' import { QuadToRdfConverter } from '../../src/storage/conversion/QuadToRdfConverter'; import { RdfToQuadConverter } from '../../src/storage/conversion/RdfToQuadConverter'; import { guardedStreamFrom, readableToString } from '../../src/util/StreamUtil'; -import { CONTENT_TYPE } from '../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../src/util/Vocabularies'; describe('A ChainedConverter', (): void => { const converters = [ diff --git a/test/unit/ldp/http/BasicResponseWriter.test.ts b/test/unit/ldp/http/BasicResponseWriter.test.ts index 33328287b..944eba58f 100644 --- a/test/unit/ldp/http/BasicResponseWriter.test.ts +++ b/test/unit/ldp/http/BasicResponseWriter.test.ts @@ -9,7 +9,7 @@ import { RepresentationMetadata } from '../../../../src/ldp/representation/Repre import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes'; import { NotImplementedHttpError } from '../../../../src/util/errors/NotImplementedHttpError'; import { guardedStreamFrom } from '../../../../src/util/StreamUtil'; -import { CONTENT_TYPE } from '../../../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../../../src/util/Vocabularies'; import { StaticAsyncHandler } from '../../../util/StaticAsyncHandler'; describe('A BasicResponseWriter', (): void => { diff --git a/test/unit/ldp/http/metadata/BasicMetadataExtractor.test.ts b/test/unit/ldp/http/metadata/BasicMetadataExtractor.test.ts index be37a0393..78b7d7480 100644 --- a/test/unit/ldp/http/metadata/BasicMetadataExtractor.test.ts +++ b/test/unit/ldp/http/metadata/BasicMetadataExtractor.test.ts @@ -2,7 +2,7 @@ import { BasicMetadataExtractor } from '../../../../../src/ldp/http/metadata/Bas import type { MetadataParser } from '../../../../../src/ldp/http/metadata/MetadataParser'; import type { RepresentationMetadata } from '../../../../../src/ldp/representation/RepresentationMetadata'; import type { HttpRequest } from '../../../../../src/server/HttpRequest'; -import { RDF } from '../../../../../src/util/UriConstants'; +import { RDF } from '../../../../../src/util/Vocabularies'; class BasicParser implements MetadataParser { private readonly header: string; diff --git a/test/unit/ldp/http/metadata/LinkRelMetadataWriter.test.ts b/test/unit/ldp/http/metadata/LinkRelMetadataWriter.test.ts index cf7f24d47..39df5155a 100644 --- a/test/unit/ldp/http/metadata/LinkRelMetadataWriter.test.ts +++ b/test/unit/ldp/http/metadata/LinkRelMetadataWriter.test.ts @@ -1,8 +1,8 @@ import { createResponse } from 'node-mocks-http'; import { LinkRelMetadataWriter } from '../../../../../src/ldp/http/metadata/LinkRelMetadataWriter'; import { RepresentationMetadata } from '../../../../../src/ldp/representation/RepresentationMetadata'; -import { LDP, RDF } from '../../../../../src/util/UriConstants'; import { toCachedNamedNode } from '../../../../../src/util/UriUtil'; +import { LDP, RDF } from '../../../../../src/util/Vocabularies'; describe('A LinkRelMetadataWriter', (): void => { const writer = new LinkRelMetadataWriter({ [RDF.type]: 'type', dummy: 'dummy' }); diff --git a/test/unit/ldp/http/metadata/LinkTypeParser.test.ts b/test/unit/ldp/http/metadata/LinkTypeParser.test.ts index 063a668cf..b36854c74 100644 --- a/test/unit/ldp/http/metadata/LinkTypeParser.test.ts +++ b/test/unit/ldp/http/metadata/LinkTypeParser.test.ts @@ -1,7 +1,7 @@ import { LinkTypeParser } from '../../../../../src/ldp/http/metadata/LinkTypeParser'; import { RepresentationMetadata } from '../../../../../src/ldp/representation/RepresentationMetadata'; import type { HttpRequest } from '../../../../../src/server/HttpRequest'; -import { RDF } from '../../../../../src/util/UriConstants'; +import { RDF } from '../../../../../src/util/Vocabularies'; describe('A LinkTypeParser', (): void => { const parser = new LinkTypeParser(); diff --git a/test/unit/ldp/http/metadata/MappedMetadataWriter.test.ts b/test/unit/ldp/http/metadata/MappedMetadataWriter.test.ts index f8dfab794..22e8bcbe7 100644 --- a/test/unit/ldp/http/metadata/MappedMetadataWriter.test.ts +++ b/test/unit/ldp/http/metadata/MappedMetadataWriter.test.ts @@ -1,7 +1,7 @@ import { createResponse } from 'node-mocks-http'; import { MappedMetadataWriter } from '../../../../../src/ldp/http/metadata/MappedMetadataWriter'; import { RepresentationMetadata } from '../../../../../src/ldp/representation/RepresentationMetadata'; -import { CONTENT_TYPE } from '../../../../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../../../../src/util/Vocabularies'; describe('A MappedMetadataWriter', (): void => { const writer = new MappedMetadataWriter({ [CONTENT_TYPE]: 'content-type', dummy: 'dummy' }); diff --git a/test/unit/ldp/http/metadata/SlugParser.test.ts b/test/unit/ldp/http/metadata/SlugParser.test.ts index 93a1c3035..d0277bbf6 100644 --- a/test/unit/ldp/http/metadata/SlugParser.test.ts +++ b/test/unit/ldp/http/metadata/SlugParser.test.ts @@ -2,7 +2,7 @@ import { SlugParser } from '../../../../../src/ldp/http/metadata/SlugParser'; import { RepresentationMetadata } from '../../../../../src/ldp/representation/RepresentationMetadata'; import type { HttpRequest } from '../../../../../src/server/HttpRequest'; import { BadRequestHttpError } from '../../../../../src/util/errors/BadRequestHttpError'; -import { HTTP } from '../../../../../src/util/UriConstants'; +import { HTTP } from '../../../../../src/util/Vocabularies'; describe('A SlugParser', (): void => { const parser = new SlugParser(); diff --git a/test/unit/ldp/operations/PostOperationHandler.test.ts b/test/unit/ldp/operations/PostOperationHandler.test.ts index 9f848ecd2..380b51d76 100644 --- a/test/unit/ldp/operations/PostOperationHandler.test.ts +++ b/test/unit/ldp/operations/PostOperationHandler.test.ts @@ -5,7 +5,7 @@ import type { ResourceIdentifier } from '../../../../src/ldp/representation/Reso import type { ResourceStore } from '../../../../src/storage/ResourceStore'; import { BadRequestHttpError } from '../../../../src/util/errors/BadRequestHttpError'; import { NotImplementedHttpError } from '../../../../src/util/errors/NotImplementedHttpError'; -import { HTTP } from '../../../../src/util/UriConstants'; +import { HTTP } from '../../../../src/util/Vocabularies'; describe('A PostOperationHandler', (): void => { const store = { diff --git a/test/unit/ldp/representation/RepresentationMetadata.test.ts b/test/unit/ldp/representation/RepresentationMetadata.test.ts index 03d53a6b6..9d87e35e8 100644 --- a/test/unit/ldp/representation/RepresentationMetadata.test.ts +++ b/test/unit/ldp/representation/RepresentationMetadata.test.ts @@ -2,7 +2,7 @@ import 'jest-rdf'; import { literal, namedNode, quad } from '@rdfjs/data-model'; import type { Literal, NamedNode, Quad } from 'rdf-js'; import { RepresentationMetadata } from '../../../../src/ldp/representation/RepresentationMetadata'; -import { CONTENT_TYPE } from '../../../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../../../src/util/Vocabularies'; describe('A RepresentationMetadata', (): void => { let metadata: RepresentationMetadata; diff --git a/test/unit/storage/DataAccessorBasedStore.test.ts b/test/unit/storage/DataAccessorBasedStore.test.ts index e3e847f9b..4b9449d2d 100644 --- a/test/unit/storage/DataAccessorBasedStore.test.ts +++ b/test/unit/storage/DataAccessorBasedStore.test.ts @@ -18,8 +18,8 @@ import type { Guarded } from '../../../src/util/GuardedStream'; import { SingleRootIdentifierStrategy } from '../../../src/util/identifiers/SingleRootIdentifierStrategy'; import * as quadUtil from '../../../src/util/QuadUtil'; import { guardedStreamFrom } from '../../../src/util/StreamUtil'; -import { CONTENT_TYPE, HTTP, LDP, PIM, RDF } from '../../../src/util/UriConstants'; import { toCachedNamedNode } from '../../../src/util/UriUtil'; +import { CONTENT_TYPE, HTTP, LDP, PIM, RDF } from '../../../src/util/Vocabularies'; import quad = DataFactory.quad; import namedNode = DataFactory.namedNode; diff --git a/test/unit/storage/RepresentationConvertingStore.test.ts b/test/unit/storage/RepresentationConvertingStore.test.ts index 26a8bf9c9..5e105045d 100644 --- a/test/unit/storage/RepresentationConvertingStore.test.ts +++ b/test/unit/storage/RepresentationConvertingStore.test.ts @@ -4,7 +4,7 @@ import type { RepresentationConverter } from '../../../src/storage/conversion/Re import { RepresentationConvertingStore } from '../../../src/storage/RepresentationConvertingStore'; import type { ResourceStore } from '../../../src/storage/ResourceStore'; import { InternalServerError } from '../../../src/util/errors/InternalServerError'; -import { CONTENT_TYPE } from '../../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../../src/util/Vocabularies'; describe('A RepresentationConvertingStore', (): void => { let store: RepresentationConvertingStore; diff --git a/test/unit/storage/accessors/FileDataAccessor.test.ts b/test/unit/storage/accessors/FileDataAccessor.test.ts index 891462582..6d4f20857 100644 --- a/test/unit/storage/accessors/FileDataAccessor.test.ts +++ b/test/unit/storage/accessors/FileDataAccessor.test.ts @@ -12,8 +12,8 @@ import type { SystemError } from '../../../../src/util/errors/SystemError'; import { UnsupportedMediaTypeHttpError } from '../../../../src/util/errors/UnsupportedMediaTypeHttpError'; import type { Guarded } from '../../../../src/util/GuardedStream'; import { guardedStreamFrom, readableToString } from '../../../../src/util/StreamUtil'; -import { CONTENT_TYPE, DCTERMS, LDP, POSIX, RDF, XSD } from '../../../../src/util/UriConstants'; import { toCachedNamedNode, toLiteral } from '../../../../src/util/UriUtil'; +import { CONTENT_TYPE, DCTERMS, LDP, POSIX, RDF, XSD } from '../../../../src/util/Vocabularies'; import { mockFs } from '../../../util/Util'; jest.mock('fs'); diff --git a/test/unit/storage/accessors/InMemoryDataAccessor.test.ts b/test/unit/storage/accessors/InMemoryDataAccessor.test.ts index 4385694fd..8a9ce7e70 100644 --- a/test/unit/storage/accessors/InMemoryDataAccessor.test.ts +++ b/test/unit/storage/accessors/InMemoryDataAccessor.test.ts @@ -6,8 +6,8 @@ import { APPLICATION_OCTET_STREAM } from '../../../../src/util/ContentTypes'; import { NotFoundHttpError } from '../../../../src/util/errors/NotFoundHttpError'; import type { Guarded } from '../../../../src/util/GuardedStream'; import { guardedStreamFrom, readableToString } from '../../../../src/util/StreamUtil'; -import { CONTENT_TYPE, LDP, RDF } from '../../../../src/util/UriConstants'; import { toCachedNamedNode } from '../../../../src/util/UriUtil'; +import { CONTENT_TYPE, LDP, RDF } from '../../../../src/util/Vocabularies'; describe('An InMemoryDataAccessor', (): void => { const base = 'http://test.com/'; diff --git a/test/unit/storage/accessors/SparqlDataAccessor.test.ts b/test/unit/storage/accessors/SparqlDataAccessor.test.ts index 5faf59d43..d414c71a8 100644 --- a/test/unit/storage/accessors/SparqlDataAccessor.test.ts +++ b/test/unit/storage/accessors/SparqlDataAccessor.test.ts @@ -14,8 +14,8 @@ import { UnsupportedMediaTypeHttpError } from '../../../../src/util/errors/Unsup import type { Guarded } from '../../../../src/util/GuardedStream'; import { SingleRootIdentifierStrategy } from '../../../../src/util/identifiers/SingleRootIdentifierStrategy'; import { guardedStreamFrom } from '../../../../src/util/StreamUtil'; -import { CONTENT_TYPE, LDP, RDF } from '../../../../src/util/UriConstants'; import { toCachedNamedNode } from '../../../../src/util/UriUtil'; +import { CONTENT_TYPE, LDP, RDF } from '../../../../src/util/Vocabularies'; const { literal, namedNode, quad } = DataFactory; diff --git a/test/unit/storage/conversion/ChainedConverter.test.ts b/test/unit/storage/conversion/ChainedConverter.test.ts index 4ccae6910..c96104e76 100644 --- a/test/unit/storage/conversion/ChainedConverter.test.ts +++ b/test/unit/storage/conversion/ChainedConverter.test.ts @@ -5,7 +5,7 @@ import { ChainedConverter } from '../../../../src/storage/conversion/ChainedConv import { supportsConversion } from '../../../../src/storage/conversion/ConversionUtil'; import type { RepresentationConverterArgs } from '../../../../src/storage/conversion/RepresentationConverter'; import { TypedRepresentationConverter } from '../../../../src/storage/conversion/TypedRepresentationConverter'; -import { CONTENT_TYPE } from '../../../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../../../src/util/Vocabularies'; class DummyConverter extends TypedRepresentationConverter { private readonly inTypes: Record; diff --git a/test/unit/storage/conversion/QuadToRdfConverter.test.ts b/test/unit/storage/conversion/QuadToRdfConverter.test.ts index 78b3b4b59..6da6632d4 100644 --- a/test/unit/storage/conversion/QuadToRdfConverter.test.ts +++ b/test/unit/storage/conversion/QuadToRdfConverter.test.ts @@ -8,7 +8,7 @@ import type { RepresentationPreferences } from '../../../../src/ldp/representati import type { ResourceIdentifier } from '../../../../src/ldp/representation/ResourceIdentifier'; import { QuadToRdfConverter } from '../../../../src/storage/conversion/QuadToRdfConverter'; import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes'; -import { CONTENT_TYPE } from '../../../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../../../src/util/Vocabularies'; describe('A QuadToRdfConverter', (): void => { const converter = new QuadToRdfConverter(); diff --git a/test/unit/storage/conversion/RdfToQuadConverter.test.ts b/test/unit/storage/conversion/RdfToQuadConverter.test.ts index 0a4d1d794..4bed5ddc2 100644 --- a/test/unit/storage/conversion/RdfToQuadConverter.test.ts +++ b/test/unit/storage/conversion/RdfToQuadConverter.test.ts @@ -11,7 +11,7 @@ import type { ResourceIdentifier } from '../../../../src/ldp/representation/Reso import { RdfToQuadConverter } from '../../../../src/storage/conversion/RdfToQuadConverter'; import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes'; import { BadRequestHttpError } from '../../../../src/util/errors/BadRequestHttpError'; -import { CONTENT_TYPE } from '../../../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../../../src/util/Vocabularies'; describe('A RdfToQuadConverter.test.ts', (): void => { const converter = new RdfToQuadConverter(); diff --git a/test/unit/util/UriUtil.test.ts b/test/unit/util/UriUtil.test.ts index d750c87c3..bb8add347 100644 --- a/test/unit/util/UriUtil.test.ts +++ b/test/unit/util/UriUtil.test.ts @@ -1,6 +1,5 @@ import 'jest-rdf'; import { literal, namedNode } from '@rdfjs/data-model'; -import { CONTENT_TYPE, XSD } from '../../../src/util/UriConstants'; import { toCachedNamedNode, toSubjectTerm, @@ -9,6 +8,7 @@ import { toLiteral, isTerm, } from '../../../src/util/UriUtil'; +import { CONTENT_TYPE, XSD } from '../../../src/util/Vocabularies'; describe('An UriUtil', (): void => { describe('isTerm function', (): void => { diff --git a/test/unit/util/Vocabularies.test.ts b/test/unit/util/Vocabularies.test.ts new file mode 100644 index 000000000..30775c7c1 --- /dev/null +++ b/test/unit/util/Vocabularies.test.ts @@ -0,0 +1,17 @@ +import { LDP } from '../../../src/util/Vocabularies'; + +describe('Vocabularies', (): void => { + describe('LDP', (): void => { + it('can create new properties.', (): void => { + expect(LDP('new')).toBe('http://www.w3.org/ns/ldp#new'); + }); + + it('caches new properties.', (): void => { + expect(LDP('new')).toBe(LDP('new')); + }); + + it('exposes ldp:contains.', (): void => { + expect(LDP.contains).toBe('http://www.w3.org/ns/ldp#contains'); + }); + }); +}); diff --git a/test/util/TestHelpers.ts b/test/util/TestHelpers.ts index 4511a5caa..aa34e4812 100644 --- a/test/util/TestHelpers.ts +++ b/test/util/TestHelpers.ts @@ -8,7 +8,7 @@ import type { MockResponse } from 'node-mocks-http'; import { createResponse } from 'node-mocks-http'; import type { ResourceStore, PermissionSet, HttpHandler, HttpRequest } from '../../src/'; import { guardedStreamFrom, RepresentationMetadata, ensureTrailingSlash } from '../../src/'; -import { CONTENT_TYPE } from '../../src/util/UriConstants'; +import { CONTENT_TYPE } from '../../src/util/Vocabularies'; import { performRequest } from './Util'; /* eslint-disable jest/no-standalone-expect */