MCPcopy
hub / github.com/Effect-TS/effect / declareConstructor

Function declareConstructor

packages/effect/src/Schema.ts:964–1008  ·  view source on GitHub ↗
(
  typeParameters: TypeParameters,
  options: {
    readonly decode: (
      ...typeParameters: {
        readonly [K in keyof TypeParameters]: Schema<
          Schema.Type<TypeParameters[K]>,
          Schema.Encoded<TypeParameters[K]>,
          never
        >
      }
    ) => (
      input: unknown,
      options: ParseOptions,
      ast: AST.Declaration
    ) => Effect.Effect<A, ParseResult.ParseIssue, never>
    readonly encode: (
      ...typeParameters: {
        readonly [K in keyof TypeParameters]: Schema<
          Schema.Type<TypeParameters[K]>,
          Schema.Encoded<TypeParameters[K]>,
          never
        >
      }
    ) => (
      input: unknown,
      options: ParseOptions,
      ast: AST.Declaration
    ) => Effect.Effect<I, ParseResult.ParseIssue, never>
  },
  annotations?: Annotations.Schema<A, TypeParameters>
)

Source from the content-addressed store, hash-verified

962}
963
964const declareConstructor = <
965 const TypeParameters extends ReadonlyArray<Schema.Any>,
966 I,
967 A
968>(
969 typeParameters: TypeParameters,
970 options: {
971 readonly decode: (
972 ...typeParameters: {
973 readonly [K in keyof TypeParameters]: Schema<
974 Schema.Type<TypeParameters[K]>,
975 Schema.Encoded<TypeParameters[K]>,
976 never
977 >
978 }
979 ) => (
980 input: unknown,
981 options: ParseOptions,
982 ast: AST.Declaration
983 ) => Effect.Effect<A, ParseResult.ParseIssue, never>
984 readonly encode: (
985 ...typeParameters: {
986 readonly [K in keyof TypeParameters]: Schema<
987 Schema.Type<TypeParameters[K]>,
988 Schema.Encoded<TypeParameters[K]>,
989 never
990 >
991 }
992 ) => (
993 input: unknown,
994 options: ParseOptions,
995 ast: AST.Declaration
996 ) => Effect.Effect<I, ParseResult.ParseIssue, never>
997 },
998 annotations?: Annotations.Schema<A, TypeParameters>
999): SchemaClass<A, I, Schema.Context<TypeParameters[number]>> =>
1000 makeDeclareClass(
1001 typeParameters,
1002 new AST.Declaration(
1003 typeParameters.map((tp) => tp.ast),
1004 (...typeParameters) => options.decode(...typeParameters.map(make) as any),
1005 (...typeParameters) => options.encode(...typeParameters.map(make) as any),
1006 toASTAnnotations(annotations)
1007 )
1008 )
1009
1010const declarePrimitive = <A>(
1011 is: (input: unknown) => input is A,

Callers 1

Schema.tsFile · 0.85

Calls 5

makeDeclareClassFunction · 0.85
toASTAnnotationsFunction · 0.85
decodeMethod · 0.80
encodeMethod · 0.80
mapMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…