UNPKG

veffect

Version:

powerful TypeScript validation library built on the robust foundation of Effect combining exceptional type safety, high performance, and developer experience. Taking inspiration from Effect's functional principles, VEffect delivers a balanced approach tha

42 lines (36 loc) 1.3 kB
import * as Equal from "../../Equal.js" import * as Hash from "../../Hash.js" import type * as MetricLabel from "../../MetricLabel.js" import { pipeArguments } from "../../Pipeable.js" import { hasProperty } from "../../Predicate.js" /** @internal */ const MetricLabelSymbolKey = "effect/MetricLabel" /** @internal */ export const MetricLabelTypeId: MetricLabel.MetricLabelTypeId = Symbol.for( MetricLabelSymbolKey ) as MetricLabel.MetricLabelTypeId /** @internal */ class MetricLabelImpl implements MetricLabel.MetricLabel { readonly [MetricLabelTypeId]: MetricLabel.MetricLabelTypeId = MetricLabelTypeId readonly _hash: number constructor(readonly key: string, readonly value: string) { this._hash = Hash.string(MetricLabelSymbolKey + this.key + this.value) } [Hash.symbol](): number { return this._hash } [Equal.symbol](that: unknown): boolean { return isMetricLabel(that) && this.key === that.key && this.value === that.value } pipe() { return pipeArguments(this, arguments) } } /** @internal */ export const make = (key: string, value: string): MetricLabel.MetricLabel => { return new MetricLabelImpl(key, value) } /** @internal */ export const isMetricLabel = (u: unknown): u is MetricLabel.MetricLabel => hasProperty(u, MetricLabelTypeId)