UNPKG

effect

Version:

The missing standard library for TypeScript, for writing production-grade software.

49 lines (43 loc) 1.35 kB
import type * as MetricKey from "../../MetricKey.js" import type * as MetricKeyType from "../../MetricKeyType.js" import type * as MetricPair from "../../MetricPair.js" import type * as MetricState from "../../MetricState.js" import { pipeArguments } from "../../Pipeable.js" /** @internal */ const MetricPairSymbolKey = "effect/MetricPair" /** @internal */ export const MetricPairTypeId: MetricPair.MetricPairTypeId = Symbol.for( MetricPairSymbolKey ) as MetricPair.MetricPairTypeId const metricPairVariance = { /* c8 ignore next */ _Type: (_: never) => _ } /** @internal */ export const make = <Type extends MetricKeyType.MetricKeyType<any, any>>( metricKey: MetricKey.MetricKey<Type>, metricState: MetricState.MetricState<MetricKeyType.MetricKeyType.OutType<Type>> ): MetricPair.MetricPair.Untyped => { return { [MetricPairTypeId]: metricPairVariance, metricKey, metricState, pipe() { return pipeArguments(this, arguments) } } } /** @internal */ export const unsafeMake = <Type extends MetricKeyType.MetricKeyType<any, any>>( metricKey: MetricKey.MetricKey<Type>, metricState: MetricState.MetricState.Untyped ): MetricPair.MetricPair.Untyped => { return { [MetricPairTypeId]: metricPairVariance, metricKey, metricState, pipe() { return pipeArguments(this, arguments) } } }