{"version":3,"file":"main.mjs","names":[],"sources":["../src/domain/wrpc.ts","../src/domain/wrpcError.ts","../src/domain/wrpcMessage.ts","../src/domain/wrpcRoom.ts","../src/domain/wrpcRoomBroadcast.ts","../src/domain/wrpcRoomCommand.ts","../src/domain/wrpcRoomEvent.ts","../src/domain/wrpcSchema.ts","../src/domain/wrpcValidationError.ts"],"sourcesContent":["import type { WrpcRoom } from \"./wrpcRoom\";\nimport type { Maybe } from \"./wrpcSchema\";\n\nexport type WrpcData<WrpcRooms extends Maybe<Record<string, WrpcRoom>> = unknown> =\n  WrpcRooms extends Record<string, WrpcRoom>\n    ? {\n        rooms: WrpcRooms;\n      }\n    : {\n        rooms?: WrpcRooms;\n      };\n\nexport type WrpcDefinition<WrpcRooms extends Maybe<Record<string, WrpcRoom>> = unknown> = {\n  rooms: WrpcRooms extends Record<string, WrpcRoom> ? WrpcRooms : Record<string, WrpcRoom>;\n};\n\nexport type Wrpc<WrpcRooms extends Maybe<Record<string, WrpcRoom>> = unknown> = WrpcDefinition<WrpcRooms>;\n\nexport const defineWrpc = <WrpcRooms extends Maybe<Record<string, WrpcRoom>> = unknown>(\n  wrpcData: WrpcData<WrpcRooms>,\n): Wrpc<WrpcRooms> => ({\n  rooms: (wrpcData.rooms ?? {}) as WrpcRooms extends Record<string, WrpcRoom> ? WrpcRooms : Record<string, WrpcRoom>,\n});\n","export enum WrpcErrorCode {\n  ValidationError = \"validation_error\",\n  RoomNotFound = \"room_not_found\",\n  AlreadyInRoom = \"already_in_room\",\n  RoomFull = \"room_full\",\n  RoomLocked = \"room_locked\",\n  EventNotFound = \"event_not_found\",\n  CommandNotFound = \"command_not_found\",\n  RuntimeError = \"runtime_error\",\n}\n\nexport interface WrpcErrorConfig<Code extends string = WrpcErrorCode, Data = undefined> {\n  code: Code;\n  message?: string;\n  defined?: boolean;\n  data?: Data;\n}\n\nexport class WrpcError<Code extends string = WrpcErrorCode, Data = undefined> extends Error {\n  readonly code: Code;\n  readonly defined: boolean;\n  readonly data: Data;\n\n  constructor(config: WrpcErrorConfig<Code, Data>) {\n    super(config.message);\n    this.code = config.code;\n    this.defined = config.defined ?? false;\n    this.data = config.data as Data;\n  }\n}\n","import type { Patch } from \"immer\";\nimport type { WrpcErrorCode } from \"./wrpcError\";\nimport type { WrpcRoomConfig } from \"./wrpcRoomSettings\";\n\nexport enum WrpcMessageType {\n  Config = \"config\",\n  State = \"state\",\n  Metadata = \"metadata\",\n  ConnectionMetadata = \"connectionMetadata\",\n  Create = \"create\",\n  Join = \"join\",\n  Host = \"host\",\n  Leave = \"leave\",\n  Broadcast = \"broadcast\",\n  Event = \"event\",\n  Command = \"command\",\n  Removed = \"removed\",\n  Error = \"error\",\n}\n\nexport type WrpcMessageConfig = WrpcMessageRoom & {\n  type: WrpcMessageType.Config;\n  config: WrpcRoomConfig;\n};\n\nexport type WrpcMessageState = WrpcMessageRoom & {\n  type: WrpcMessageType.State;\n  patches?: Patch[];\n};\n\nexport type WrpcMessageMetadata = WrpcMessageRoom & {\n  type: WrpcMessageType.Metadata;\n  patches?: Patch[];\n};\n\nexport type WrpcMessageConnectionMetadata = WrpcMessageRoom & {\n  type: WrpcMessageType.ConnectionMetadata;\n  patches?: Patch[];\n};\n\nexport type WrpcMessageRequest = {\n  requestId: number;\n};\n\nexport type WrpcMessageRoom = {\n  roomId: string;\n};\n\nexport type WrpcMessageCreateRequest = WrpcMessageRequest & {\n  type: WrpcMessageType.Create;\n  name: string;\n  input: unknown;\n};\n\nexport type WrpcMessageCreateResponse = WrpcMessageRoom &\n  WrpcMessageRequest & {\n    type: WrpcMessageType.Create;\n  };\n\nexport type WrpcMessageCreate = WrpcMessageCreateRequest | WrpcMessageCreateResponse;\n\nexport type WrpcMessageJoinRequest = WrpcMessageRoom &\n  WrpcMessageRequest & {\n    type: WrpcMessageType.Join;\n    input: unknown;\n  };\n\nexport type WrpcMessageJoinResponse = WrpcMessageRoom &\n  WrpcMessageRequest & {\n    type: WrpcMessageType.Join;\n    config: WrpcRoomConfig;\n    state: unknown;\n    metadata: unknown;\n    connectionMetadata: unknown;\n  };\n\nexport type WrpcMessageJoin = WrpcMessageJoinRequest | WrpcMessageJoinResponse;\n\nexport type WrpcMessageHostRequest = WrpcMessageRequest & {\n  type: WrpcMessageType.Host;\n  name: string;\n  createInput: unknown;\n  joinInput: unknown;\n};\n\nexport type WrpcMessageHostResponse = WrpcMessageRoom &\n  WrpcMessageRequest & {\n    type: WrpcMessageType.Host;\n    config: WrpcRoomConfig;\n    state: unknown;\n    metadata: unknown;\n    connectionMetadata: unknown;\n  };\n\nexport type WrpcMessageHost = WrpcMessageHostRequest | WrpcMessageHostResponse;\n\nexport type WrpcMessageLeaveRequest = WrpcMessageRoom &\n  WrpcMessageRequest & {\n    type: WrpcMessageType.Leave;\n  };\n\nexport type WrpcMessageLeaveResponse = WrpcMessageRoom &\n  WrpcMessageRequest & {\n    type: WrpcMessageType.Leave;\n  };\n\nexport type WrpcMessageLeave = WrpcMessageLeaveRequest | WrpcMessageLeaveResponse;\n\nexport type WrpcMessageBroadcast = WrpcMessageRoom & {\n  type: WrpcMessageType.Broadcast;\n  name: string;\n  input: unknown;\n};\n\nexport type WrpcMessageEvent = WrpcMessageRoom & {\n  type: WrpcMessageType.Event;\n  name: string;\n  input: unknown;\n};\n\nexport type WrpcMessageCommandRequest = WrpcMessageRoom &\n  WrpcMessageRequest & {\n    type: WrpcMessageType.Command;\n    name: string;\n    input: unknown;\n  };\n\nexport type WrpcMessageCommandResponse = WrpcMessageRoom &\n  WrpcMessageRequest & {\n    type: WrpcMessageType.Command;\n    name: string;\n    output: unknown;\n  };\n\nexport type WrpcMessageRemoved = WrpcMessageRoom & {\n  type: WrpcMessageType.Removed;\n};\n\nexport type WrpcMessageError = Partial<WrpcMessageRequest> & {\n  type: WrpcMessageType.Error;\n  code: WrpcErrorCode;\n  defined?: boolean;\n  message?: string;\n  data?: unknown;\n};\n\nexport type WrpcMessageClientRoom = WrpcMessageEvent | WrpcMessageCommandRequest;\n\nexport type WrpcMessageServerRoom =\n  | WrpcMessageConfig\n  | WrpcMessageState\n  | WrpcMessageMetadata\n  | WrpcMessageConnectionMetadata\n  | WrpcMessageBroadcast\n  | WrpcMessageRemoved;\n\nexport type WrpcMessageClient =\n  | WrpcMessageCreateRequest\n  | WrpcMessageJoinRequest\n  | WrpcMessageHostRequest\n  | WrpcMessageLeaveRequest\n  | WrpcMessageClientRoom;\n\nexport type WrpcMessageServer =\n  | WrpcMessageCreateResponse\n  | WrpcMessageJoinResponse\n  | WrpcMessageHostResponse\n  | WrpcMessageLeaveResponse\n  | WrpcMessageCommandResponse\n  | WrpcMessageServerRoom\n  | WrpcMessageError;\n\nexport type WrpcMessage = WrpcMessageClient | WrpcMessageServer;\n","import type { WrpcRoomBroadcast, WrpcRoomBroadcasts } from \"./wrpcRoomBroadcast\";\nimport type { WrpcRoomCommand, WrpcRoomCommands } from \"./wrpcRoomCommand\";\nimport type { WrpcRoomConnectionMetadata } from \"./wrpcRoomConnectionMetadata\";\nimport type { WrpcRoomErrors } from \"./wrpcRoomError\";\nimport type { WrpcRoomEvent, WrpcRoomEvents } from \"./wrpcRoomEvent\";\nimport type { WrpcRoomLifecycles } from \"./wrpcRoomLifecycle\";\nimport type { WrpcRoomMetadata } from \"./wrpcRoomMetadata\";\nimport type { WrpcRoomConfig, WrpcRoomSettings } from \"./wrpcRoomSettings\";\nimport type { WrpcRoomState } from \"./wrpcRoomState\";\nimport type { InferShapeOutput, Maybe, Shape } from \"./wrpcSchema\";\n\nexport type WrpcRoomData<\n  State extends Maybe<Shape> = unknown,\n  Metadata extends Maybe<Shape> = unknown,\n  ConnectionMetadata extends Maybe<Shape> = unknown,\n  Errors extends Maybe<Record<string, Maybe<Shape>>> = unknown,\n  Create extends Maybe<Shape> = unknown,\n  Join extends Maybe<Shape> = unknown,\n  Broadcasts extends Maybe<Record<string, WrpcRoomBroadcast>> = unknown,\n  Events extends Maybe<Record<string, WrpcRoomEvent>> = unknown,\n  Commands extends Maybe<Record<string, WrpcRoomCommand>> = unknown,\n> = WrpcRoomSettings &\n  WrpcRoomState<State> &\n  WrpcRoomMetadata<Metadata> &\n  WrpcRoomConnectionMetadata<ConnectionMetadata> &\n  WrpcRoomErrors<Errors> &\n  WrpcRoomLifecycles<Create, Join> &\n  WrpcRoomBroadcasts<Broadcasts> &\n  WrpcRoomEvents<Events> &\n  WrpcRoomCommands<Commands>;\n\nexport type WrpcRoomDefinition<\n  State extends Maybe<Shape> = unknown,\n  Metadata extends Maybe<Shape> = unknown,\n  ConnectionMetadata extends Maybe<Shape> = unknown,\n  Errors extends Maybe<Record<string, Maybe<Shape>>> = unknown,\n  Create extends Maybe<Shape> = unknown,\n  Join extends Maybe<Shape> = unknown,\n  Broadcasts extends Maybe<Record<string, WrpcRoomBroadcast>> = unknown,\n  Events extends Maybe<Record<string, WrpcRoomEvent>> = unknown,\n  Commands extends Maybe<Record<string, WrpcRoomCommand>> = unknown,\n> = {\n  config?: WrpcRoomConfig;\n  state: State extends Shape ? State : undefined;\n  initialState: InferShapeOutput<State, undefined>;\n  metadata: Metadata extends Shape ? Metadata : undefined;\n  initialMetadata: InferShapeOutput<Metadata, undefined>;\n  connectionMetadata: ConnectionMetadata extends Shape ? ConnectionMetadata : undefined;\n  initialConnectionMetadata: InferShapeOutput<ConnectionMetadata, undefined>;\n  errors: Errors extends Record<string, Maybe<Shape>> ? Errors : Record<string, Maybe<Shape>>;\n  create: Create extends Shape ? Create : undefined;\n  join: Join extends Shape ? Join : undefined;\n  broadcasts: Broadcasts extends Record<string, WrpcRoomBroadcast> ? Broadcasts : Record<string, WrpcRoomBroadcast>;\n  events: Events extends Record<string, WrpcRoomEvent> ? Events : Record<string, WrpcRoomEvent>;\n  commands: Commands extends Record<string, WrpcRoomCommand> ? Commands : Record<string, WrpcRoomCommand>;\n};\n\nexport type WrpcRoom<\n  State extends Maybe<Shape> = unknown,\n  Metadata extends Maybe<Shape> = unknown,\n  ConnectionMetadata extends Maybe<Shape> = unknown,\n  Errors extends Maybe<Record<string, Maybe<Shape>>> = unknown,\n  Create extends Maybe<Shape> = unknown,\n  Join extends Maybe<Shape> = unknown,\n  Broadcasts extends Maybe<Record<string, WrpcRoomBroadcast>> = unknown,\n  Events extends Maybe<Record<string, WrpcRoomEvent>> = unknown,\n  Commands extends Maybe<Record<string, WrpcRoomCommand>> = unknown,\n  WrpcRoomBase extends Maybe<WrpcRoom> = unknown,\n> = WrpcRoomDefinition<State, Metadata, ConnectionMetadata, Errors, Create, Join, Broadcasts, Events, Commands> & {\n  wrpcRoomBase?: WrpcRoomBase;\n  extend: <\n    NewState extends Maybe<Shape> = State,\n    NewRoomMetadata extends Maybe<Shape> = unknown,\n    NewConnectionMetadata extends Maybe<Shape> = unknown,\n    NewErrors extends Maybe<Record<string, Maybe<Shape>>> = unknown,\n    NewCreate extends Maybe<Shape> = unknown,\n    NewJoin extends Maybe<Shape> = unknown,\n    NewBroadcasts extends Maybe<Record<string, WrpcRoomBroadcast>> = unknown,\n    NewEvents extends Maybe<Record<string, WrpcRoomEvent>> = unknown,\n    NewCommands extends Maybe<Record<string, WrpcRoomCommand>> = unknown,\n  >(\n    extender: (\n      wrpcRoomBase: WrpcRoomDefinition<\n        State,\n        Metadata,\n        ConnectionMetadata,\n        Errors,\n        Create,\n        Join,\n        Broadcasts,\n        Events,\n        Commands\n      >,\n    ) => WrpcRoomData<\n      NewState,\n      NewRoomMetadata,\n      NewConnectionMetadata,\n      NewErrors,\n      NewCreate,\n      NewJoin,\n      NewBroadcasts,\n      NewEvents,\n      NewCommands\n    >,\n  ) => WrpcRoom<\n    NewState,\n    NewRoomMetadata,\n    NewConnectionMetadata,\n    NewErrors,\n    NewCreate,\n    NewJoin,\n    NewBroadcasts,\n    NewEvents,\n    NewCommands,\n    WrpcRoom<State, Metadata, ConnectionMetadata, Errors, Create, Join, Broadcasts, Events, Commands>\n  >;\n};\n\nexport const defineWrpcRoom = <\n  State extends Maybe<Shape> = unknown,\n  Metadata extends Maybe<Shape> = unknown,\n  ConnectionMetadata extends Maybe<Shape> = unknown,\n  Errors extends Maybe<Record<string, Maybe<Shape>>> = unknown,\n  Create extends Maybe<Shape> = unknown,\n  Join extends Maybe<Shape> = unknown,\n  Broadcasts extends Maybe<Record<string, WrpcRoomBroadcast>> = unknown,\n  Events extends Maybe<Record<string, WrpcRoomEvent>> = unknown,\n  Commands extends Maybe<Record<string, WrpcRoomCommand>> = unknown,\n  WrpcRoomBase extends Maybe<WrpcRoom> = unknown,\n>(\n  wrpcRoomData: WrpcRoomData<State, Metadata, ConnectionMetadata, Errors, Create, Join, Broadcasts, Events, Commands>,\n  wrpcRoomBase?: WrpcRoomBase,\n): WrpcRoom<State, Metadata, ConnectionMetadata, Errors, Create, Join, Broadcasts, Events, Commands, WrpcRoomBase> => ({\n  config: wrpcRoomData.config,\n  state: wrpcRoomData.state as State extends Shape ? State : undefined,\n  initialState: wrpcRoomData.initialState as InferShapeOutput<State, undefined>,\n  metadata: wrpcRoomData.metadata as Metadata extends Shape ? Metadata : undefined,\n  initialMetadata: wrpcRoomData.initialMetadata as InferShapeOutput<Metadata, undefined>,\n  connectionMetadata: wrpcRoomData.connectionMetadata as ConnectionMetadata extends Shape\n    ? ConnectionMetadata\n    : undefined,\n  initialConnectionMetadata: wrpcRoomData.initialConnectionMetadata as InferShapeOutput<ConnectionMetadata, undefined>,\n  errors: (wrpcRoomData.errors ?? {}) as Errors extends Record<string, Maybe<Shape>>\n    ? Errors\n    : Record<string, Maybe<Shape>>,\n  create: wrpcRoomData.create as Create extends Shape ? Create : undefined,\n  join: wrpcRoomData.join as Join extends Shape ? Join : undefined,\n  broadcasts: (wrpcRoomData.broadcasts ?? {}) as Broadcasts extends Record<string, WrpcRoomBroadcast>\n    ? Broadcasts\n    : Record<string, WrpcRoomBroadcast>,\n  events: (wrpcRoomData.events ?? {}) as Events extends Record<string, WrpcRoomEvent>\n    ? Events\n    : Record<string, WrpcRoomEvent>,\n  commands: (wrpcRoomData.commands ?? {}) as Commands extends Record<string, WrpcRoomCommand>\n    ? Commands\n    : Record<string, WrpcRoomCommand>,\n\n  wrpcRoomBase,\n  extend: <\n    NewState extends Maybe<Shape> = State,\n    NewMetadata extends Maybe<Shape> = unknown,\n    NewConnectionMetadata extends Maybe<Shape> = unknown,\n    NewErrors extends Maybe<Record<string, Maybe<Shape>>> = unknown,\n    NewCreate extends Maybe<Shape> = unknown,\n    NewJoin extends Maybe<Shape> = unknown,\n    NewBroadcasts extends Maybe<Record<string, WrpcRoomBroadcast>> = unknown,\n    NewEvents extends Maybe<Record<string, WrpcRoomEvent>> = unknown,\n    NewCommands extends Maybe<Record<string, WrpcRoomCommand>> = unknown,\n  >(\n    extender: (\n      wrpcRoomBase: WrpcRoomDefinition<\n        State,\n        Metadata,\n        ConnectionMetadata,\n        Errors,\n        Create,\n        Join,\n        Broadcasts,\n        Events,\n        Commands\n      >,\n    ) => WrpcRoomData<\n      NewState,\n      NewMetadata,\n      NewConnectionMetadata,\n      NewErrors,\n      NewCreate,\n      NewJoin,\n      NewBroadcasts,\n      NewEvents,\n      NewCommands\n    >,\n  ) => {\n    const nextWrpcRoomData = extender({\n      config: wrpcRoomData.config,\n      state: wrpcRoomData.state as State extends Shape ? State : undefined,\n      initialState: wrpcRoomData.initialState as InferShapeOutput<State, undefined>,\n      metadata: wrpcRoomData.metadata as Metadata extends Shape ? Metadata : undefined,\n      initialMetadata: wrpcRoomData.initialMetadata as InferShapeOutput<Metadata, undefined>,\n      connectionMetadata: wrpcRoomData.connectionMetadata as ConnectionMetadata extends Shape\n        ? ConnectionMetadata\n        : undefined,\n      initialConnectionMetadata: wrpcRoomData.initialConnectionMetadata as InferShapeOutput<\n        ConnectionMetadata,\n        undefined\n      >,\n      errors: (wrpcRoomData.errors ?? {}) as Errors extends Record<string, Maybe<Shape>>\n        ? Errors\n        : Record<string, Maybe<Shape>>,\n      create: wrpcRoomData.create as Create extends Shape ? Create : undefined,\n      join: wrpcRoomData.join as Join extends Shape ? Join : undefined,\n      broadcasts: (wrpcRoomData.broadcasts ?? {}) as Broadcasts extends Record<string, WrpcRoomBroadcast>\n        ? Broadcasts\n        : Record<string, WrpcRoomBroadcast>,\n      events: (wrpcRoomData.events ?? {}) as Events extends Record<string, WrpcRoomEvent>\n        ? Events\n        : Record<string, WrpcRoomEvent>,\n      commands: (wrpcRoomData.commands ?? {}) as Commands extends Record<string, WrpcRoomCommand>\n        ? Commands\n        : Record<string, WrpcRoomCommand>,\n    });\n\n    return defineWrpcRoom(nextWrpcRoomData, wrpcRoomBase) as WrpcRoom<\n      NewState,\n      NewMetadata,\n      NewConnectionMetadata,\n      NewErrors,\n      NewCreate,\n      NewJoin,\n      NewBroadcasts,\n      NewEvents,\n      NewCommands,\n      WrpcRoom<State, Metadata, ConnectionMetadata, Errors, Create, Join, Broadcasts, Events, Commands, WrpcRoomBase>\n    >;\n  },\n});\n","import type { Maybe, Shape } from \"./wrpcSchema\";\n\ntype WrpcRoomBroadcastData<Input extends Maybe<Shape> = unknown> = {\n  input?: Input;\n};\n\ntype WrpcRoomBroadcastDefinition<Input extends Maybe<Shape> = unknown> = {\n  input: Input extends Shape ? Input : undefined;\n};\n\nexport type WrpcRoomBroadcast<Input extends Maybe<Shape> = unknown> = WrpcRoomBroadcastDefinition<Input>;\n\nexport type WrpcRoomBroadcasts<Broadcasts extends Maybe<Record<string, WrpcRoomBroadcast>> = unknown> =\n  Broadcasts extends Record<string, WrpcRoomBroadcast>\n    ? {\n        broadcasts: Broadcasts;\n      }\n    : {\n        broadcasts?: Broadcasts;\n      };\n\nexport const defineWrpcRoomBroadcast = <Input extends Maybe<Shape> = unknown>(\n  wrpcRoomBroadcastData: WrpcRoomBroadcastData<Input>,\n): WrpcRoomBroadcast<Input> => ({\n  input: wrpcRoomBroadcastData.input as Input extends Shape ? Input : undefined,\n});\n","import type { Maybe, Shape } from \"./wrpcSchema\";\n\ntype WrpcRoomCommandData<Input extends Maybe<Shape> = unknown, Output extends Maybe<Shape> = unknown> = {\n  input?: Input;\n  output?: Output;\n};\n\ntype WrpcRoomCommandDefinition<Input extends Maybe<Shape> = unknown, Output extends Maybe<Shape> = unknown> = {\n  input: Input extends Shape ? Input : undefined;\n  output: Output extends Shape ? Output : undefined;\n};\n\nexport type WrpcRoomCommand<\n  Input extends Maybe<Shape> = unknown,\n  Output extends Maybe<Shape> = unknown,\n> = WrpcRoomCommandDefinition<Input, Output>;\n\nexport type WrpcRoomCommands<Commands extends Maybe<Record<string, WrpcRoomCommand>> = unknown> =\n  Commands extends Record<string, WrpcRoomCommand>\n    ? {\n        commands: Commands;\n      }\n    : {\n        commands?: Commands;\n      };\n\nexport const defineWrpcRoomCommand = <Input extends Maybe<Shape> = unknown, Output extends Maybe<Shape> = unknown>(\n  wrpcRoomCommandData: WrpcRoomCommandData<Input, Output>,\n): WrpcRoomCommand<Input, Output> => ({\n  input: wrpcRoomCommandData.input as Input extends Shape ? Input : undefined,\n  output: wrpcRoomCommandData.output as Output extends Shape ? Output : undefined,\n});\n","import type { Maybe, Shape } from \"./wrpcSchema\";\n\ntype WrpcRoomEventData<Input extends Maybe<Shape> = unknown> = {\n  input?: Input;\n};\n\ntype WrpcRoomEventDefinition<Input extends Maybe<Shape> = unknown> = {\n  input: Input extends Shape ? Input : undefined;\n};\n\nexport type WrpcRoomEvent<Input extends Maybe<Shape> = unknown> = WrpcRoomEventDefinition<Input>;\n\nexport type WrpcRoomEvents<Events extends Maybe<Record<string, WrpcRoomEvent>> = unknown> =\n  Events extends Record<string, WrpcRoomEvent>\n    ? {\n        events: Events;\n      }\n    : {\n        events?: Events;\n      };\n\nexport const defineWrpcRoomEvent = <Input extends Maybe<Shape> = unknown>(\n  wrpcRoomEventData: WrpcRoomEventData<Input>,\n): WrpcRoomEvent<Input> => ({\n  input: wrpcRoomEventData.input as Input extends Shape ? Input : undefined,\n});\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\n\nexport type Maybe<T> = T | unknown;\n\nexport type MaybePromise<T> = T | Promise<T>;\n\nexport type Shape<Input = unknown, Output = unknown> = StandardSchemaV1<Input, Output>;\n\nexport type InferShapeInput<S extends Maybe<Shape>, Fallback = unknown> =\n  S extends Shape<infer I, unknown> ? I : Fallback;\n\nexport type InferShapeOutput<S extends Maybe<Shape>, Fallback = unknown> =\n  S extends Shape<unknown, infer O> ? O : Fallback;\n\nexport type MaybeShapeArgs<S extends Maybe<Shape>> = S extends Shape\n  ? [\n      input: InferShapeInput<S>,\n    ]\n  : [];\n\nexport type MaybeShapeListener<S extends Maybe<Shape>> = S extends Shape\n  ? (input: InferShapeOutput<S>) => void\n  : () => void;\n\nexport interface ShapeValidResult {\n  valid: true;\n  data: unknown;\n}\n\nexport interface ShapeInvalidResult {\n  valid: false;\n  issues: readonly StandardSchemaV1.Issue[];\n}\n\nexport type ShapeValidateResult = ShapeValidResult | ShapeInvalidResult;\n\nexport const validateShape = async (shape?: Maybe<Shape>, data?: unknown): Promise<ShapeValidateResult> => {\n  if (!shape) {\n    return {\n      valid: true,\n      data,\n    };\n  }\n\n  const result = await (shape as StandardSchemaV1)[\"~standard\"].validate(data);\n\n  if (result.issues) {\n    return {\n      valid: false,\n      issues: result.issues,\n    };\n  }\n\n  return {\n    valid: true,\n    data: result.value,\n  };\n};\n","import type { StandardSchemaV1 } from \"@standard-schema/spec\";\nimport { WrpcError, WrpcErrorCode } from \"./wrpcError\";\n\nexport class WrpcValidationError extends WrpcError<WrpcErrorCode.ValidationError, readonly StandardSchemaV1.Issue[]> {\n  constructor(issues: readonly StandardSchemaV1.Issue[]) {\n    super({\n      code: WrpcErrorCode.ValidationError,\n      message: \"Validation Error\",\n      data: issues,\n    });\n  }\n}\n"],"mappings":";AAkBA,MAAa,cACX,cACqB,EACrB,OAAQ,SAAS,SAAS,EAAE,EAC7B;;;;ACtBD,IAAY,wDAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAUF,IAAa,YAAb,cAAsF,MAAM;CAC1F,AAAS;CACT,AAAS;CACT,AAAS;CAET,YAAY,QAAqC;AAC/C,QAAM,OAAO,QAAQ;AACrB,OAAK,OAAO,OAAO;AACnB,OAAK,UAAU,OAAO,WAAW;AACjC,OAAK,OAAO,OAAO;;;;;;ACvBvB,IAAY,4DAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACqGF,MAAa,kBAYX,cACA,kBACqH;CACrH,QAAQ,aAAa;CACrB,OAAO,aAAa;CACpB,cAAc,aAAa;CAC3B,UAAU,aAAa;CACvB,iBAAiB,aAAa;CAC9B,oBAAoB,aAAa;CAGjC,2BAA2B,aAAa;CACxC,QAAS,aAAa,UAAU,EAAE;CAGlC,QAAQ,aAAa;CACrB,MAAM,aAAa;CACnB,YAAa,aAAa,cAAc,EAAE;CAG1C,QAAS,aAAa,UAAU,EAAE;CAGlC,UAAW,aAAa,YAAY,EAAE;CAItC;CACA,SAWE,aAuBG;AA8BH,SAAO,eA7BkB,SAAS;GAChC,QAAQ,aAAa;GACrB,OAAO,aAAa;GACpB,cAAc,aAAa;GAC3B,UAAU,aAAa;GACvB,iBAAiB,aAAa;GAC9B,oBAAoB,aAAa;GAGjC,2BAA2B,aAAa;GAIxC,QAAS,aAAa,UAAU,EAAE;GAGlC,QAAQ,aAAa;GACrB,MAAM,aAAa;GACnB,YAAa,aAAa,cAAc,EAAE;GAG1C,QAAS,aAAa,UAAU,EAAE;GAGlC,UAAW,aAAa,YAAY,EAAE;GAGvC,CAAC,EAEsC,aAAa;;CAaxD;;;;ACtND,MAAa,2BACX,2BAC8B,EAC9B,OAAO,sBAAsB,OAC9B;;;;ACCD,MAAa,yBACX,yBACoC;CACpC,OAAO,oBAAoB;CAC3B,QAAQ,oBAAoB;CAC7B;;;;ACVD,MAAa,uBACX,uBAC0B,EAC1B,OAAO,kBAAkB,OAC1B;;;;ACWD,MAAa,gBAAgB,OAAO,OAAsB,SAAiD;AACzG,KAAI,CAAC,MACH,QAAO;EACL,OAAO;EACP;EACD;CAGH,MAAM,SAAS,MAAO,MAA2B,aAAa,SAAS,KAAK;AAE5E,KAAI,OAAO,OACT,QAAO;EACL,OAAO;EACP,QAAQ,OAAO;EAChB;AAGH,QAAO;EACL,OAAO;EACP,MAAM,OAAO;EACd;;;;;ACrDH,IAAa,sBAAb,cAAyC,UAA4E;CACnH,YAAY,QAA2C;AACrD,QAAM;GACJ,MAAM,cAAc;GACpB,SAAS;GACT,MAAM;GACP,CAAC"}