UNPKG

meteor-type-validation

Version:

A lightweight set of TypeScript utilities to add proper type inference and validation for your Meteor publications and methods

33 lines (30 loc) 1.45 kB
declare module 'meteor/meteor' { // These are left empty so you can merge in your own types export interface DefinedMethods {} export interface DefinedPublications {} export type MethodName = keyof DefinedMethods; export type PublicationName = keyof DefinedPublications; export type PublicationParams<TName extends PublicationName> = Parameters<DefinedPublications[TName]>; export type MethodParams<TName extends MethodName> = Parameters<DefinedMethods[TName]>; export type MethodResult<TName extends MethodName> = ReturnType<DefinedMethods[TName]>; export type PublicationResult<TName extends PublicationName> = ReturnType<DefinedPublications[TName]>; module Meteor { function subscribe< TName extends keyof DefinedPublications >( name: TName, ...params: Parameters<DefinedPublications[TName]> ): Meteor.SubscriptionHandle; function call<TName extends keyof DefinedMethods>( name: TName, ...params: [ ...Parameters<DefinedMethods[TName]>, callback?: (error?: Error, response?: ReturnType<DefinedMethods[TName]>) => void ], ): void; function callAsync<TName extends keyof DefinedMethods>( name: TName, ...params: Parameters<DefinedMethods[TName]> ): Awaited<ReturnType<DefinedMethods[TName]>>; } }