Page Contents

Home > @loopback/metadata > DecoratorFactory

DecoratorFactory class

Base factory class for decorator functions

Signature:

export declare class DecoratorFactory<T, // Type of the metadata spec for individual class/method/property/parameter
M extends T | MetadataMap<T> | MetadataMap<T[]>, // Type of the metadata
D extends DecoratorType> 

Example

function classDecorator(spec: MySpec): ClassDecorator {
  return ClassDecoratorFactory.createDecorator('my-key', spec);
}

or

function classDecorator(spec: MySpec): ClassDecorator {
  const factory: ClassDecoratorFactory<MySpec>('my-key', spec);
  return factory.create();
}

These functions above declare @classDecorator that can be used as follows:

@classDecorator({x: 1})
class MyController {}

Constructors

Constructor Modifiers Description

(constructor)(key, spec, options)

Construct a new class decorator factory

Properties

Property Modifiers Type Description

decoratorName

protected

string

key

protected

string

options

protected

DecoratorOptions

spec

protected

T

TARGET

static

string

A constant to reference the target of a decoration

Methods

Method Modifiers Description

_createDecorator(key, spec, options)

protected

static

Create a decorator function

allowInheritance()

protected

cloneDeep(val)

static

create()

Create a decorator function of the given type. Each sub class MUST implement this method.

decorate(target, member, descriptorOrIndex)

protected

Base implementation of the decorator function

duplicateDecorationError(target, member, descriptorOrIndex)

protected

Create an error to report if the decorator is applied to the target more than once

getNumberOfParameters(target, member)

static

Get the number of parameters for a given constructor or method

getTarget(spec)

Get the optional decoration target of a given spec

getTargetName(target, member, descriptorOrIndex)

static

Get the qualified name of a decoration target.

inherit(inheritedMetadata)

protected

Inherit metadata from base classes. By default, this method merges base metadata into the spec if allowInheritance is set to true. To customize the behavior, this method can be overridden by sub classes.

mergeWithInherited(inheritedMetadata, target, member, descriptorOrIndex)

protected

This method is called by the default implementation of the decorator function to merge the spec argument from the decoration with the inherited metadata for a class, all properties, all methods, or all method parameters that are decorated by this decorator.

It MUST be overridden by subclasses to process inherited metadata.

mergeWithOwn(ownMetadata, target, member, descriptorOrIndex)

protected

This method is called by the default implementation of the decorator function to merge the spec argument from the decoration with the own metadata for a class, all properties, all methods, or all method parameters that are decorated by this decorator.

It MUST be overridden by subclasses to process own metadata.

withTarget(spec, target)

Set a reference to the target class or prototype for a given spec if it’s an object