@essential-projects/metadata
Version:
the core metadata service for using the metadata from inside the domain
33 lines (25 loc) • 1.45 kB
text/typescript
import {IPromotionRoles, IRequiredClaim, ISchemaAttribute, ISchemaClass} from '@essential-projects/core_contracts';
import {INamespaceDecorators, IPromoteDecorator,
IRequiresClaimDecorator, ISchemaAttributeDecorator, ISchemaClassDecorator} from '@essential-projects/metadata_contracts';
import {promote, requiresClaim, schemaAttribute, schemaClass} from './index';
export function createDecoratorsForNamespace(namespace: string): INamespaceDecorators {
const namespaceSchemaAttribute: (schema: ISchemaAttribute) => ISchemaAttributeDecorator = (schema: ISchemaAttribute): ISchemaAttributeDecorator => {
return schemaAttribute(schema, namespace);
};
const namespaceSchemaClass: (schema: ISchemaClass) => ISchemaClassDecorator = (schema: ISchemaClass): ISchemaClassDecorator => {
return schemaClass(schema, namespace);
};
const namespaceRequiresClaim: (claim: IRequiredClaim) => IRequiresClaimDecorator = (claim: IRequiredClaim): IRequiresClaimDecorator => {
return requiresClaim(claim, namespace);
};
const namespacePromote: (roles: IPromotionRoles) => IPromoteDecorator = (roles: IPromotionRoles): IPromoteDecorator => {
return promote(roles, namespace);
};
const namespaceDecorators: INamespaceDecorators = {
schemaAttribute: namespaceSchemaAttribute,
schemaClass: namespaceSchemaClass,
requiresClaim: namespaceRequiresClaim,
promote: namespacePromote,
};
return namespaceDecorators;
}