(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
})
| 643 | * @category constructors |
| 644 | */ |
| 645 | export 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 |
no test coverage detected