@hasna/emails 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dashboard/index.html +479 -0
  2. package/dist/cli/index.d.ts +3 -0
  3. package/dist/cli/index.d.ts.map +1 -0
  4. package/dist/cli/index.js +55403 -0
  5. package/dist/db/addresses.d.ts +10 -0
  6. package/dist/db/addresses.d.ts.map +1 -0
  7. package/dist/db/database.d.ts +8 -0
  8. package/dist/db/database.d.ts.map +1 -0
  9. package/dist/db/domains.d.ts +10 -0
  10. package/dist/db/domains.d.ts.map +1 -0
  11. package/dist/db/emails.d.ts +8 -0
  12. package/dist/db/emails.d.ts.map +1 -0
  13. package/dist/db/events.d.ts +16 -0
  14. package/dist/db/events.d.ts.map +1 -0
  15. package/dist/db/providers.d.ts +11 -0
  16. package/dist/db/providers.d.ts.map +1 -0
  17. package/dist/index.d.ts +14 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +54149 -0
  20. package/dist/lib/dns.d.ts +5 -0
  21. package/dist/lib/dns.d.ts.map +1 -0
  22. package/dist/lib/stats.d.ts +5 -0
  23. package/dist/lib/stats.d.ts.map +1 -0
  24. package/dist/lib/sync.d.ts +4 -0
  25. package/dist/lib/sync.d.ts.map +1 -0
  26. package/dist/mcp/index.d.ts +3 -0
  27. package/dist/mcp/index.d.ts.map +1 -0
  28. package/dist/mcp/index.js +58282 -0
  29. package/dist/providers/index.d.ts +7 -0
  30. package/dist/providers/index.d.ts.map +1 -0
  31. package/dist/providers/interface.d.ts +37 -0
  32. package/dist/providers/interface.d.ts.map +1 -0
  33. package/dist/providers/resend.d.ts +24 -0
  34. package/dist/providers/resend.d.ts.map +1 -0
  35. package/dist/providers/ses.d.ts +23 -0
  36. package/dist/providers/ses.d.ts.map +1 -0
  37. package/dist/server/index.d.ts +3 -0
  38. package/dist/server/index.d.ts.map +1 -0
  39. package/dist/server/index.js +54208 -0
  40. package/dist/server/serve.d.ts +6 -0
  41. package/dist/server/serve.d.ts.map +1 -0
  42. package/dist/types/index.d.ts +202 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/package.json +48 -0
