MCPcopy Create free account
hub / github.com/Effect-TS/effect / matchParam

Function matchParam

packages/effect/src/unstable/cli/Param.ts:2103–2126  ·  view source on GitHub ↗
(
  param: Param<Kind, A>,
  patterns: {
    Single: (single: Single<Kind, A>) => R
    Map: <X>(mapped: Map<Kind, X, A>) => R
    Transform: <X>(mapped: Transform<Kind, X, A>) => R
    Optional: <X>(optional: Optional<Kind, X>) => R
    Variadic: <X>(variadic: Variadic<Kind, X>) => R
  }
)

Source from the content-addressed store, hash-verified

2101 * maintaining type safety at the call site.
2102 */
2103const matchParam = <Kind extends ParamKind, A, R>(
2104 param: Param<Kind, A>,
2105 patterns: {
2106 Single: (single: Single<Kind, A>) => R
2107 Map: <X>(mapped: Map<Kind, X, A>) => R
2108 Transform: <X>(mapped: Transform<Kind, X, A>) => R
2109 Optional: <X>(optional: Optional<Kind, X>) => R
2110 Variadic: <X>(variadic: Variadic<Kind, X>) => R
2111 }
2112): R => {
2113 const p = param as AnyParam<Kind, A>
2114 switch (p._tag) {
2115 case "Single":
2116 return patterns.Single(p)
2117 case "Map":
2118 return patterns.Map(p)
2119 case "Transform":
2120 return patterns.Transform(p)
2121 case "Optional":
2122 return patterns.Optional(p)
2123 case "Variadic":
2124 return patterns.Variadic(p)
2125 }
2126}
2127
2128/**
2129 * Recursively transforms a param by applying a function to any `Single` nodes.

Callers 3

transformSingleFunction · 0.85
extractSingleParamsFunction · 0.85
getParamMetadataFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected