@iterable/api 0.0.1

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 (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +74 -0
  3. package/dist/client/base.d.ts +33 -0
  4. package/dist/client/base.d.ts.map +1 -0
  5. package/dist/client/base.js +155 -0
  6. package/dist/client/base.js.map +1 -0
  7. package/dist/client/campaigns.d.ts +71 -0
  8. package/dist/client/campaigns.d.ts.map +1 -0
  9. package/dist/client/campaigns.js +125 -0
  10. package/dist/client/campaigns.js.map +1 -0
  11. package/dist/client/catalogs.d.ts +60 -0
  12. package/dist/client/catalogs.d.ts.map +1 -0
  13. package/dist/client/catalogs.js +138 -0
  14. package/dist/client/catalogs.js.map +1 -0
  15. package/dist/client/events.d.ts +38 -0
  16. package/dist/client/events.d.ts.map +1 -0
  17. package/dist/client/events.js +38 -0
  18. package/dist/client/events.js.map +1 -0
  19. package/dist/client/experiments.d.ts +24 -0
  20. package/dist/client/experiments.d.ts.map +1 -0
  21. package/dist/client/experiments.js +29 -0
  22. package/dist/client/experiments.js.map +1 -0
  23. package/dist/client/export.d.ts +27 -0
  24. package/dist/client/export.d.ts.map +1 -0
  25. package/dist/client/export.js +31 -0
  26. package/dist/client/export.js.map +1 -0
  27. package/dist/client/index.d.ts +315 -0
  28. package/dist/client/index.d.ts.map +1 -0
  29. package/dist/client/index.js +25 -0
  30. package/dist/client/index.js.map +1 -0
  31. package/dist/client/journeys.d.ts +26 -0
  32. package/dist/client/journeys.d.ts.map +1 -0
  33. package/dist/client/journeys.js +32 -0
  34. package/dist/client/journeys.js.map +1 -0
  35. package/dist/client/lists.d.ts +39 -0
  36. package/dist/client/lists.d.ts.map +1 -0
  37. package/dist/client/lists.js +80 -0
  38. package/dist/client/lists.js.map +1 -0
  39. package/dist/client/messaging.d.ts +39 -0
  40. package/dist/client/messaging.d.ts.map +1 -0
  41. package/dist/client/messaging.js +110 -0
  42. package/dist/client/messaging.js.map +1 -0
  43. package/dist/client/snippets.d.ts +37 -0
  44. package/dist/client/snippets.d.ts.map +1 -0
  45. package/dist/client/snippets.js +29 -0
  46. package/dist/client/snippets.js.map +1 -0
  47. package/dist/client/subscriptions.d.ts +26 -0
  48. package/dist/client/subscriptions.d.ts.map +1 -0
  49. package/dist/client/subscriptions.js +31 -0
  50. package/dist/client/subscriptions.js.map +1 -0
  51. package/dist/client/templates.d.ts +52 -0
  52. package/dist/client/templates.d.ts.map +1 -0
  53. package/dist/client/templates.js +132 -0
  54. package/dist/client/templates.js.map +1 -0
  55. package/dist/client/users.d.ts +76 -0
  56. package/dist/client/users.d.ts.map +1 -0
  57. package/dist/client/users.js +115 -0
  58. package/dist/client/users.js.map +1 -0
  59. package/dist/client/webhooks.d.ts +25 -0
  60. package/dist/client/webhooks.d.ts.map +1 -0
  61. package/dist/client/webhooks.js +17 -0
  62. package/dist/client/webhooks.js.map +1 -0
  63. package/dist/config.d.ts +26 -0
  64. package/dist/config.d.ts.map +1 -0
  65. package/dist/config.js +51 -0
  66. package/dist/config.js.map +1 -0
  67. package/dist/errors.d.ts +45 -0
  68. package/dist/errors.d.ts.map +1 -0
  69. package/dist/errors.js +144 -0
  70. package/dist/errors.js.map +1 -0
  71. package/dist/index.d.ts +21 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +25 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/logger.d.ts +3 -0
  76. package/dist/logger.d.ts.map +1 -0
  77. package/dist/logger.js +32 -0
  78. package/dist/logger.js.map +1 -0
  79. package/dist/types/campaigns.d.ts +307 -0
  80. package/dist/types/campaigns.d.ts.map +1 -0
  81. package/dist/types/campaigns.js +226 -0
  82. package/dist/types/campaigns.js.map +1 -0
  83. package/dist/types/catalogs.d.ts +138 -0
  84. package/dist/types/catalogs.d.ts.map +1 -0
  85. package/dist/types/catalogs.js +139 -0
  86. package/dist/types/catalogs.js.map +1 -0
  87. package/dist/types/common.d.ts +145 -0
  88. package/dist/types/common.d.ts.map +1 -0
  89. package/dist/types/common.js +110 -0
  90. package/dist/types/common.js.map +1 -0
  91. package/dist/types/events.d.ts +124 -0
  92. package/dist/types/events.d.ts.map +1 -0
  93. package/dist/types/events.js +118 -0
  94. package/dist/types/events.js.map +1 -0
  95. package/dist/types/experiments.d.ts +14 -0
  96. package/dist/types/experiments.d.ts.map +1 -0
  97. package/dist/types/experiments.js +24 -0
  98. package/dist/types/experiments.js.map +1 -0
  99. package/dist/types/export.d.ts +121 -0
  100. package/dist/types/export.d.ts.map +1 -0
  101. package/dist/types/export.js +105 -0
  102. package/dist/types/export.js.map +1 -0
  103. package/dist/types/journeys.d.ts +72 -0
  104. package/dist/types/journeys.d.ts.map +1 -0
  105. package/dist/types/journeys.js +65 -0
  106. package/dist/types/journeys.js.map +1 -0
  107. package/dist/types/lists.d.ts +149 -0
  108. package/dist/types/lists.d.ts.map +1 -0
  109. package/dist/types/lists.js +140 -0
  110. package/dist/types/lists.js.map +1 -0
  111. package/dist/types/messaging.d.ts +246 -0
  112. package/dist/types/messaging.d.ts.map +1 -0
  113. package/dist/types/messaging.js +323 -0
  114. package/dist/types/messaging.js.map +1 -0
  115. package/dist/types/snippets.d.ts +89 -0
  116. package/dist/types/snippets.d.ts.map +1 -0
  117. package/dist/types/snippets.js +85 -0
  118. package/dist/types/snippets.js.map +1 -0
  119. package/dist/types/subscriptions.d.ts +63 -0
  120. package/dist/types/subscriptions.d.ts.map +1 -0
  121. package/dist/types/subscriptions.js +40 -0
  122. package/dist/types/subscriptions.js.map +1 -0
  123. package/dist/types/templates.d.ts +315 -0
  124. package/dist/types/templates.d.ts.map +1 -0
  125. package/dist/types/templates.js +357 -0
  126. package/dist/types/templates.js.map +1 -0
  127. package/dist/types/users.d.ts +144 -0
  128. package/dist/types/users.d.ts.map +1 -0
  129. package/dist/types/users.js +189 -0
  130. package/dist/types/users.js.map +1 -0
  131. package/dist/types/webhooks.d.ts +52 -0
  132. package/dist/types/webhooks.d.ts.map +1 -0
  133. package/dist/types/webhooks.js +32 -0
  134. package/dist/types/webhooks.js.map +1 -0
  135. package/package.json +73 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Greg Methvin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # Iterable API Client
2
+
3
+ TypeScript client library for the [Iterable API](https://api.iterable.com/api/docs).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @iterable/api
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { IterableClient } from '@iterable/api';
15
+
16
+ const client = new IterableClient({
17
+ apiKey: 'your-api-key'
18
+ });
19
+
20
+ const user = await client.getUserByEmail('user@example.com');
21
+
22
+ // Track event
23
+ await client.trackEvent({
24
+ email: 'user@example.com',
25
+ eventName: 'purchase',
26
+ dataFields: { amount: 99.99 }
27
+ });
28
+
29
+ // Send email
30
+ await client.sendEmail({
31
+ campaignId: 123456,
32
+ recipientEmail: 'user@example.com'
33
+ });
34
+ ```
35
+
36
+ ## Configuration
37
+
38
+ ```typescript
39
+ // From environment variables
40
+ const client = new IterableClient(createIterableConfig());
41
+
42
+ // Or configure directly
43
+ const client = new IterableClient({
44
+ apiKey: 'your-api-key',
45
+ baseUrl: 'https://api.iterable.com', // optional
46
+ timeout: 30000, // optional
47
+ debug: false // optional
48
+ });
49
+ ```
50
+
51
+ ### Environment Variables
52
+
53
+ ```bash
54
+ ITERABLE_API_KEY=your-api-key # Required
55
+ ITERABLE_DEBUG=true # Optional: Enable debug logging
56
+ LOG_LEVEL=info # Optional: Log level
57
+ LOG_FILE=./logs/iterable.log # Optional: Log to file
58
+ ```
59
+
60
+ ## Development
61
+
62
+ ```bash
63
+ pnpm install
64
+ pnpm build # Build with linting
65
+ pnpm test # Run all tests
66
+ pnpm test:unit # Unit tests only
67
+
68
+ # Integration tests (requires API key)
69
+ ITERABLE_API_KEY=your-key pnpm test:integration
70
+ ```
71
+
72
+ ## License
73
+
74
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
@@ -0,0 +1,33 @@
1
+ import { AxiosInstance } from "axios";
2
+ import { z } from "zod";
3
+ import { IterableConfig } from "../types/common.js";
4
+ export declare const DEFAULT_USER_AGENT: string;
5
+ /**
6
+ * Base client with shared infrastructure for all Iterable API operations
7
+ */
8
+ export declare class BaseIterableClient {
9
+ #private;
10
+ client: AxiosInstance;
11
+ constructor(config?: IterableConfig, injectedClient?: AxiosInstance);
12
+ /**
13
+ * Parse NDJSON (newline-delimited JSON) response into an array of objects
14
+ */
15
+ parseNdjson(data: string): any[];
16
+ /**
17
+ * Parse CSV response into an array of objects using csv-parse library
18
+ */
19
+ parseCsv(data: string): any[];
20
+ validateResponse<T>(response: {
21
+ data: unknown;
22
+ config?: {
23
+ url?: string;
24
+ };
25
+ }, schema: z.ZodSchema<T>): T;
26
+ /**
27
+ * Clean up HTTP agents to prevent Jest from hanging
28
+ * Should be called when the client is no longer needed
29
+ */
30
+ destroy(): void;
31
+ }
32
+ export type Constructor<T = object> = new (...args: any[]) => T;
33
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAMA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAWpD,eAAO,MAAM,kBAAkB,QAAwC,CAAC;AAExE;;GAEG;AACH,qBAAa,kBAAkB;;IACtB,MAAM,EAAE,aAAa,CAAC;gBAIjB,MAAM,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,aAAa;IAsFnE;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE;IA2BvC;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE;IAoB7B,gBAAgB,CAAC,CAAC,EACvB,QAAQ,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EACtD,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GACrB,CAAC;IAaJ;;;OAGG;IACI,OAAO,IAAI,IAAI;CAIvB;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,155 @@
1
+ import { readFileSync } from "node:fs";
2
+ import http from "node:http";
3
+ import https from "node:https";
4
+ import { dirname, join } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import axios from "axios";
7
+ import { parse as csvParse } from "csv-parse/sync";
8
+ import { createIterableConfig } from "../config.js";
9
+ import { createIterableError, IterableResponseValidationError, } from "../errors.js";
10
+ import { logger } from "../logger.js";
11
+ // Get package version for User-Agent header
12
+ const packageJson = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), "..", "..", "package.json"), "utf-8"));
13
+ // Export User-Agent value for reuse in other clients (like MCP server)
14
+ export const DEFAULT_USER_AGENT = `iterable-api/${packageJson.version}`;
15
+ /**
16
+ * Base client with shared infrastructure for all Iterable API operations
17
+ */
18
+ export class BaseIterableClient {
19
+ client;
20
+ #httpAgent;
21
+ #httpsAgent;
22
+ constructor(config, injectedClient) {
23
+ const clientConfig = config || createIterableConfig();
24
+ if (injectedClient) {
25
+ this.client = injectedClient;
26
+ }
27
+ else {
28
+ // Create agents with keepAlive for better performance
29
+ this.#httpAgent = new http.Agent({
30
+ keepAlive: true,
31
+ keepAliveMsecs: 1000,
32
+ });
33
+ this.#httpsAgent = new https.Agent({
34
+ keepAlive: true,
35
+ keepAliveMsecs: 1000,
36
+ });
37
+ const defaultHeaders = {
38
+ "Api-Key": clientConfig.apiKey,
39
+ "Content-Type": "application/json",
40
+ "User-Agent": DEFAULT_USER_AGENT,
41
+ };
42
+ this.client = axios.create({
43
+ baseURL: clientConfig.baseUrl || "https://api.iterable.com",
44
+ headers: {
45
+ ...defaultHeaders,
46
+ ...(clientConfig.customHeaders || {}),
47
+ },
48
+ timeout: clientConfig.timeout || 30000,
49
+ httpAgent: this.#httpAgent,
50
+ httpsAgent: this.#httpsAgent,
51
+ maxRedirects: 5,
52
+ });
53
+ }
54
+ // Add error handling interceptor (always active)
55
+ if (!injectedClient) {
56
+ this.client.interceptors.response.use((response) => response, (error) => {
57
+ return Promise.reject(createIterableError(error));
58
+ });
59
+ // Add debug logging interceptors (only when debug is enabled)
60
+ if (clientConfig.debug) {
61
+ this.client.interceptors.request.use((request) => {
62
+ logger.debug("API request", {
63
+ method: request.method?.toUpperCase(),
64
+ url: request.url,
65
+ });
66
+ return request;
67
+ });
68
+ // Helper function to create log data from response/error
69
+ const createResponseLogData = (response, includeData = false) => ({
70
+ status: response.status,
71
+ url: response.config?.url || response.config.url,
72
+ ...(includeData && { data: response.data }),
73
+ });
74
+ this.client.interceptors.response.use((response) => {
75
+ logger.debug("API response", createResponseLogData(response, clientConfig.debugVerbose));
76
+ return response;
77
+ }, (error) => {
78
+ if (error.response) {
79
+ logger.error("API error", createResponseLogData(error.response, true));
80
+ }
81
+ else {
82
+ logger.error("Network error", { message: error.message });
83
+ }
84
+ // Error is already converted by the error handling interceptor above
85
+ return Promise.reject(error);
86
+ });
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Parse NDJSON (newline-delimited JSON) response into an array of objects
92
+ */
93
+ parseNdjson(data) {
94
+ if (!data) {
95
+ return [];
96
+ }
97
+ const lines = data.trim().split("\n");
98
+ const results = [];
99
+ for (const line of lines) {
100
+ const trimmedLine = line.trim();
101
+ if (trimmedLine) {
102
+ try {
103
+ const parsed = JSON.parse(trimmedLine);
104
+ results.push(parsed);
105
+ }
106
+ catch (error) {
107
+ // Skip invalid JSON lines but log them
108
+ logger.warn("Failed to parse NDJSON line", {
109
+ line: trimmedLine,
110
+ error: error instanceof Error ? error.message : String(error),
111
+ });
112
+ }
113
+ }
114
+ }
115
+ return results;
116
+ }
117
+ /**
118
+ * Parse CSV response into an array of objects using csv-parse library
119
+ */
120
+ parseCsv(data) {
121
+ if (!data) {
122
+ return [];
123
+ }
124
+ try {
125
+ return csvParse(data, {
126
+ columns: true, // Use first line as headers
127
+ skip_empty_lines: true,
128
+ trim: true,
129
+ });
130
+ }
131
+ catch (error) {
132
+ // Log error but don't throw - return empty array for graceful degradation
133
+ logger.warn("Failed to parse CSV data", {
134
+ error: error instanceof Error ? error.message : String(error),
135
+ });
136
+ return [];
137
+ }
138
+ }
139
+ validateResponse(response, schema) {
140
+ const result = schema.safeParse(response.data);
141
+ if (!result.success) {
142
+ throw new IterableResponseValidationError(200, response.data, result.error.message, response.config?.url);
143
+ }
144
+ return result.data;
145
+ }
146
+ /**
147
+ * Clean up HTTP agents to prevent Jest from hanging
148
+ * Should be called when the client is no longer needed
149
+ */
150
+ destroy() {
151
+ this.#httpAgent?.destroy();
152
+ this.#httpsAgent?.destroy();
153
+ }
154
+ }
155
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,4CAA4C;AAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CACV,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EACzE,OAAO,CACR,CACF,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,WAAW,CAAC,OAAO,EAAE,CAAC;AAExE;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACtB,MAAM,CAAgB;IAC7B,UAAU,CAAc;IACxB,WAAW,CAAe;IAE1B,YAAY,MAAuB,EAAE,cAA8B;QACjE,MAAM,YAAY,GAAG,MAAM,IAAI,oBAAoB,EAAE,CAAC;QAEtD,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBAC/B,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;gBACjC,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG;gBACrB,SAAS,EAAE,YAAY,CAAC,MAAM;gBAC9B,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,kBAAkB;aACjC,CAAC;YAEF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBACzB,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,0BAA0B;gBAC3D,OAAO,EAAE;oBACP,GAAG,cAAc;oBACjB,GAAG,CAAC,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC;iBACtC;gBACD,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,KAAK;gBACtC,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;gBAC5B,YAAY,EAAE,CAAC;aAChB,CAAC,CAAC;QACL,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAK,EAAE,EAAE;gBACR,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,CAAC,CACF,CAAC;YAEF,8DAA8D;YAC9D,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC/C,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE;wBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE;wBACrC,GAAG,EAAE,OAAO,CAAC,GAAG;qBACjB,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC,CAAC;gBAEH,yDAAyD;gBACzD,MAAM,qBAAqB,GAAG,CAAC,QAAa,EAAE,WAAW,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;oBACrE,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG;oBAChD,GAAG,CAAC,WAAW,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;iBAC5C,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE;oBACX,MAAM,CAAC,KAAK,CACV,cAAc,EACd,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,CAC3D,CAAC;oBACF,OAAO,QAAQ,CAAC;gBAClB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;oBACR,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACnB,MAAM,CAAC,KAAK,CACV,WAAW,EACX,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC5C,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBACD,qEAAqE;oBACrE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GAAU,EAAE,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,uCAAuC;oBACvC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;wBACzC,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC9D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,IAAY;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,EAAE;gBACpB,OAAO,EAAE,IAAI,EAAE,4BAA4B;gBAC3C,gBAAgB,EAAE,IAAI;gBACtB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0EAA0E;YAC1E,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBACtC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,gBAAgB,CACrB,QAAsD,EACtD,MAAsB;QAEtB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,+BAA+B,CACvC,GAAG,EACH,QAAQ,CAAC,IAAI,EACb,MAAM,CAAC,KAAK,CAAC,OAAO,EACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,CACrB,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,OAAO;QACZ,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,71 @@
1
+ import { AbortCampaignParams, ActivateTriggeredCampaignParams, ArchiveCampaignsParams, ArchiveCampaignsResponse, CancelCampaignParams, CreateCampaignParams, CreateCampaignResponse, DeactivateTriggeredCampaignParams, GetCampaignMetricsParams, GetCampaignParams, GetCampaignResponse, GetCampaignsParams, GetCampaignsResponse, GetChildCampaignsParams, GetChildCampaignsResponse, ScheduleCampaignParams, SendCampaignParams, TriggerCampaignParams } from "../types/campaigns.js";
2
+ import { IterableSuccessResponse } from "../types/common.js";
3
+ import type { BaseIterableClient, Constructor } from "./base.js";
4
+ /**
5
+ * Campaigns operations mixin
6
+ */
7
+ export declare function Campaigns<T extends Constructor<BaseIterableClient>>(Base: T): {
8
+ new (...args: any[]): {
9
+ getCampaigns(params?: GetCampaignsParams, opts?: {
10
+ signal?: AbortSignal;
11
+ }): Promise<GetCampaignsResponse>;
12
+ getCampaign(params: GetCampaignParams, opts?: {
13
+ signal?: AbortSignal;
14
+ }): Promise<GetCampaignResponse>;
15
+ createCampaign(params: CreateCampaignParams): Promise<CreateCampaignResponse>;
16
+ getChildCampaigns(params: GetChildCampaignsParams, opts?: {
17
+ signal?: AbortSignal;
18
+ }): Promise<GetChildCampaignsResponse>;
19
+ getCampaignMetrics(options: GetCampaignMetricsParams): Promise<any[]>;
20
+ scheduleCampaign(params: ScheduleCampaignParams): Promise<IterableSuccessResponse>;
21
+ /**
22
+ * Abort a campaign
23
+ * Stops a campaign that is currently running
24
+ */
25
+ abortCampaign(params: AbortCampaignParams): Promise<IterableSuccessResponse>;
26
+ /**
27
+ * Cancel a scheduled or recurring campaign
28
+ */
29
+ cancelCampaign(params: CancelCampaignParams): Promise<IterableSuccessResponse>;
30
+ /**
31
+ * Activate a triggered campaign
32
+ * Note: API triggered campaign activation must be enabled for your project
33
+ */
34
+ activateTriggeredCampaign(params: ActivateTriggeredCampaignParams): Promise<IterableSuccessResponse>;
35
+ /**
36
+ * Deactivate a triggered campaign
37
+ * Note: API triggered campaign deactivation must be enabled for your project
38
+ */
39
+ deactivateTriggeredCampaign(params: DeactivateTriggeredCampaignParams): Promise<IterableSuccessResponse>;
40
+ /**
41
+ * Archive one or more campaigns
42
+ * This behaves the same as the archive feature in the UI:
43
+ * - Scheduled or recurring campaigns will be cancelled
44
+ * - Running campaigns will be aborted
45
+ * - Archived campaigns will be hidden from the Campaigns page but viewable in the Archived tab
46
+ * Rate limit: 5 requests/second, per API key
47
+ */
48
+ archiveCampaigns(params: ArchiveCampaignsParams): Promise<ArchiveCampaignsResponse>;
49
+ /**
50
+ * Trigger a campaign to send to specified lists
51
+ */
52
+ triggerCampaign(params: TriggerCampaignParams): Promise<IterableSuccessResponse>;
53
+ /**
54
+ * Send an existing campaign immediately
55
+ */
56
+ sendCampaign(params: SendCampaignParams): Promise<IterableSuccessResponse>;
57
+ client: import("axios").AxiosInstance;
58
+ "__#private@#httpAgent"?: import("http").Agent;
59
+ "__#private@#httpsAgent"?: import("https").Agent;
60
+ parseNdjson(data: string): any[];
61
+ parseCsv(data: string): any[];
62
+ validateResponse<T_1>(response: {
63
+ data: unknown;
64
+ config?: {
65
+ url?: string;
66
+ };
67
+ }, schema: import("zod").ZodType<T_1>): T_1;
68
+ destroy(): void;
69
+ };
70
+ } & T;
71
+ //# sourceMappingURL=campaigns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/client/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EAExB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EAEtB,iCAAiC,EACjC,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EAEnB,kBAAkB,EAClB,oBAAoB,EAEpB,uBAAuB,EACvB,yBAAyB,EAEzB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,uBAAuB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEjE;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,WAAW,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;;8BAG7D,kBAAkB,SACpB;YACL,MAAM,CAAC,EAAE,WAAW,CAAC;SACtB,GACA,OAAO,CAAC,oBAAoB,CAAC;4BAwBtB,iBAAiB,SAClB;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GAC9B,OAAO,CAAC,mBAAmB,CAAC;+BASrB,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;kCAMxB,uBAAuB,SACxB;YACL,MAAM,CAAC,EAAE,WAAW,CAAC;SACtB,GACA,OAAO,CAAC,yBAAyB,CAAC;oCAwB1B,wBAAwB,GAChC,OAAO,CAAC,GAAG,EAAE,CAAC;iCAoBP,sBAAsB,GAC7B,OAAO,CAAC,uBAAuB,CAAC;QASnC;;;WAGG;8BAEO,mBAAmB,GAC1B,OAAO,CAAC,uBAAuB,CAAC;QAKnC;;WAEG;+BAEO,oBAAoB,GAC3B,OAAO,CAAC,uBAAuB,CAAC;QAKnC;;;WAGG;0CAEO,+BAA+B,GACtC,OAAO,CAAC,uBAAuB,CAAC;QAQnC;;;WAGG;4CAEO,iCAAiC,GACxC,OAAO,CAAC,uBAAuB,CAAC;QAQnC;;;;;;;WAOG;iCAEO,sBAAsB,GAC7B,OAAO,CAAC,wBAAwB,CAAC;QAKpC;;WAEG;gCAEO,qBAAqB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;QAKnC;;WAEG;6BAEO,kBAAkB,GACzB,OAAO,CAAC,uBAAuB,CAAC;;;;;;;;kBA7DjB,CAAC;mBAAO,CAAC;;;;;MAoE9B"}
@@ -0,0 +1,125 @@
1
+ import { ArchiveCampaignsResponseSchema, CreateCampaignResponseSchema, GetCampaignResponseSchema, GetCampaignsResponseSchema, GetChildCampaignsResponseSchema, } from "../types/campaigns.js";
2
+ import { formatSortParam, IterableSuccessResponseSchema, } from "../types/common.js";
3
+ /**
4
+ * Campaigns operations mixin
5
+ */
6
+ export function Campaigns(Base) {
7
+ return class extends Base {
8
+ async getCampaigns(params, opts) {
9
+ // Always use pagination with defaults to ensure consistent API behavior
10
+ const page = params?.page ?? 1;
11
+ const pageSize = params?.pageSize ?? 10;
12
+ const sort = params?.sort;
13
+ const queryParams = new URLSearchParams();
14
+ queryParams.append("page", page.toString());
15
+ queryParams.append("pageSize", pageSize.toString());
16
+ const sortString = formatSortParam(sort);
17
+ if (sortString) {
18
+ queryParams.append("sort", sortString);
19
+ }
20
+ const url = `/api/campaigns?${queryParams.toString()}`;
21
+ const response = await this.client.get(url, opts?.signal ? { signal: opts.signal } : {});
22
+ return this.validateResponse(response, GetCampaignsResponseSchema);
23
+ }
24
+ async getCampaign(params, opts) {
25
+ const response = await this.client.get(`/api/campaigns/${params.id}`, opts?.signal ? { signal: opts.signal } : {});
26
+ return this.validateResponse(response, GetCampaignResponseSchema);
27
+ }
28
+ async createCampaign(params) {
29
+ const response = await this.client.post("/api/campaigns/create", params);
30
+ return this.validateResponse(response, CreateCampaignResponseSchema);
31
+ }
32
+ async getChildCampaigns(params, opts) {
33
+ // Always use pagination with defaults to ensure consistent API behavior
34
+ const page = params?.page ?? 1;
35
+ const pageSize = params?.pageSize ?? 10;
36
+ const sort = params?.sort;
37
+ const queryParams = new URLSearchParams();
38
+ queryParams.append("page", page.toString());
39
+ queryParams.append("pageSize", pageSize.toString());
40
+ const sortString = formatSortParam(sort);
41
+ if (sortString) {
42
+ queryParams.append("sort", sortString);
43
+ }
44
+ const url = `/api/campaigns/recurring/${params.id}/childCampaigns?${queryParams.toString()}`;
45
+ const response = await this.client.get(url, opts?.signal ? { signal: opts.signal } : {});
46
+ return this.validateResponse(response, GetChildCampaignsResponseSchema);
47
+ }
48
+ async getCampaignMetrics(options) {
49
+ const params = new URLSearchParams();
50
+ params.append("campaignId", options.campaignId.toString());
51
+ if (options.startDateTime)
52
+ params.append("startDateTime", options.startDateTime);
53
+ if (options.endDateTime)
54
+ params.append("endDateTime", options.endDateTime);
55
+ const response = await this.client.get(`/api/campaigns/metrics?${params.toString()}`, {
56
+ responseType: "text",
57
+ });
58
+ // Parse CSV response into array of objects
59
+ return this.parseCsv(response.data);
60
+ }
61
+ async scheduleCampaign(params) {
62
+ const { campaignId, ...scheduleParams } = params;
63
+ const response = await this.client.post(`/api/campaigns/${campaignId}/schedule`, scheduleParams);
64
+ return this.validateResponse(response, IterableSuccessResponseSchema);
65
+ }
66
+ /**
67
+ * Abort a campaign
68
+ * Stops a campaign that is currently running
69
+ */
70
+ async abortCampaign(params) {
71
+ const response = await this.client.post("/api/campaigns/abort", params);
72
+ return this.validateResponse(response, IterableSuccessResponseSchema);
73
+ }
74
+ /**
75
+ * Cancel a scheduled or recurring campaign
76
+ */
77
+ async cancelCampaign(params) {
78
+ const response = await this.client.post("/api/campaigns/cancel", params);
79
+ return this.validateResponse(response, IterableSuccessResponseSchema);
80
+ }
81
+ /**
82
+ * Activate a triggered campaign
83
+ * Note: API triggered campaign activation must be enabled for your project
84
+ */
85
+ async activateTriggeredCampaign(params) {
86
+ const response = await this.client.post("/api/campaigns/activateTriggered", params);
87
+ return this.validateResponse(response, IterableSuccessResponseSchema);
88
+ }
89
+ /**
90
+ * Deactivate a triggered campaign
91
+ * Note: API triggered campaign deactivation must be enabled for your project
92
+ */
93
+ async deactivateTriggeredCampaign(params) {
94
+ const response = await this.client.post("/api/campaigns/deactivateTriggered", params);
95
+ return this.validateResponse(response, IterableSuccessResponseSchema);
96
+ }
97
+ /**
98
+ * Archive one or more campaigns
99
+ * This behaves the same as the archive feature in the UI:
100
+ * - Scheduled or recurring campaigns will be cancelled
101
+ * - Running campaigns will be aborted
102
+ * - Archived campaigns will be hidden from the Campaigns page but viewable in the Archived tab
103
+ * Rate limit: 5 requests/second, per API key
104
+ */
105
+ async archiveCampaigns(params) {
106
+ const response = await this.client.post("/api/campaigns/archive", params);
107
+ return this.validateResponse(response, ArchiveCampaignsResponseSchema);
108
+ }
109
+ /**
110
+ * Trigger a campaign to send to specified lists
111
+ */
112
+ async triggerCampaign(params) {
113
+ const response = await this.client.post("/api/campaigns/trigger", params);
114
+ return this.validateResponse(response, IterableSuccessResponseSchema);
115
+ }
116
+ /**
117
+ * Send an existing campaign immediately
118
+ */
119
+ async sendCampaign(params) {
120
+ const response = await this.client.post(`/api/campaigns/${params.campaignId}/send`);
121
+ return this.validateResponse(response, IterableSuccessResponseSchema);
122
+ }
123
+ };
124
+ }
125
+ //# sourceMappingURL=campaigns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/client/campaigns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { BulkDeleteCatalogItemsParams, CatalogFieldMappingsResponse, CatalogItemWithProperties, GetCatalogFieldMappingsParams, GetCatalogItemsParams, GetCatalogItemsResponse, GetCatalogsParams, GetCatalogsResponse, PartialUpdateCatalogItemParams, ReplaceCatalogItemParams, UpdateCatalogFieldMappingsParams, UpdateCatalogItemParams } from "../types/catalogs.js";
2
+ import { IterableSuccessResponse } from "../types/common.js";
3
+ import type { Constructor } from "./base.js";
4
+ import type { BaseIterableClient } from "./base.js";
5
+ /**
6
+ * Catalogs operations mixin
7
+ */
8
+ export declare function Catalogs<T extends Constructor<BaseIterableClient>>(Base: T): {
9
+ new (...args: any[]): {
10
+ createCatalog(catalogName: string): Promise<IterableSuccessResponse>;
11
+ updateCatalogItems(options: UpdateCatalogItemParams): Promise<IterableSuccessResponse>;
12
+ getCatalogItem(catalogName: string, itemId: string): Promise<CatalogItemWithProperties>;
13
+ deleteCatalogItem(catalogName: string, itemId: string): Promise<IterableSuccessResponse>;
14
+ /**
15
+ * Get list of all catalogs with optional pagination
16
+ */
17
+ getCatalogs(params?: GetCatalogsParams): Promise<GetCatalogsResponse>;
18
+ /**
19
+ * Get field mappings for a catalog
20
+ */
21
+ getCatalogFieldMappings(params: GetCatalogFieldMappingsParams): Promise<CatalogFieldMappingsResponse>;
22
+ /**
23
+ * Get catalog items with optional pagination and sorting
24
+ */
25
+ getCatalogItems(params: GetCatalogItemsParams): Promise<GetCatalogItemsResponse>;
26
+ /**
27
+ * Delete a catalog
28
+ */
29
+ deleteCatalog(catalogName: string): Promise<IterableSuccessResponse>;
30
+ /**
31
+ * Update catalog field mappings (data types)
32
+ */
33
+ updateCatalogFieldMappings(params: UpdateCatalogFieldMappingsParams): Promise<IterableSuccessResponse>;
34
+ /**
35
+ * Bulk delete catalog items
36
+ */
37
+ bulkDeleteCatalogItems(params: BulkDeleteCatalogItemsParams): Promise<IterableSuccessResponse>;
38
+ /**
39
+ * Partial update (PATCH) a catalog item - updates only specified fields
40
+ */
41
+ partialUpdateCatalogItem(params: PartialUpdateCatalogItemParams): Promise<IterableSuccessResponse>;
42
+ /**
43
+ * Replace (PUT) a catalog item - replaces the entire item
44
+ */
45
+ replaceCatalogItem(params: ReplaceCatalogItemParams): Promise<IterableSuccessResponse>;
46
+ client: import("axios").AxiosInstance;
47
+ "__#private@#httpAgent"?: import("http").Agent;
48
+ "__#private@#httpsAgent"?: import("https").Agent;
49
+ parseNdjson(data: string): any[];
50
+ parseCsv(data: string): any[];
51
+ validateResponse<T_1>(response: {
52
+ data: unknown;
53
+ config?: {
54
+ url?: string;
55
+ };
56
+ }, schema: import("zod").ZodType<T_1>): T_1;
57
+ destroy(): void;
58
+ };
59
+ } & T;
60
+ //# sourceMappingURL=catalogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogs.d.ts","sourceRoot":"","sources":["../../src/client/catalogs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAE5B,yBAAyB,EAEzB,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EAEvB,iBAAiB,EACjB,mBAAmB,EAEnB,8BAA8B,EAC9B,wBAAwB,EACxB,gCAAgC,EAChC,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;;mCAEtC,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;oCAM/D,uBAAuB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;oCA0BpB,MAAM,UACX,MAAM,GACb,OAAO,CAAC,yBAAyB,CAAC;uCAQtB,MAAM,UACX,MAAM,GACb,OAAO,CAAC,uBAAuB,CAAC;QAOnC;;WAEG;6BAEQ,iBAAiB,GACzB,OAAO,CAAC,mBAAmB,CAAC;QAsB/B;;WAEG;wCAEO,6BAA6B,GACpC,OAAO,CAAC,4BAA4B,CAAC;QAYxC;;WAEG;gCAEO,qBAAqB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;QA4BnC;;WAEG;mCAC8B,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;QAO1E;;WAEG;2CAEO,gCAAgC,GACvC,OAAO,CAAC,uBAAuB,CAAC;QAUnC;;WAEG;uCAEO,4BAA4B,GACnC,OAAO,CAAC,uBAAuB,CAAC;QAYnC;;WAEG;yCAEO,8BAA8B,GACrC,OAAO,CAAC,uBAAuB,CAAC;QAUnC;;WAEG;mCAEO,wBAAwB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;;;;;;;;kBAnEzB,CAAC;mBAAO,CAAC;;;;;MA6EtB"}