@solytude/listmonk 1.0.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 (108) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +542 -0
  3. package/dist/chunk-saezhne8.js +14 -0
  4. package/dist/chunk-saezhne8.js.map +9 -0
  5. package/dist/client.d.ts +430 -0
  6. package/dist/errors/api.d.ts +178 -0
  7. package/dist/errors/base.d.ts +47 -0
  8. package/dist/errors/configuration.d.ts +49 -0
  9. package/dist/errors/index.d.ts +13 -0
  10. package/dist/errors/network.d.ts +69 -0
  11. package/dist/errors/validation.d.ts +57 -0
  12. package/dist/http/auth.d.ts +39 -0
  13. package/dist/http/client.d.ts +149 -0
  14. package/dist/http/hooks.d.ts +90 -0
  15. package/dist/http/index.d.ts +10 -0
  16. package/dist/http/resource.d.ts +100 -0
  17. package/dist/http/sse.d.ts +36 -0
  18. package/dist/http/url.d.ts +51 -0
  19. package/dist/index.d.ts +64 -0
  20. package/dist/index.js +16039 -0
  21. package/dist/index.js.map +120 -0
  22. package/dist/resources/admin/admin.d.ts +92 -0
  23. package/dist/resources/admin/index.d.ts +10 -0
  24. package/dist/resources/admin/schemas.d.ts +23 -0
  25. package/dist/resources/admin/types.d.ts +29 -0
  26. package/dist/resources/bounces/bounces.d.ts +262 -0
  27. package/dist/resources/bounces/index.d.ts +10 -0
  28. package/dist/resources/bounces/schemas.d.ts +86 -0
  29. package/dist/resources/bounces/types.d.ts +37 -0
  30. package/dist/resources/campaigns/campaigns.d.ts +339 -0
  31. package/dist/resources/campaigns/index.d.ts +10 -0
  32. package/dist/resources/campaigns/schemas.d.ts +374 -0
  33. package/dist/resources/campaigns/types.d.ts +111 -0
  34. package/dist/resources/dashboard/dashboard.d.ts +73 -0
  35. package/dist/resources/dashboard/index.d.ts +10 -0
  36. package/dist/resources/dashboard/schemas.d.ts +55 -0
  37. package/dist/resources/dashboard/types.d.ts +22 -0
  38. package/dist/resources/import/import.d.ts +215 -0
  39. package/dist/resources/import/index.d.ts +10 -0
  40. package/dist/resources/import/schemas.d.ts +109 -0
  41. package/dist/resources/import/types.d.ts +72 -0
  42. package/dist/resources/lists/index.d.ts +10 -0
  43. package/dist/resources/lists/lists.d.ts +180 -0
  44. package/dist/resources/lists/schemas.d.ts +176 -0
  45. package/dist/resources/lists/types.d.ts +56 -0
  46. package/dist/resources/maintenance/index.d.ts +10 -0
  47. package/dist/resources/maintenance/maintenance.d.ts +92 -0
  48. package/dist/resources/maintenance/schemas.d.ts +36 -0
  49. package/dist/resources/maintenance/types.d.ts +31 -0
  50. package/dist/resources/media/index.d.ts +10 -0
  51. package/dist/resources/media/media.d.ts +198 -0
  52. package/dist/resources/media/schemas.d.ts +48 -0
  53. package/dist/resources/media/types.d.ts +48 -0
  54. package/dist/resources/public/index.d.ts +10 -0
  55. package/dist/resources/public/public.d.ts +111 -0
  56. package/dist/resources/public/schemas.d.ts +52 -0
  57. package/dist/resources/public/types.d.ts +30 -0
  58. package/dist/resources/settings/index.d.ts +10 -0
  59. package/dist/resources/settings/schemas.d.ts +374 -0
  60. package/dist/resources/settings/settings.d.ts +106 -0
  61. package/dist/resources/settings/types.d.ts +78 -0
  62. package/dist/resources/subscribers/index.d.ts +10 -0
  63. package/dist/resources/subscribers/schemas.d.ts +360 -0
  64. package/dist/resources/subscribers/subscribers.d.ts +308 -0
  65. package/dist/resources/subscribers/types.d.ts +113 -0
  66. package/dist/resources/templates/index.d.ts +10 -0
  67. package/dist/resources/templates/schemas.d.ts +110 -0
  68. package/dist/resources/templates/templates.d.ts +225 -0
  69. package/dist/resources/templates/types.d.ts +45 -0
  70. package/dist/resources/tx/index.d.ts +10 -0
  71. package/dist/resources/tx/schemas.d.ts +67 -0
  72. package/dist/resources/tx/tx.d.ts +167 -0
  73. package/dist/resources/tx/types.d.ts +88 -0
  74. package/dist/schemas/common.d.ts +48 -0
  75. package/dist/schemas/index.d.ts +6 -0
  76. package/dist/testing/errors.d.ts +25 -0
  77. package/dist/testing/factories/bounce.d.ts +43 -0
  78. package/dist/testing/factories/campaign.d.ts +43 -0
  79. package/dist/testing/factories/common.d.ts +54 -0
  80. package/dist/testing/factories/index.d.ts +12 -0
  81. package/dist/testing/factories/list.d.ts +43 -0
  82. package/dist/testing/factories/media.d.ts +40 -0
  83. package/dist/testing/factories/subscriber.d.ts +43 -0
  84. package/dist/testing/factories/template.d.ts +40 -0
  85. package/dist/testing/index.d.ts +39 -0
  86. package/dist/testing/index.js +573 -0
  87. package/dist/testing/index.js.map +32 -0
  88. package/dist/testing/mock-client.d.ts +119 -0
  89. package/dist/testing/mock-function.d.ts +28 -0
  90. package/dist/testing/resources/admin.d.ts +20 -0
  91. package/dist/testing/resources/bounces.d.ts +22 -0
  92. package/dist/testing/resources/campaigns.d.ts +31 -0
  93. package/dist/testing/resources/dashboard.d.ts +17 -0
  94. package/dist/testing/resources/import.d.ts +19 -0
  95. package/dist/testing/resources/index.d.ts +18 -0
  96. package/dist/testing/resources/lists.d.ts +24 -0
  97. package/dist/testing/resources/maintenance.d.ts +18 -0
  98. package/dist/testing/resources/media.d.ts +21 -0
  99. package/dist/testing/resources/public.d.ts +18 -0
  100. package/dist/testing/resources/settings.d.ts +19 -0
  101. package/dist/testing/resources/subscribers.d.ts +33 -0
  102. package/dist/testing/resources/templates.d.ts +24 -0
  103. package/dist/testing/resources/tx.d.ts +16 -0
  104. package/dist/testing/types.d.ts +138 -0
  105. package/dist/types/config.d.ts +59 -0
  106. package/dist/types/index.d.ts +7 -0
  107. package/dist/types/pagination.d.ts +37 -0
  108. package/package.json +97 -0
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Bounce factory functions.
3
+ *
4
+ * @module testing/factories/bounce
5
+ */
6
+ import type { Bounce } from "../../resources/bounces/types";
7
+ /**
8
+ * Creates a mock bounce record with realistic default values.
9
+ *
10
+ * @param overrides - Optional fields to override defaults
11
+ * @returns A valid Bounce object
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Default bounce
16
+ * const bounce = createMockBounce();
17
+ * // { id: 1, email: 'bounce1@example.com', type: 'hard', ... }
18
+ *
19
+ * // With overrides
20
+ * const custom = createMockBounce({
21
+ * type: 'soft',
22
+ * source: 'mailgun',
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function createMockBounce(overrides?: Partial<Bounce>): Bounce;
27
+ /**
28
+ * Creates multiple unique mock bounce records.
29
+ *
30
+ * @param count - Number of bounces to create
31
+ * @param overrides - Optional fields to apply to all bounces
32
+ * @returns Array of unique Bounce objects
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const bounces = createMockBounces(3);
37
+ * // 3 bounce records with unique IDs and emails
38
+ *
39
+ * const softBounces = createMockBounces(2, { type: 'soft' });
40
+ * // 2 soft bounces
41
+ * ```
42
+ */
43
+ export declare function createMockBounces(count: number, overrides?: Partial<Omit<Bounce, "id" | "email">>): Bounce[];
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Campaign factory functions.
3
+ *
4
+ * @module testing/factories/campaign
5
+ */
6
+ import type { Campaign } from "../../resources/campaigns/types";
7
+ /**
8
+ * Creates a mock campaign with realistic default values.
9
+ *
10
+ * @param overrides - Optional fields to override defaults
11
+ * @returns A valid Campaign object
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Default campaign
16
+ * const campaign = createMockCampaign();
17
+ * // { id: 1, name: 'Test Campaign 1', status: 'draft', ... }
18
+ *
19
+ * // With overrides
20
+ * const custom = createMockCampaign({
21
+ * name: 'Weekly Newsletter',
22
+ * status: 'running',
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function createMockCampaign(overrides?: Partial<Campaign>): Campaign;
27
+ /**
28
+ * Creates multiple unique mock campaigns.
29
+ *
30
+ * @param count - Number of campaigns to create
31
+ * @param overrides - Optional fields to apply to all campaigns
32
+ * @returns Array of unique Campaign objects
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const campaigns = createMockCampaigns(3);
37
+ * // 3 campaigns with unique IDs and names
38
+ *
39
+ * const drafts = createMockCampaigns(2, { status: 'draft' });
40
+ * // 2 draft campaigns
41
+ * ```
42
+ */
43
+ export declare function createMockCampaigns(count: number, overrides?: Partial<Omit<Campaign, "id" | "uuid" | "name">>): Campaign[];
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Common factory utilities.
3
+ *
4
+ * @module testing/factories/common
5
+ */
6
+ /** Global counters for unique IDs */
7
+ declare const counters: {
8
+ subscriber: number;
9
+ list: number;
10
+ campaign: number;
11
+ template: number;
12
+ media: number;
13
+ bounce: number;
14
+ };
15
+ /**
16
+ * Get next ID for a counter.
17
+ */
18
+ export declare function nextId(key: keyof typeof counters): number;
19
+ /**
20
+ * Reset all factory counters to 0.
21
+ *
22
+ * Call this in beforeEach/afterEach hooks for predictable test IDs.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * beforeEach(() => {
27
+ * resetFactories();
28
+ * });
29
+ *
30
+ * it('creates subscriber with id 1', () => {
31
+ * const sub = createMockSubscriber();
32
+ * expect(sub.id).toBe(1); // Always 1 after reset
33
+ * });
34
+ * ```
35
+ */
36
+ export declare function resetFactories(): void;
37
+ /**
38
+ * Generate a valid RFC 4122 UUID v4 for testing.
39
+ *
40
+ * The UUID is deterministic based on the entity type and id, making tests predictable.
41
+ * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
42
+ * - 4 indicates version 4
43
+ * - y is one of 8, 9, a, b (variant bits)
44
+ *
45
+ * @param entityType - Entity type prefix (sub, list, camp, tmpl, med, bnce)
46
+ * @param id - Numeric ID to embed in the UUID
47
+ * @returns A valid UUID v4 string that passes Zod validation
48
+ */
49
+ export declare function mockUuid(entityType: string, id: number): string;
50
+ /**
51
+ * Get current ISO timestamp.
52
+ */
53
+ export declare function nowISO(): string;
54
+ export {};
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Factory functions index.
3
+ *
4
+ * @module testing/factories
5
+ */
6
+ export { resetFactories } from "./common";
7
+ export { createMockSubscriber, createMockSubscribers } from "./subscriber";
8
+ export { createMockList, createMockLists } from "./list";
9
+ export { createMockCampaign, createMockCampaigns } from "./campaign";
10
+ export { createMockTemplate, createMockTemplates } from "./template";
11
+ export { createMockMedia, createMockMediaItems } from "./media";
12
+ export { createMockBounce, createMockBounces } from "./bounce";
@@ -0,0 +1,43 @@
1
+ /**
2
+ * List factory functions.
3
+ *
4
+ * @module testing/factories/list
5
+ */
6
+ import type { List } from "../../resources/lists/types";
7
+ /**
8
+ * Creates a mock list with realistic default values.
9
+ *
10
+ * @param overrides - Optional fields to override defaults
11
+ * @returns A valid List object
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Default list
16
+ * const list = createMockList();
17
+ * // { id: 1, name: 'Test List 1', type: 'public', ... }
18
+ *
19
+ * // With overrides
20
+ * const custom = createMockList({
21
+ * name: 'Newsletter',
22
+ * type: 'private',
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function createMockList(overrides?: Partial<List>): List;
27
+ /**
28
+ * Creates multiple unique mock lists.
29
+ *
30
+ * @param count - Number of lists to create
31
+ * @param overrides - Optional fields to apply to all lists
32
+ * @returns Array of unique List objects
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const lists = createMockLists(3);
37
+ * // 3 lists with unique IDs and names
38
+ *
39
+ * const privateLists = createMockLists(2, { type: 'private' });
40
+ * // 2 private lists
41
+ * ```
42
+ */
43
+ export declare function createMockLists(count: number, overrides?: Partial<Omit<List, "id" | "uuid" | "name">>): List[];
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Media factory functions.
3
+ *
4
+ * @module testing/factories/media
5
+ */
6
+ import type { Media } from "../../resources/media/types";
7
+ /**
8
+ * Creates a mock media item with realistic default values.
9
+ *
10
+ * @param overrides - Optional fields to override defaults
11
+ * @returns A valid Media object
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Default media
16
+ * const media = createMockMedia();
17
+ * // { id: 1, filename: 'image1.jpg', content_type: 'image/jpeg', ... }
18
+ *
19
+ * // With overrides
20
+ * const custom = createMockMedia({
21
+ * filename: 'logo.png',
22
+ * content_type: 'image/png',
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function createMockMedia(overrides?: Partial<Media>): Media;
27
+ /**
28
+ * Creates multiple unique mock media items.
29
+ *
30
+ * @param count - Number of media items to create
31
+ * @param overrides - Optional fields to apply to all media items
32
+ * @returns Array of unique Media objects
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const media = createMockMediaItems(5);
37
+ * // 5 media items with unique IDs and filenames
38
+ * ```
39
+ */
40
+ export declare function createMockMediaItems(count: number, overrides?: Partial<Omit<Media, "id" | "uuid" | "filename">>): Media[];
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Subscriber factory functions.
3
+ *
4
+ * @module testing/factories/subscriber
5
+ */
6
+ import type { Subscriber } from "../../resources/subscribers/types";
7
+ /**
8
+ * Creates a mock subscriber with realistic default values.
9
+ *
10
+ * @param overrides - Optional fields to override defaults
11
+ * @returns A valid Subscriber object
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Default subscriber
16
+ * const sub = createMockSubscriber();
17
+ * // { id: 1, email: 'user1@example.com', name: 'Test User 1', ... }
18
+ *
19
+ * // With overrides
20
+ * const custom = createMockSubscriber({
21
+ * email: 'custom@mycompany.com',
22
+ * status: 'disabled',
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function createMockSubscriber(overrides?: Partial<Subscriber>): Subscriber;
27
+ /**
28
+ * Creates multiple unique mock subscribers.
29
+ *
30
+ * @param count - Number of subscribers to create
31
+ * @param overrides - Optional fields to apply to all subscribers
32
+ * @returns Array of unique Subscriber objects
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const subs = createMockSubscribers(5);
37
+ * // 5 subscribers with unique IDs and emails
38
+ *
39
+ * const blocklisted = createMockSubscribers(3, { status: 'blocklisted' });
40
+ * // 3 blocklisted subscribers
41
+ * ```
42
+ */
43
+ export declare function createMockSubscribers(count: number, overrides?: Partial<Omit<Subscriber, "id" | "uuid" | "email">>): Subscriber[];
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Template factory functions.
3
+ *
4
+ * @module testing/factories/template
5
+ */
6
+ import type { Template } from "../../resources/templates/types";
7
+ /**
8
+ * Creates a mock template with realistic default values.
9
+ *
10
+ * @param overrides - Optional fields to override defaults
11
+ * @returns A valid Template object
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * // Default template
16
+ * const template = createMockTemplate();
17
+ * // { id: 1, name: 'Test Template 1', type: 'campaign', ... }
18
+ *
19
+ * // With overrides
20
+ * const custom = createMockTemplate({
21
+ * name: 'Welcome Email',
22
+ * is_default: true,
23
+ * });
24
+ * ```
25
+ */
26
+ export declare function createMockTemplate(overrides?: Partial<Template>): Template;
27
+ /**
28
+ * Creates multiple unique mock templates.
29
+ *
30
+ * @param count - Number of templates to create
31
+ * @param overrides - Optional fields to apply to all templates
32
+ * @returns Array of unique Template objects
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const templates = createMockTemplates(3);
37
+ * // 3 templates with unique IDs and names
38
+ * ```
39
+ */
40
+ export declare function createMockTemplates(count: number, overrides?: Partial<Omit<Template, "id" | "name">>): Template[];
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Testing utilities for the Listmonk SDK.
3
+ *
4
+ * Provides MockListmonkClient and factory functions for testing
5
+ * application code that uses the SDK without making real API calls.
6
+ *
7
+ * @module testing
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { MockListmonkClient, createMockSubscriber } from '@solytude/listmonk/testing';
12
+ *
13
+ * describe('MyApp', () => {
14
+ * let mockClient: MockListmonkClient;
15
+ *
16
+ * beforeEach(() => {
17
+ * mockClient = new MockListmonkClient();
18
+ * });
19
+ *
20
+ * afterEach(() => {
21
+ * mockClient.reset();
22
+ * });
23
+ *
24
+ * it('works', async () => {
25
+ * mockClient.subscribers.retrieve.mockResolvedValue(
26
+ * createMockSubscriber({ email: 'test@example.com' })
27
+ * );
28
+ *
29
+ * // Test your application code...
30
+ * });
31
+ * });
32
+ * ```
33
+ */
34
+ export { MockListmonkClient } from "./mock-client";
35
+ export { createMockFunction } from "./mock-function";
36
+ export { MockNotConfiguredError } from "./errors";
37
+ export { resetFactories, createMockSubscriber, createMockSubscribers, createMockList, createMockLists, createMockCampaign, createMockCampaigns, createMockTemplate, createMockTemplates, createMockMedia, createMockMediaItems, createMockBounce, createMockBounces, } from "./factories";
38
+ export type { MockFunction, MockState, MockResult, MockArgs, MockReturn, Mocked, MockedObject, } from "./types";
39
+ export type { MockSubscribersResource, MockListsResource, MockCampaignsResource, MockTemplatesResource, MockTransactionalResource, MockMediaResource, MockImportResource, MockBouncesResource, MockSettingsResource, MockDashboardResource, MockAdminResource, MockMaintenanceResource, MockPublicResource, } from "./resources";