@@ -0,0 +1,7 @@
1
+ import type { Provider } from "../types/index.js";
2
+ import type { ProviderAdapter } from "./interface.js";
3
+ export declare function getAdapter(provider: Provider): ProviderAdapter;
4
+ export { ResendAdapter } from "./resend.js";
5
+ export { SESAdapter } from "./ses.js";
6
+ export type { ProviderAdapter, RemoteDomain, RemoteAddress, RemoteEvent } from "./interface.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAItD,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,eAAe,CAS9D;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { DnsRecord, DnsStatus, EventType, SendEmailOptions, Stats } from "../types/index.js";
2
+ export interface RemoteDomain {
3
+ domain: string;
4
+ dkim_status: DnsStatus;
5
+ spf_status: DnsStatus;
6
+ dmarc_status: DnsStatus;
7
+ }
8
+ export interface RemoteAddress {
9
+ email: string;
10
+ verified: boolean;
11
+ display_name?: string;
12
+ }
13
+ export interface RemoteEvent {
14
+ provider_event_id: string;
15
+ type: EventType;
16
+ recipient?: string;
17
+ occurred_at: string;
18
+ provider_message_id?: string;
19
+ metadata?: Record<string, unknown>;
20
+ }
21
+ export interface ProviderAdapter {
22
+ listDomains(): Promise<RemoteDomain[]>;
23
+ getDnsRecords(domain: string): Promise<DnsRecord[]>;
24
+ verifyDomain(domain: string): Promise<{
25
+ dkim: DnsStatus;
26
+ spf: DnsStatus;
27
+ dmarc: DnsStatus;
28
+ }>;
29
+ addDomain(domain: string): Promise<void>;
30
+ listAddresses(): Promise<RemoteAddress[]>;
31
+ addAddress(email: string): Promise<void>;
32
+ verifyAddress(email: string): Promise<boolean>;
33
+ sendEmail(opts: SendEmailOptions): Promise<string>;
34
+ pullEvents(since?: string): Promise<RemoteEvent[]>;
35
+ getStats(period?: string): Promise<Stats>;
36
+ }
37
+ //# sourceMappingURL=interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/providers/interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAElG,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,SAAS,CAAC;IACvB,UAAU,EAAE,SAAS,CAAC;IACtB,YAAY,EAAE,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACvC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC7F,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1C,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CAC3C"}
@@ -0,0 +1,24 @@
1
+ import type { DnsRecord, DnsStatus, Provider, SendEmailOptions, Stats } from "../types/index.js";
2
+ import type { ProviderAdapter, RemoteAddress, RemoteDomain, RemoteEvent } from "./interface.js";
3
+ export declare class ResendAdapter implements ProviderAdapter {
4
+ private client;
5
+ private providerId;
6
+ constructor(provider: Provider);
7
+ listDomains(): Promise<RemoteDomain[]>;
8
+ getDnsRecords(domain: string): Promise<DnsRecord[]>;
9
+ verifyDomain(domain: string): Promise<{
10
+ dkim: DnsStatus;
11
+ spf: DnsStatus;
12
+ dmarc: DnsStatus;
13
+ }>;
14
+ addDomain(domain: string): Promise<void>;
15
+ listAddresses(): Promise<RemoteAddress[]>;
16
+ addAddress(_email: string): Promise<void>;
17
+ verifyAddress(_email: string): Promise<boolean>;
18
+ sendEmail(opts: SendEmailOptions): Promise<string>;
19
+ pullEvents(since?: string): Promise<RemoteEvent[]>;
20
+ getStats(period?: string): Promise<Stats>;
21
+ private mapStatus;
22
+ private mapEventType;
23
+ }
24
+ //# sourceMappingURL=resend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resend.d.ts","sourceRoot":"","sources":["../../src/providers/resend.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEjG,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhG,qBAAa,aAAc,YAAW,eAAe;IACnD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,EAAE,QAAQ;IAQxB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAatC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8CnD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC;IAsB5F,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAKzC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAqClD,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgClD,QAAQ,CAAC,MAAM,SAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IAK9C,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,YAAY;CAUrB"}
@@ -0,0 +1,23 @@
1
+ import type { DnsRecord, DnsStatus, Provider, SendEmailOptions, Stats } from "../types/index.js";
2
+ import type { ProviderAdapter, RemoteAddress, RemoteDomain, RemoteEvent } from "./interface.js";
3
+ export declare class SESAdapter implements ProviderAdapter {
4
+ private client;
5
+ private providerId;
6
+ constructor(provider: Provider);
7
+ listDomains(): Promise<RemoteDomain[]>;
8
+ getDnsRecords(domain: string): Promise<DnsRecord[]>;
9
+ verifyDomain(domain: string): Promise<{
10
+ dkim: DnsStatus;
11
+ spf: DnsStatus;
12
+ dmarc: DnsStatus;
13
+ }>;
14
+ addDomain(domain: string): Promise<void>;
15
+ listAddresses(): Promise<RemoteAddress[]>;
16
+ addAddress(email: string): Promise<void>;
17
+ verifyAddress(email: string): Promise<boolean>;
18
+ sendEmail(opts: SendEmailOptions): Promise<string>;
19
+ pullEvents(_since?: string): Promise<RemoteEvent[]>;
20
+ getStats(period?: string): Promise<Stats>;
21
+ private mapDkimStatus;
22
+ }
23
+ //# sourceMappingURL=ses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ses.d.ts","sourceRoot":"","sources":["../../src/providers/ses.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAEjG,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEhG,qBAAa,UAAW,YAAW,eAAe;IAChD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,UAAU,CAAS;gBAEf,QAAQ,EAAE,QAAQ;IAmBxB,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAkCtC,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwCnD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,GAAG,EAAE,SAAS,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC;IAiB5F,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBxC,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAyBzC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW9C,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8ClD,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAMnD,QAAQ,CAAC,MAAM,SAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;IA6D9C,OAAO,CAAC,aAAa;CAKtB"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":""}