Interface RuntimeMetadataManager<TPublic, TSensitive>

interface RuntimeMetadataManager<
    TPublic extends AnyJson,
    TSensitive extends AnyJson,
> {
    addPublicMetadata: (
        getData: ProvideMetadata<TPublic>,
        onError?: MetadataErrorHandling,
    ) => Promise<void>;
    addSensitiveMetadata: (
        getData: ProvideMetadata<TSensitive>,
        onError?: MetadataErrorHandling,
    ) => Promise<void>;
    getAllPublicMetadata: () => Partial<TPublic>;
    getAllSensitiveMetadata: () => Partial<TSensitive>;
    runWithTimer: (
        field: NumericKeyOf<TPublic>,
    ) => <T>(fn: () => Promise<T>) => Promise<T>;
}

Type Parameters

  • TPublic extends AnyJson
  • TSensitive extends AnyJson

Properties

addPublicMetadata: (
    getData: ProvideMetadata<TPublic>,
    onError?: MetadataErrorHandling,
) => Promise<void>

Add some public metadata -- this should not contain any PII.

addSensitiveMetadata: (
    getData: ProvideMetadata<TSensitive>,
    onError?: MetadataErrorHandling,
) => Promise<void>

Add some potentially sensitive metadata -- this may include PII, but unnecessary data should never be tracked (this is a good fit for command args for instance).

getAllPublicMetadata: () => Partial<TPublic>

Get a snapshot of the tracked public data.

getAllSensitiveMetadata: () => Partial<TSensitive>

Get a snapshot of the tracked sensitive data.

runWithTimer: (
    field: NumericKeyOf<TPublic>,
) => <T>(fn: () => Promise<T>) => Promise<T>

Run a function, monitoring how long it takes, and adding the elapsed time to a running total.