@esfx/metadata Package

    Provides an API for defining metadata about an object.

    Installation

    npm i @esfx/metadata
    

    Usage

    • TypeScript
    • JavaScript (CommonJS)
    import { Metadata, getObjectMetadata, getPropertyMetadata, getParameterMetadata } from "@esfx/metadata";
    
    const Service = name => Metadata("Service", name);
    const ReturnType = type => Metadata("ReturnType", type);
    const Type = type => Metadata("Type", type);
    
    @Service("MyService")
    class MyClass {
        @ReturnType("string")
        method(@Type("number") x: number) {
            return "hi";
        }
    }
    
    const c = new MyClass();
    getObjectMetadata(MyClass, "Service"); // "MyService"
    getPropertyMetadata(c, "method", "ReturnType"); // "string"
    getParameterMetadata(c, "method", 0, "Type"); // "number"
    
    const {
        defineClassMetadata,
        defineMemberMetadata,
        defineParameterMetadata,
        getObjectMetadata,
        getPropertyMetadata,
        getParameterMetadata
    } = require("@esfx/metadata");
    
    class MyClass {
        method(x) {
            return "hi";
        }
    }
    
    defineClassMetadata(MyClass, "Service", "MyService");
    defineMemberMetadata(MyClass.prototype, "method", "ReturnType", "string");
    defineParameterMetadata(MyClass.prototype, "method", 0, "Type", "number");
    
    const c = new MyClass();
    getObjectMetadata(MyClass, "Service"); // "MyService"
    getPropertyMetadata(c, "method", "ReturnType"); // "string"
    getParameterMetadata(c, "method", 0, "Type"); // "number"
    

    Functions

    defineObjectMetadata(target, metadataKey, metadataValue)

    Define metadata on an object.

    Declaration
    export declare function defineObjectMetadata(target: object, metadataKey: MetadataKey, metadataValue: unknown): void;
    Parameters
    target
    object

    The object.

    metadataKey
    MetadataKey

    The metadata key.

    metadataValue
    unknown

    The metadata value.

    Returns
    void

    defineParameterMetadata(target, propertyKey, parameterIndex, metadataKey, metadataValue)

    Define metadata on a parameter of a method of an object.

    Declaration
    export declare function defineParameterMetadata(target: object, propertyKey: PropertyKey, parameterIndex: number, metadataKey: MetadataKey, metadataValue: unknown): void;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    parameterIndex
    number

    The ordinal index of the parameter.

    metadataKey
    MetadataKey

    The metadata key.

    metadataValue
    unknown

    The metadata value.

    Returns
    void

    definePropertyMetadata(target, propertyKey, metadataKey, metadataValue)

    Define metadata for a property of an object. The property does not have to exist.

    Declaration
    export declare function definePropertyMetadata(target: object, propertyKey: PropertyKey, metadataKey: MetadataKey, metadataValue: unknown): void;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the property.

    metadataKey
    MetadataKey

    The metadata key.

    metadataValue
    unknown

    The metadata value.

    Returns
    void

    deleteObjectMetadata(target, metadataKey)

    Deletes an own metadata key from an object.

    Declaration
    export declare function deleteObjectMetadata(target: object, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The object.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    deleteParameterMetadata(target, propertyKey, parameterIndex, metadataKey)

    Deletes an own metadata key from a parameter of a method of an object.

    Declaration
    export declare function deleteParameterMetadata(target: object, propertyKey: PropertyKey, parameterIndex: number, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    parameterIndex
    number

    The ordinal index of the parameter.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    deletePropertyMetadata(target, propertyKey, metadataKey)

    Deletes an own metadata key from a property of an object.

    Declaration
    export declare function deletePropertyMetadata(target: object, propertyKey: PropertyKey, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the property.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    getMetadataParameterLength(target, propertyKey)

    Gets the maximum known length of a method of an object or its prototypes from its parameters that have metadata metadata.

    Declaration
    export declare function getMetadataParameterLength(target: object, propertyKey: PropertyKey): number;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    Returns
    number

    getMetadataProperties(target)

    Gets the property names for an object or its prototypes for which there is metadata defined.

    Declaration
    export declare function getMetadataProperties(target: object): (string | symbol)[];
    Parameters
    target
    object

    An object.

    Returns
    (string | symbol)[]

    getObjectMetadata(target, metadataKey)

    Gets the metadata value for a metadata key on an object or its prototypes.

    Declaration
    export declare function getObjectMetadata(target: object, metadataKey: MetadataKey): unknown;
    Parameters
    target
    object

    The object.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    unknown

    getObjectMetadataKeys(target)

    Gets the metadata keys defined on an object or its prototypes.

    Declaration
    export declare function getObjectMetadataKeys(target: object): MetadataKey[];
    Parameters
    target
    object

    The object.

    Returns
    MetadataKey[]

    getOwnMetadataParameterLength(target, propertyKey)

    Gets the maximum known length of a method of an object from its parameters that have metadata metadata.

    Declaration
    export declare function getOwnMetadataParameterLength(target: object, propertyKey: PropertyKey): number;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    Returns
    number

    getOwnMetadataProperties(target)

    Gets the own property names for an object for which there is metadata defined.

    Declaration
    export declare function getOwnMetadataProperties(target: object): (string | symbol)[];
    Parameters
    target
    object

    An object.

    Returns
    (string | symbol)[]

    getOwnObjectMetadata(target, metadataKey)

    Gets the metadata value for an own metadata key on an object.

    Declaration
    export declare function getOwnObjectMetadata(target: object, metadataKey: MetadataKey): unknown;
    Parameters
    target
    object

    The object.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    unknown

    getOwnObjectMetadataKeys(target)

    Gets the own metadata keys defined on an object.

    Declaration
    export declare function getOwnObjectMetadataKeys(target: object): MetadataKey[];
    Parameters
    target
    object

    The object.

    Returns
    MetadataKey[]

    getOwnParameterMetadata(target, propertyKey, parameterIndex, metadataKey)

    Gets the metadata value for an own metadata key on a parameter of a method of an object.

    Declaration
    export declare function getOwnParameterMetadata(target: object, propertyKey: PropertyKey, parameterIndex: number, metadataKey: MetadataKey): unknown;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    parameterIndex
    number

    The ordinal index of the parameter.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    unknown

    getOwnParameterMetadataKeys(target, propertyKey, parameterIndex)

    Gets the own metadata keys defined on a parameter of a method of an object.

    Declaration
    export declare function getOwnParameterMetadataKeys(target: object, propertyKey: PropertyKey, parameterIndex: number): MetadataKey[];
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    parameterIndex
    number

    The ordinal index of the parameter.

    Returns
    MetadataKey[]

    getOwnPropertyMetadata(target, propertyKey, metadataKey)

    Gets the metadata value for an own metadata key on a property of an object.

    Declaration
    export declare function getOwnPropertyMetadata(target: object, propertyKey: PropertyKey, metadataKey: MetadataKey): unknown;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the property.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    unknown

    getOwnPropertyMetadataKeys(target, propertyKey)

    Gets the own metadata keys defined on a property of an object.

    Declaration
    export declare function getOwnPropertyMetadataKeys(target: object, propertyKey: PropertyKey): MetadataKey[];
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the property.

    Returns
    MetadataKey[]

    getParameterMetadata(target, propertyKey, parameterIndex, metadataKey)

    Gets the metadata value for a metadata key on a parameter of a method of an object or its prototypes.

    Declaration
    export declare function getParameterMetadata(target: object, propertyKey: PropertyKey, parameterIndex: number, metadataKey: MetadataKey): unknown;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    parameterIndex
    number

    The ordinal index of the parameter.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    unknown

    getParameterMetadataKeys(target, propertyKey, parameterIndex)

    Gets the metadata keys defined on a parameter of a method of an object or its prototypes.

    Declaration
    export declare function getParameterMetadataKeys(target: object, propertyKey: PropertyKey, parameterIndex: number): MetadataKey[];
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    parameterIndex
    number

    The ordinal index of the parameter.

    Returns
    MetadataKey[]

    getPropertyMetadata(target, propertyKey, metadataKey)

    Gets the metadata value for a metadata key on a property of an object or its prototypes.

    Declaration
    export declare function getPropertyMetadata(target: object, propertyKey: PropertyKey, metadataKey: MetadataKey): unknown;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the property.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    unknown

    getPropertyMetadataKeys(target, propertyKey)

    Gets the metadata keys defined on a property of an object or its prototypes.

    Declaration
    export declare function getPropertyMetadataKeys(target: object, propertyKey: PropertyKey): MetadataKey[];
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the property.

    Returns
    MetadataKey[]

    hasObjectMetadata(target, metadataKey)

    Tests whether an object or its prototypes have metadata for the provided key.

    Declaration
    export declare function hasObjectMetadata(target: object, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The object.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    hasOwnObjectMetadata(target, metadataKey)

    Tests whether an object has own metadata for the provided key.

    Declaration
    export declare function hasOwnObjectMetadata(target: object, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The object.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    hasOwnParameterMetadata(target, propertyKey, parameterIndex, metadataKey)

    Tests whether a parameter of a method of an object has own metadata for the provided key.

    Declaration
    export declare function hasOwnParameterMetadata(target: object, propertyKey: PropertyKey, parameterIndex: number, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    parameterIndex
    number

    The ordinal index of the parameter.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    hasOwnPropertyMetadata(target, propertyKey, metadataKey)

    Tests whether a property of an object has own metadata for the provided key.

    Declaration
    export declare function hasOwnPropertyMetadata(target: object, propertyKey: PropertyKey, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the property.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    hasParameterMetadata(target, propertyKey, parameterIndex, metadataKey)

    Tests whether a parameter of a method of an object or its prototypes have metadata for the provided key.

    Declaration
    export declare function hasParameterMetadata(target: object, propertyKey: PropertyKey, parameterIndex: number, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the method.

    parameterIndex
    number

    The ordinal index of the parameter.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    hasPropertyMetadata(target, propertyKey, metadataKey)

    Tests whether a property of an object or its prototypes have metadata for the provided key.

    Declaration
    export declare function hasPropertyMetadata(target: object, propertyKey: PropertyKey, metadataKey: MetadataKey): boolean;
    Parameters
    target
    object

    The target object.

    propertyKey
    PropertyKey

    The name of the property.

    metadataKey
    MetadataKey

    The metadata key.

    Returns
    boolean

    Variables

    metadata

    Attaches metadata to a class, member, or parameter.

    Declaration
    metadata: ((metadataKey: MetadataKey, metadataValue?: unknown) => {
        (target: Function): void;
        (target: object, key: PropertyKey, descriptor?: PropertyDescriptor | undefined): void;
        (target: object, key: PropertyKey, parameterIndex: number): void;
    }) & {
        defineObjectMetadata: typeof defineObjectMetadata;
        deleteObjectMetadata: typeof deleteObjectMetadata;
        hasOwnObjectMetadata: typeof hasOwnObjectMetadata;
        hasObjectMetadata: typeof hasObjectMetadata;
        getOwnObjectMetadata: typeof getOwnObjectMetadata;
        getObjectMetadata: typeof getObjectMetadata;
        getOwnObjectMetadataKeys: typeof getOwnObjectMetadataKeys;
        getObjectMetadataKeys: typeof getObjectMetadataKeys;
        definePropertyMetadata: typeof definePropertyMetadata;
        deletePropertyMetadata: typeof deletePropertyMetadata;
        hasOwnPropertyMetadata: typeof hasOwnPropertyMetadata;
        hasPropertyMetadata: typeof hasPropertyMetadata;
        getOwnPropertyMetadata: typeof getOwnPropertyMetadata;
        getPropertyMetadata: typeof getPropertyMetadata;
        getOwnPropertyMetadataKeys: typeof getOwnPropertyMetadataKeys;
        getPropertyMetadataKeys: typeof getPropertyMetadataKeys;
        getOwnMetadataProperties: typeof getOwnMetadataProperties;
        getMetadataProperties: typeof getMetadataProperties;
        defineParameterMetadata: typeof defineParameterMetadata;
        deleteParameterMetadata: typeof deleteParameterMetadata;
        hasOwnParameterMetadata: typeof hasOwnParameterMetadata;
        hasParameterMetadata: typeof hasParameterMetadata;
        getOwnParameterMetadata: typeof getOwnParameterMetadata;
        getParameterMetadata: typeof getParameterMetadata;
        getOwnParameterMetadataKeys: typeof getOwnParameterMetadataKeys;
        getParameterMetadataKeys: typeof getParameterMetadataKeys;
        getOwnMetadataParameterLength: typeof getOwnMetadataParameterLength;
        getMetadataParameterLength: typeof getMetadataParameterLength;
    }

    Type Aliases

    MetadataKey

    Declaration
    export declare type MetadataKey = string | symbol | number | boolean | bigint | object;
    • Improve this Doc
    Generated by DocFX