From 45c696a0df2c1559e828311473f1c8ff4981031a Mon Sep 17 00:00:00 2001 From: Derek Rada Date: Wed, 13 Jun 2018 17:13:16 -0400 Subject: [PATCH 1/2] namespace changes --- types/postmark/index.d.ts | 423 +++++++++++++++++++------------------- 1 file changed, 213 insertions(+), 210 deletions(-) diff --git a/types/postmark/index.d.ts b/types/postmark/index.d.ts index 8a054e17e0..2f77040930 100644 --- a/types/postmark/index.d.ts +++ b/types/postmark/index.d.ts @@ -2,215 +2,218 @@ // Project: http://wildbit.github.io/postmark.js // Definitions by: Ben Bayard // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.3 +// TypeScript Version: 2.4 -interface PostmarkError { - status: number; - message: string; - code: number; +export = Postmark; + +declare function Postmark(apiKey: string, options: Partial): Postmark.Client; +declare namespace Postmark { + const defaults: Options; + + interface PostmarkError { + status: number; + message: string; + code: number; + } + + interface PostmarkMessageHeader { + Name: string; + Value: string; + } + + interface PostmarkAttachment { + Content: string; + Name: string; + ContentType: string; + } + + interface Filter { + count: number; + offset: number; + } + + interface PostmarkMessageWithTemplate { + To: string; + From: string; + Cc?: string; + Bcc?: string; + ReplyTo?: string; + TemplateId?: string; + TemplateModel?: any; + Tag?: string; + Subject?: string; + TrackOpens?: boolean; + TrackLinks?: string; + Headers?: PostmarkMessageHeader[]; + } + + interface PostmarkMessage { + To: string; + From: string; + Cc?: string; + Bcc?: string; + ReplyTo?: string; + Tag?: string; + Subject?: string; + HTMLBody?: string; + TextBody?: string; + TrackOpens?: boolean; + TrackLinks?: string; + Headers?: PostmarkMessageHeader[]; + Attachments?: PostmarkAttachment[]; + } + + interface Sender { + Color: string; + RawEmailEnabled: boolean; + SmtpApiActivated: boolean; + DeliveryHookUrl: string; + InboundHookUrl: string; + BounceHookUrl: boolean; + IncludeBounceContentInHook: boolean; + OpenHookUrl: boolean; + PostFirstOpenOnly: boolean; + TrackOpens: boolean; + TrackLinks: string; + InboundDomain: string; + InboundSpamThreshold: number; + } + + interface TemplateValidator { + Subject: string; + HtmlBody: string; + TextBody: string; + TestRenderModel?: T; + InlineCssForHtmlTestRender?: boolean; + } + + type PostmarkCallback = ((e: PostmarkError, ret: T) => void) | undefined; + + interface SimpleOptions { + ssl: boolean; + requestHost: string; + } + + interface Options extends SimpleOptions { + requestFactory( + options: SimpleOptions + ): ( + path?: string, + type?: string, + content?: PostmarkMessage, + callback?: PostmarkCallback + ) => any; + } + + class Client { + constructor(serverKey: string, options?: Partial); + send(message: PostmarkMessage, callback: PostmarkCallback): void; + sendEmailWithTemplate( + message: PostmarkMessageWithTemplate, + callback: PostmarkCallback + ): void; + batch(message: PostmarkMessage[], callback: PostmarkCallback): void; + sendEmail(message: PostmarkMessage, callback: PostmarkCallback): void; + sendEmailBatch(message: PostmarkMessage[], callback: PostmarkCallback): void; + getDeliveryStatistics(callback: PostmarkCallback): void; + getBounces(filter: Partial, callback: PostmarkCallback): void; + getBounce(id: number, callback: PostmarkCallback): void; + getBounceDump(id: number, callback: PostmarkCallback): void; + activateBounce(id: number, callback: PostmarkCallback): void; + getBounceTags(callback: PostmarkCallback): void; + getServer(callback: PostmarkCallback): void; + editServer(options: Pick, callback: PostmarkCallback): void; + getOutboundMessages(filter: Partial, callback: PostmarkCallback): void; + getOutboundMessageDetails(id: number, callback: PostmarkCallback): void; + getMessageOpens(filter: Partial, callback: PostmarkCallback): void; + getMessageOpensForSingleMessage(id: number, filter: Partial, callback: PostmarkCallback): void; + getInboundMessages(filter: Partial, callback: PostmarkCallback): void; + getInboundMessageDetails(id: number, callback: PostmarkCallback): void; + bypassBlockedInboundMessage(id: number, callback: PostmarkCallback): void; + retryInboundHookForMessage(id: number, callback: PostmarkCallback): void; + getOuboundOverview(filter: Partial, callback: PostmarkCallback): void; + validateTemplate(templateObject: TemplateValidator, callback: PostmarkCallback): void; + } + + interface CreateSignature { + FromEmail: string; + Name: string; + ReplyToEmail?: string; + ReturnPathDomain?: string; + } + + interface CreateServer { + Name: string; + Color?: string; + RawEmailEnabled?: boolean; + SmtpApiActivated?: boolean; + DeliveryHookUrl?: string; + InboundHookUrl?: string; + BounceHookUrl?: string; + IncludeBounceContentInHook?: boolean; + OpenHookUrl?: string; + PostFirstOpenOnly?: boolean; + TrackOpens?: boolean; + TrackLinks?: string; + InboundDomain?: string; + InboundSpamThreshold?: number; + } + + interface CreateDomain { + Name: string; + ReturnPathDomain?: string; + } + + class AdminClient { + constructor(apiKey: string, options: Partial); + listSenderSignatures(query: Partial, callback: PostmarkCallback): void; + createSenderSignature(options: CreateSignature, callback: PostmarkCallback): void; + editSenderSignature( + id: number, + options: Partial>, + callback: PostmarkCallback + ): void; + deleteSenderSignature(id: number, callback: PostmarkCallback): void; + resendSenderSignatureConfirmation(id: number, callback: PostmarkCallback): void; + verifySenderSignatureSPF(id: number, callback: PostmarkCallback): void; + requestNewDKIMForSenderSignature(id: number, callback: PostmarkCallback): void; + getServer(id: number, callback: PostmarkCallback): void; + createServer(options: CreateServer, callback: PostmarkCallback): void; + editServer( + id: number, + options: Pick, + callback: PostmarkCallback + ): void; + deleteServer(id: number, callback: PostmarkCallback): void; + listServers(query: Partial, callback: PostmarkCallback): void; + listDomains(query: Partial, callback: PostmarkCallback): void; + getDomain(id: number, callback: PostmarkCallback): void; + createDomain( + options: CreateDomain, + callback: PostmarkCallback + ): void; + editDomain( + id: number, + options: Pick, + callback: PostmarkCallback + ): void; + deleteDomain(id: number, callback: PostmarkCallback): void; + verifyDomainSPF(id: number, callback: PostmarkCallback): void; + rotateDKIMForDomain(id: number, callback: PostmarkCallback): void; + } + + interface ClientClass { + new(serverKey: string, options: Partial): Client; + } + + interface AdminClientClass { + new(apiKey: string, options: Partial): AdminClient; + } + + interface Postmark { + (apiKey: string, options: Partial): void; + defaults: Options; + Client: ClientClass; + AdminClient: AdminClientClass; + } } - -interface PostmarkMessageHeader { - Name: string; - Value: string; -} - -interface PostmarkAttachment { - Content: string; - Name: string; - ContentType: string; -} - -interface Filter { - count: number; - offset: number; -} - -interface PostmarkMessageWithTemplate { - To: string; - From: string; - Cc?: string; - Bcc?: string; - ReplyTo?: string; - TemplateId?: string; - TemplateModel?: any; - Tag?: string; - Subject?: string; - TrackOpens?: boolean; - TrackLinks?: string; - Headers?: PostmarkMessageHeader[]; -} - -interface PostmarkMessage { - To: string; - From: string; - Cc?: string; - Bcc?: string; - ReplyTo?: string; - Tag?: string; - Subject?: string; - HTMLBody?: string; - TextBody?: string; - TrackOpens?: boolean; - TrackLinks?: string; - Headers?: PostmarkMessageHeader[]; - Attachments?: PostmarkAttachment[]; -} - -interface Sender { - Color: string; - RawEmailEnabled: boolean; - SmtpApiActivated: boolean; - DeliveryHookUrl: string; - InboundHookUrl: string; - BounceHookUrl: boolean; - IncludeBounceContentInHook: boolean; - OpenHookUrl: boolean; - PostFirstOpenOnly: boolean; - TrackOpens: boolean; - TrackLinks: string; - InboundDomain: string; - InboundSpamThreshold: number; -} - -interface TemplateValidator { - Subject: string; - HtmlBody: string; - TextBody: string; - TestRenderModel?: T; - InlineCssForHtmlTestRender?: boolean; -} - -type PostmarkCallback = ((e: PostmarkError, ret: T) => void) | undefined; - -interface SimpleOptions { - ssl: boolean; - requestHost: string; -} - -interface Options extends SimpleOptions { - requestFactory( - options: SimpleOptions - ): ( - path?: string, - type?: string, - content?: PostmarkMessage, - callback?: PostmarkCallback - ) => any; -} - -declare class Client { - constructor(serverKey: string, options?: Partial); - send(message: PostmarkMessage, callback: PostmarkCallback): void; - sendEmailWithTemplate( - message: PostmarkMessageWithTemplate, - callback: PostmarkCallback - ): void; - batch(message: PostmarkMessage[], callback: PostmarkCallback): void; - sendEmail(message: PostmarkMessage, callback: PostmarkCallback): void; - sendEmailBatch(message: PostmarkMessage[], callback: PostmarkCallback): void; - getDeliveryStatistics(callback: PostmarkCallback): void; - getBounces(filter: Partial, callback: PostmarkCallback): void; - getBounce(id: number, callback: PostmarkCallback): void; - getBounceDump(id: number, callback: PostmarkCallback): void; - activateBounce(id: number, callback: PostmarkCallback): void; - getBounceTags(callback: PostmarkCallback): void; - getServer(callback: PostmarkCallback): void; - editServer(options: Pick, callback: PostmarkCallback): void; - getOutboundMessages(filter: Partial, callback: PostmarkCallback): void; - getOutboundMessageDetails(id: number, callback: PostmarkCallback): void; - getMessageOpens(filter: Partial, callback: PostmarkCallback): void; - getMessageOpensForSingleMessage(id: number, filter: Partial, callback: PostmarkCallback): void; - getInboundMessages(filter: Partial, callback: PostmarkCallback): void; - getInboundMessageDetails(id: number, callback: PostmarkCallback): void; - bypassBlockedInboundMessage(id: number, callback: PostmarkCallback): void; - retryInboundHookForMessage(id: number, callback: PostmarkCallback): void; - getOuboundOverview(filter: Partial, callback: PostmarkCallback): void; - validateTemplate(templateObject: TemplateValidator, callback: PostmarkCallback): void; -} - -interface CreateSignature { - FromEmail: string; - Name: string; - ReplyToEmail?: string; - ReturnPathDomain?: string; -} - -interface CreateServer { - Name: string; - Color?: string; - RawEmailEnabled?: boolean; - SmtpApiActivated?: boolean; - DeliveryHookUrl?: string; - InboundHookUrl?: string; - BounceHookUrl?: string; - IncludeBounceContentInHook?: boolean; - OpenHookUrl?: string; - PostFirstOpenOnly?: boolean; - TrackOpens?: boolean; - TrackLinks?: string; - InboundDomain?: string; - InboundSpamThreshold?: number; -} - -interface CreateDomain { - Name: string; - ReturnPathDomain?: string; -} - -declare class AdminClient { - constructor(apiKey: string, options: Partial); - listSenderSignatures(query: Partial, callback: PostmarkCallback): void; - createSenderSignature(options: CreateSignature, callback: PostmarkCallback): void; - editSenderSignature( - id: number, - options: Partial>, - callback: PostmarkCallback - ): void; - deleteSenderSignature(id: number, callback: PostmarkCallback): void; - resendSenderSignatureConfirmation(id: number, callback: PostmarkCallback): void; - verifySenderSignatureSPF(id: number, callback: PostmarkCallback): void; - requestNewDKIMForSenderSignature(id: number, callback: PostmarkCallback): void; - getServer(id: number, callback: PostmarkCallback): void; - createServer(options: CreateServer, callback: PostmarkCallback): void; - editServer( - id: number, - options: Pick, - callback: PostmarkCallback - ): void; - deleteServer(id: number, callback: PostmarkCallback): void; - listServers(query: Partial, callback: PostmarkCallback): void; - listDomains(query: Partial, callback: PostmarkCallback): void; - getDomain(id: number, callback: PostmarkCallback): void; - createDomain( - options: CreateDomain, - callback: PostmarkCallback - ): void; - editDomain( - id: number, - options: Pick, - callback: PostmarkCallback - ): void; - deleteDomain(id: number, callback: PostmarkCallback): void; - verifyDomainSPF(id: number, callback: PostmarkCallback): void; - rotateDKIMForDomain(id: number, callback: PostmarkCallback): void; -} - -interface ClientClass { - new(serverKey: string, options: Partial): Client; -} - -interface AdminClientClass { - new(apiKey: string, options: Partial): AdminClient; -} - -interface Postmark { - (apiKey: string, options: Partial): void; - defaults: Options; - Client: ClientClass; - AdminClient: AdminClientClass; -} - -declare var postmark: Postmark; - -export = postmark; From e4c62c323b36298298b8460136073062adec4e9c Mon Sep 17 00:00:00 2001 From: Derek Rada Date: Wed, 13 Jun 2018 18:51:31 -0400 Subject: [PATCH 2/2] add promises/functions/interfaces --- types/postmark/index.d.ts | 591 +++++++++++++++++++++++++++---- types/postmark/postmark-tests.ts | 50 ++- 2 files changed, 567 insertions(+), 74 deletions(-) diff --git a/types/postmark/index.d.ts b/types/postmark/index.d.ts index 2f77040930..24810299a7 100644 --- a/types/postmark/index.d.ts +++ b/types/postmark/index.d.ts @@ -1,12 +1,12 @@ -// Type definitions for postmark 1.3 +// Type definitions for postmark 1.4 // Project: http://wildbit.github.io/postmark.js // Definitions by: Ben Bayard // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.4 -export = Postmark; +export = postmark; -declare function Postmark(apiKey: string, options: Partial): Postmark.Client; +declare const postmark: Postmark.Postmark; declare namespace Postmark { const defaults: Options; @@ -28,8 +28,8 @@ declare namespace Postmark { } interface Filter { - count: number; - offset: number; + count?: number; + offset?: number; } interface PostmarkMessageWithTemplate { @@ -87,7 +87,7 @@ declare namespace Postmark { InlineCssForHtmlTestRender?: boolean; } - type PostmarkCallback = ((e: PostmarkError, ret: T) => void) | undefined; + type PostmarkCallback = ((e: PostmarkError, ret: T) => undefined) | undefined; interface SimpleOptions { ssl: boolean; @@ -107,39 +107,99 @@ declare namespace Postmark { class Client { constructor(serverKey: string, options?: Partial); - send(message: PostmarkMessage, callback: PostmarkCallback): void; - sendEmailWithTemplate( - message: PostmarkMessageWithTemplate, - callback: PostmarkCallback - ): void; - batch(message: PostmarkMessage[], callback: PostmarkCallback): void; - sendEmail(message: PostmarkMessage, callback: PostmarkCallback): void; - sendEmailBatch(message: PostmarkMessage[], callback: PostmarkCallback): void; - getDeliveryStatistics(callback: PostmarkCallback): void; - getBounces(filter: Partial, callback: PostmarkCallback): void; - getBounce(id: number, callback: PostmarkCallback): void; - getBounceDump(id: number, callback: PostmarkCallback): void; - activateBounce(id: number, callback: PostmarkCallback): void; - getBounceTags(callback: PostmarkCallback): void; - getServer(callback: PostmarkCallback): void; - editServer(options: Pick, callback: PostmarkCallback): void; - getOutboundMessages(filter: Partial, callback: PostmarkCallback): void; - getOutboundMessageDetails(id: number, callback: PostmarkCallback): void; - getMessageOpens(filter: Partial, callback: PostmarkCallback): void; - getMessageOpensForSingleMessage(id: number, filter: Partial, callback: PostmarkCallback): void; - getInboundMessages(filter: Partial, callback: PostmarkCallback): void; - getInboundMessageDetails(id: number, callback: PostmarkCallback): void; - bypassBlockedInboundMessage(id: number, callback: PostmarkCallback): void; - retryInboundHookForMessage(id: number, callback: PostmarkCallback): void; - getOuboundOverview(filter: Partial, callback: PostmarkCallback): void; - validateTemplate(templateObject: TemplateValidator, callback: PostmarkCallback): void; + + send(message: PostmarkMessage): Promise; + send(message: PostmarkMessage, callback: PostmarkCallback): undefined; + + sendEmailWithTemplate(message: PostmarkMessageWithTemplate): Promise; + sendEmailWithTemplate(message: PostmarkMessageWithTemplate, callback: PostmarkCallback): undefined; + + batch(message: PostmarkMessage[]): Promise; + batch(message: PostmarkMessage[], callback: PostmarkCallback): undefined; + + sendEmail(message: PostmarkMessage): Promise; + sendEmail(message: PostmarkMessage, callback: PostmarkCallback): undefined; + + sendEmailBatch(message: PostmarkMessage[]): Promise; + sendEmailBatch(message: PostmarkMessage[], callback: PostmarkCallback): undefined; + + // stats + getDeliveryStatistics(): Promise; + getDeliveryStatistics(callback: PostmarkCallback): undefined; + + // bounces + getBounces(filter: BounceFilter): Promise; + getBounces(filter: BounceFilter, callback?: PostmarkCallback): undefined; + + getBounce(id: number): Promise; + getBounce(id: number, callback?: PostmarkCallback): undefined; + + getBounceDump(id: number): Promise; + getBounceDump(id: number, callback?: PostmarkCallback): undefined; + + activateBounce(id: number): Promise; + activateBounce(id: number, callback?: PostmarkCallback): undefined; + + getBounceTags(): Promise; + getBounceTags(callback?: PostmarkCallback): undefined; + + // server + getServer(): Promise; + getServer(callback?: PostmarkCallback): undefined; + + editServer(server: Partial): Promise; + editServer(server: Partial, callback?: PostmarkCallback): undefined; + + // message info + getOutboundMessages(filter: OutboundMessageFilter): Promise; + getOutboundMessages(filter: OutboundMessageFilter, callback?: PostmarkCallback): undefined; + + getOutboundMessageDetails(id: number): Promise; + getOutboundMessageDetails(id: number, callback?: PostmarkCallback): undefined; + + getMessageOpens(filter: OpenMessageFilter): Promise; + getMessageOpens(filter: OpenMessageFilter, callback?: PostmarkCallback): undefined; + + getMessageOpensForSingleMessage(id: number, filter: Filter): Promise; + getMessageOpensForSingleMessage(id: number, filter: Filter, callback?: PostmarkCallback): undefined; + + getInboundMessages(filter: InboundMessageFilter): Promise; + getInboundMessages(filter: InboundMessageFilter, callback?: PostmarkCallback): undefined; + + getInboundMessageDetails(id: number): Promise; + getInboundMessageDetails(id: number, callback?: PostmarkCallback): undefined; + + bypassBlockedInboundMessage(id: number): Promise; + bypassBlockedInboundMessage(id: number, callback?: PostmarkCallback): undefined; + + getOuboundOverview(filter: BaseFilter): Promise; + getOuboundOverview(filter: BaseFilter, callback?: PostmarkCallback): undefined; + + retryInboundHookForMessage(id: number): Promise; + retryInboundHookForMessage(id: number, callback?: PostmarkCallback): undefined; + + // templates + getTemplate(id: number): Promise