MCPcopy Index your code
hub / github.com/Effect-TS/effect / make

Function make

packages/rpc/src/Rpc.ts:645–696  ·  view source on GitHub ↗
(tag: Tag, options?: {
  readonly payload?: Payload
  readonly success?: Success
  readonly error?: Error
  readonly stream?: Stream
  readonly defect?: Schema.Schema<unknown, any>
  readonly primaryKey?: [Payload] extends [Schema.Struct.Fields] ?
    ((payload: Schema.Simplify<Schema.Struct.Type<NoInfer<Payload>>>) => string) :
    never
})

Source from the content-addressed store, hash-verified

643 * @category constructors
644 */
645export const make = <
646 const Tag extends string,
647 Payload extends Schema.Schema.Any | Schema.Struct.Fields = typeof Schema.Void,
648 Success extends Schema.Schema.Any = typeof Schema.Void,
649 Error extends Schema.Schema.All = typeof Schema.Never,
650 const Stream extends boolean = false
651>(tag: Tag, options?: {
652 readonly payload?: Payload
653 readonly success?: Success
654 readonly error?: Error
655 readonly stream?: Stream
656 readonly defect?: Schema.Schema<unknown, any>
657 readonly primaryKey?: [Payload] extends [Schema.Struct.Fields] ?
658 ((payload: Schema.Simplify<Schema.Struct.Type<NoInfer<Payload>>>) => string) :
659 never
660}): Rpc<
661 Tag,
662 Payload extends Schema.Struct.Fields ? Schema.Struct<Payload> : Payload,
663 Stream extends true ? RpcSchema.Stream<Success, Error> : Success,
664 Stream extends true ? typeof Schema.Never : Error
665> => {
666 const successSchema = options?.success ?? Schema.Void
667 const errorSchema = options?.error ?? Schema.Never
668 let payloadSchema: any
669 if (options?.primaryKey) {
670 payloadSchema = class Payload extends Schema.Class<Payload>(`@effect/rpc/Rpc/${tag}`)(options.payload as any) {
671 [PrimaryKey.symbol](): string {
672 return options.primaryKey!(this as any)
673 }
674 }
675 } else {
676 payloadSchema = Schema.isSchema(options?.payload)
677 ? options?.payload as any
678 : options?.payload
679 ? Schema.Struct(options?.payload as any)
680 : Schema.Void
681 }
682 return makeProto({
683 _tag: tag,
684 payloadSchema,
685 successSchema: options?.stream ?
686 RpcSchema.Stream({
687 success: successSchema,
688 failure: errorSchema
689 }) :
690 successSchema,
691 errorSchema: options?.stream ? Schema.Never : errorSchema,
692 defectSchema: options?.defect ?? Schema.Defect,
693 annotations: Context_.empty(),
694 middlewares: new Set<never>()
695 }) as any
696}
697
698/**
699 * @since 1.0.0

Callers 2

layerFunction · 0.70
RpcServer.tsFile · 0.70

Calls 1

makeProtoFunction · 0.70

Tested by

no test coverage detected