@hualiglobal/kirimel-node-sdk 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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +480 -0
  3. package/dist/client.d.ts +39 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +83 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/exceptions.d.ts +27 -0
  8. package/dist/exceptions.d.ts.map +1 -0
  9. package/dist/exceptions.js +41 -0
  10. package/dist/exceptions.js.map +1 -0
  11. package/dist/httpClient.d.ts +33 -0
  12. package/dist/httpClient.d.ts.map +1 -0
  13. package/dist/httpClient.js +131 -0
  14. package/dist/httpClient.js.map +1 -0
  15. package/dist/index.d.ts +11 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +18 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/resources/Campaigns.d.ts +20 -0
  20. package/dist/resources/Campaigns.d.ts.map +1 -0
  21. package/dist/resources/Campaigns.js +43 -0
  22. package/dist/resources/Campaigns.js.map +1 -0
  23. package/dist/resources/Conversions.d.ts +18 -0
  24. package/dist/resources/Conversions.d.ts.map +1 -0
  25. package/dist/resources/Conversions.js +37 -0
  26. package/dist/resources/Conversions.js.map +1 -0
  27. package/dist/resources/Forms.d.ts +18 -0
  28. package/dist/resources/Forms.d.ts.map +1 -0
  29. package/dist/resources/Forms.js +37 -0
  30. package/dist/resources/Forms.js.map +1 -0
  31. package/dist/resources/LandingPages.d.ts +19 -0
  32. package/dist/resources/LandingPages.d.ts.map +1 -0
  33. package/dist/resources/LandingPages.js +40 -0
  34. package/dist/resources/LandingPages.js.map +1 -0
  35. package/dist/resources/Lists.d.ts +15 -0
  36. package/dist/resources/Lists.d.ts.map +1 -0
  37. package/dist/resources/Lists.js +28 -0
  38. package/dist/resources/Lists.js.map +1 -0
  39. package/dist/resources/Segments.d.ts +20 -0
  40. package/dist/resources/Segments.d.ts.map +1 -0
  41. package/dist/resources/Segments.js +43 -0
  42. package/dist/resources/Segments.js.map +1 -0
  43. package/dist/resources/Subscribers.d.ts +24 -0
  44. package/dist/resources/Subscribers.d.ts.map +1 -0
  45. package/dist/resources/Subscribers.js +55 -0
  46. package/dist/resources/Subscribers.js.map +1 -0
  47. package/dist/resources/Templates.d.ts +18 -0
  48. package/dist/resources/Templates.d.ts.map +1 -0
  49. package/dist/resources/Templates.js +37 -0
  50. package/dist/resources/Templates.js.map +1 -0
  51. package/dist/resources/Workflows.d.ts +23 -0
  52. package/dist/resources/Workflows.d.ts.map +1 -0
  53. package/dist/resources/Workflows.js +52 -0
  54. package/dist/resources/Workflows.js.map +1 -0
  55. package/package.json +52 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 KiriMel
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,480 @@
1
+ # KiriMel Node.js SDK
2
+
3
+ Official Node.js SDK for KiriMel Email Marketing API.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @kirimel/node-sdk
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { Client } from '@kirimel/node-sdk';
15
+
16
+ // Initialize the client
17
+ const client = new Client({
18
+ apiKey: 'sk_test_xxx', // Or set KIRIMEL_API_KEY env variable
19
+ baseUrl: 'https://api.kirimel.com/v2',
20
+ timeout: 30000,
21
+ retries: 3
22
+ });
23
+
24
+ // List campaigns
25
+ const campaigns = await client.campaigns.list({ status: 'sent', limit: 20 });
26
+
27
+ // Create a campaign
28
+ const campaign = await client.campaigns.create({
29
+ name: 'Welcome Email',
30
+ subject: 'Welcome to KiriMel!',
31
+ list_id: 123,
32
+ template_id: 456
33
+ });
34
+
35
+ // Get campaign statistics
36
+ const stats = await client.campaigns.stats(campaign.id);
37
+ ```
38
+
39
+ ## Authentication
40
+
41
+ The SDK supports two authentication methods:
42
+
43
+ ```typescript
44
+ // Method 1: API Key (recommended)
45
+ const client = new Client({ apiKey: 'sk_test_xxx' });
46
+
47
+ // Method 2: Environment variable
48
+ // Set KIRIMEL_API_KEY=sk_test_xxx in your environment
49
+ const client = new Client();
50
+ ```
51
+
52
+ ## Resources
53
+
54
+ ### Campaigns
55
+
56
+ ```typescript
57
+ // List campaigns
58
+ const campaigns = await client.campaigns.list({ limit: 20, status: 'sent' });
59
+
60
+ // Get recent campaigns
61
+ const recent = await client.campaigns.recent();
62
+
63
+ // Get single campaign
64
+ const campaign = await client.campaigns.get(id);
65
+
66
+ // Create campaign
67
+ const campaign = await client.campaigns.create({
68
+ name: 'Summer Sale',
69
+ subject: '50% Off Everything!',
70
+ list_id: 123,
71
+ template_id: 456
72
+ });
73
+
74
+ // Update campaign
75
+ await client.campaigns.update(id, { subject: 'New Subject' });
76
+
77
+ // Delete campaign
78
+ await client.campaigns.delete(id);
79
+
80
+ // Duplicate campaign
81
+ const duplicate = await client.campaigns.duplicate(id);
82
+
83
+ // Schedule campaign
84
+ await client.campaigns.schedule(id, '2024-06-01 10:00:00');
85
+
86
+ // Pause campaign
87
+ await client.campaigns.pause(id);
88
+
89
+ // Resume campaign
90
+ await client.campaigns.resume(id);
91
+
92
+ // Get campaign statistics
93
+ const stats = await client.campaigns.stats(id);
94
+ ```
95
+
96
+ ### Subscribers
97
+
98
+ ```typescript
99
+ // List subscribers for a list
100
+ const subscribers = await client.subscribers.list(listId, { limit: 50 });
101
+
102
+ // Get single subscriber
103
+ const subscriber = await client.subscribers.get(id);
104
+
105
+ // Add subscriber to a list
106
+ const subscriber = await client.subscribers.create(listId, {
107
+ email: 'user@example.com',
108
+ first_name: 'John',
109
+ last_name: 'Doe'
110
+ });
111
+
112
+ // Update subscriber
113
+ await client.subscribers.update(id, { first_name: 'Jane' });
114
+
115
+ // Delete subscriber
116
+ await client.subscribers.delete(id);
117
+
118
+ // Unsubscribe subscriber
119
+ await client.subscribers.unsubscribe(id);
120
+
121
+ // Bulk unsubscribe
122
+ await client.subscribers.bulkUnsubscribe([id1, id2, id3]);
123
+
124
+ // Bulk delete
125
+ await client.subscribers.bulkDelete([id1, id2, id3]);
126
+
127
+ // Get subscriber activity
128
+ const activity = await client.subscribers.activity(id);
129
+
130
+ // Get subscriber statistics
131
+ const stats = await client.subscribers.stats(id);
132
+
133
+ // Toggle VIP status
134
+ await client.subscribers.toggleVip(id);
135
+
136
+ // Search subscribers
137
+ const results = await client.subscribers.search('john@example.com');
138
+
139
+ // Add tag
140
+ await client.subscribers.addTag(id, 'premium-customer');
141
+
142
+ // Remove tag
143
+ await client.subscribers.removeTag(id, 'premium-customer');
144
+
145
+ // Import subscribers
146
+ const result = await client.subscribers.import(listId, {
147
+ subscribers: [
148
+ { email: 'user1@example.com', first_name: 'User 1' },
149
+ { email: 'user2@example.com', first_name: 'User 2' }
150
+ ]
151
+ });
152
+ ```
153
+
154
+ ### Lists
155
+
156
+ ```typescript
157
+ // List all lists
158
+ const lists = await client.lists.list();
159
+
160
+ // Get single list
161
+ const list = await client.lists.get(id);
162
+
163
+ // Create list
164
+ const list = await client.lists.create({
165
+ name: 'Newsletter Subscribers',
166
+ description: 'Monthly newsletter'
167
+ });
168
+
169
+ // Update list
170
+ await client.lists.update(id, { name: 'Updated Name' });
171
+
172
+ // Delete list
173
+ await client.lists.delete(id);
174
+
175
+ // Get list statistics
176
+ const stats = await client.lists.stats(id);
177
+ ```
178
+
179
+ ### Segments
180
+
181
+ ```typescript
182
+ // List segments for a list
183
+ const segments = await client.segments.list(listId);
184
+
185
+ // Get single segment
186
+ const segment = await client.segments.get(id);
187
+
188
+ // Create segment
189
+ const segment = await client.segments.create(listId, {
190
+ name: 'Active Subscribers',
191
+ conditions: [
192
+ { field: 'status', operator: 'equals', value: 'active' }
193
+ ]
194
+ });
195
+
196
+ // Update segment
197
+ await client.segments.update(id, { name: 'Updated Name' });
198
+
199
+ // Delete segment
200
+ await client.segments.delete(id);
201
+
202
+ // Preview segment (without saving)
203
+ const preview = await client.segments.preview(listId, [
204
+ { field: 'status', operator: 'equals', value: 'active' }
205
+ ]);
206
+
207
+ // Get segment subscribers
208
+ const subscribers = await client.segments.subscribers(id);
209
+
210
+ // Refresh segment count
211
+ await client.segments.refresh(id);
212
+
213
+ // Get segment build logs
214
+ const logs = await client.segments.logs(id);
215
+
216
+ // Get segment templates
217
+ const templates = await client.segments.templates();
218
+
219
+ // Get available fields
220
+ const fields = await client.segments.fields();
221
+ ```
222
+
223
+ ### Templates
224
+
225
+ ```typescript
226
+ // List all templates
227
+ const templates = await client.templates.list({ limit: 20 });
228
+
229
+ // Get single template
230
+ const template = await client.templates.get(id);
231
+
232
+ // Create template
233
+ const template = await client.templates.create({
234
+ name: 'Welcome Email',
235
+ subject: 'Welcome!',
236
+ html_content: '<h1>Hello {{name}}</h1>',
237
+ category: 'transactional'
238
+ });
239
+
240
+ // Update template
241
+ await client.templates.update(id, { name: 'Updated Name' });
242
+
243
+ // Delete template
244
+ await client.templates.delete(id);
245
+
246
+ // Duplicate template
247
+ const duplicate = await client.templates.duplicate(id);
248
+
249
+ // Get templates by category
250
+ const templates = await client.templates.byCategory('newsletter');
251
+
252
+ // Search templates
253
+ const results = await client.templates.search('welcome');
254
+
255
+ // Get categories
256
+ const categories = await client.templates.categories();
257
+ ```
258
+
259
+ ### Forms
260
+
261
+ ```typescript
262
+ // List all forms
263
+ const forms = await client.forms.list();
264
+
265
+ // Get single form
266
+ const form = await client.forms.get(id);
267
+
268
+ // Create form
269
+ const form = await client.forms.create({
270
+ name: 'Newsletter Signup',
271
+ list_id: 123,
272
+ fields: [
273
+ { name: 'email', type: 'email', required: true },
274
+ { name: 'first_name', type: 'text', required: false }
275
+ ]
276
+ });
277
+
278
+ // Update form
279
+ await client.forms.update(id, { name: 'Updated Name' });
280
+
281
+ // Delete form
282
+ await client.forms.delete(id);
283
+
284
+ // Duplicate form
285
+ const duplicate = await client.forms.duplicate(id);
286
+
287
+ // Get form analytics
288
+ const analytics = await client.forms.analytics(id);
289
+
290
+ // Get form submissions
291
+ const submissions = await client.forms.submissions(id);
292
+
293
+ // Get embed code
294
+ const embed = await client.forms.embed(id);
295
+ ```
296
+
297
+ ### Conversions
298
+
299
+ ```typescript
300
+ // List all conversion goals
301
+ const conversions = await client.conversions.list();
302
+
303
+ // Get single conversion goal
304
+ const goal = await client.conversions.get(id);
305
+
306
+ // Create conversion goal
307
+ const goal = await client.conversions.create({
308
+ name: 'Purchase',
309
+ event_type: 'purchase',
310
+ value: 100
311
+ });
312
+
313
+ // Update conversion goal
314
+ await client.conversions.update(id, { name: 'Updated Name' });
315
+
316
+ // Delete conversion goal
317
+ await client.conversions.delete(id);
318
+
319
+ // Track a conversion
320
+ await client.conversions.track({
321
+ goal_id: id,
322
+ subscriber_id: 123,
323
+ value: 50
324
+ });
325
+
326
+ // Get conversions for a goal
327
+ const conversions = await client.conversions.conversions(id);
328
+
329
+ // Get ROI report
330
+ const roi = await client.conversions.roi();
331
+
332
+ // Get funnel analysis
333
+ const funnel = await client.conversions.funnel(id);
334
+ ```
335
+
336
+ ### Landing Pages
337
+
338
+ ```typescript
339
+ // List all landing pages
340
+ const pages = await client.landingPages.list();
341
+
342
+ // Get single landing page
343
+ const page = await client.landingPages.get(id);
344
+
345
+ // Create landing page
346
+ const page = await client.landingPages.create({
347
+ name: 'Thank You Page',
348
+ slug: 'thank-you',
349
+ html_content: '<h1>Thank you!</h1>'
350
+ });
351
+
352
+ // Update landing page
353
+ await client.landingPages.update(id, { name: 'Updated Name' });
354
+
355
+ // Delete landing page
356
+ await client.landingPages.delete(id);
357
+
358
+ // Duplicate landing page
359
+ const duplicate = await client.landingPages.duplicate(id);
360
+
361
+ // Publish landing page
362
+ await client.landingPages.publish(id);
363
+
364
+ // Unpublish landing page
365
+ await client.landingPages.unpublish(id);
366
+
367
+ // Get landing page analytics
368
+ const analytics = await client.landingPages.analytics(id);
369
+
370
+ // Get templates
371
+ const templates = await client.landingPages.templates();
372
+ ```
373
+
374
+ ### Workflows
375
+
376
+ ```typescript
377
+ // List all workflows
378
+ const workflows = await client.workflows.list();
379
+
380
+ // Get single workflow
381
+ const workflow = await client.workflows.get(id);
382
+
383
+ // Create workflow
384
+ const workflow = await client.workflows.create({
385
+ name: 'Welcome Series',
386
+ nodes: [...],
387
+ edges: [...]
388
+ });
389
+
390
+ // Update workflow
391
+ await client.workflows.update(id, { name: 'Updated Name' });
392
+
393
+ // Delete workflow
394
+ await client.workflows.delete(id);
395
+
396
+ // Duplicate workflow
397
+ const duplicate = await client.workflows.duplicate(id);
398
+
399
+ // Activate workflow
400
+ await client.workflows.activate(id);
401
+
402
+ // Pause workflow
403
+ await client.workflows.pause(id);
404
+
405
+ // Validate workflow
406
+ const validation = await client.workflows.validate(id);
407
+
408
+ // Get workflow executions
409
+ const executions = await client.workflows.executions(id);
410
+
411
+ // Get workflow templates
412
+ const templates = await client.workflows.templates();
413
+
414
+ // Create workflow from template
415
+ const workflow = await client.workflows.fromTemplate(templateId);
416
+
417
+ // Get available node types
418
+ const nodeTypes = await client.workflows.nodeTypes();
419
+
420
+ // Get workflow data
421
+ const data = await client.workflows.getData(id);
422
+ ```
423
+
424
+ ## Error Handling
425
+
426
+ ```typescript
427
+ import {
428
+ ApiException,
429
+ AuthenticationException,
430
+ RateLimitException,
431
+ ValidationException
432
+ } from '@kirimel/node-sdk';
433
+
434
+ try {
435
+ const campaign = await client.campaigns.create(data);
436
+ } catch (error) {
437
+ if (error instanceof AuthenticationException) {
438
+ // Invalid API key
439
+ console.error(`Authentication failed: ${error.message}`);
440
+ } else if (error instanceof RateLimitException) {
441
+ // Too many requests
442
+ console.error(`Rate limited. Retry after: ${error.retryAfter} seconds`);
443
+ } else if (error instanceof ValidationException) {
444
+ // Invalid data
445
+ console.error(`Validation errors:`, error.errors);
446
+ } else if (error instanceof ApiException) {
447
+ // General API error
448
+ console.error(`API error (${error.statusCode}): ${error.message}`);
449
+ }
450
+ }
451
+ ```
452
+
453
+ ## Logging
454
+
455
+ ```typescript
456
+ const client = new Client({
457
+ apiKey: 'sk_test_xxx',
458
+ logger: {
459
+ debug: (message, context) => console.log(`[DEBUG] ${message}`, context),
460
+ info: (message, context) => console.info(`[INFO] ${message}`, context),
461
+ warn: (message, context) => console.warn(`[WARN] ${message}`, context),
462
+ error: (message, context) => console.error(`[ERROR] ${message}`, context),
463
+ }
464
+ });
465
+ ```
466
+
467
+ ## Requirements
468
+
469
+ - Node.js 16.0.0 or higher
470
+ - TypeScript 4.5+ (for TypeScript projects)
471
+
472
+ ## License
473
+
474
+ MIT License
475
+
476
+ ## Support
477
+
478
+ - Documentation: https://docs.kirimel.com
479
+ - GitHub: https://github.com/hualiglobal/kirimel-node-sdk
480
+ - Issues: https://github.com/hualiglobal/kirimel-node-sdk/issues
@@ -0,0 +1,39 @@
1
+ /**
2
+ * KiriMel Node.js SDK Client
3
+ */
4
+ import { HttpClientConfig } from './httpClient';
5
+ import { Campaigns } from './resources/Campaigns';
6
+ import { Subscribers } from './resources/Subscribers';
7
+ import { Lists } from './resources/Lists';
8
+ import { Segments } from './resources/Segments';
9
+ import { Templates } from './resources/Templates';
10
+ import { Forms } from './resources/Forms';
11
+ import { Conversions } from './resources/Conversions';
12
+ import { LandingPages } from './resources/LandingPages';
13
+ import { Workflows } from './resources/Workflows';
14
+ export interface ClientConfig extends Omit<HttpClientConfig, 'logger'> {
15
+ logger?: any;
16
+ }
17
+ export declare class Client {
18
+ private readonly httpClient;
19
+ private _campaigns?;
20
+ private _subscribers?;
21
+ private _lists?;
22
+ private _segments?;
23
+ private _templates?;
24
+ private _forms?;
25
+ private _conversions?;
26
+ private _landingPages?;
27
+ private _workflows?;
28
+ constructor(config?: ClientConfig);
29
+ get campaigns(): Campaigns;
30
+ get subscribers(): Subscribers;
31
+ get lists(): Lists;
32
+ get segments(): Segments;
33
+ get templates(): Templates;
34
+ get forms(): Forms;
35
+ get conversions(): Conversions;
36
+ get landingPages(): LandingPages;
37
+ get workflows(): Workflows;
38
+ }
39
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAc,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC;IACpE,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAY;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,aAAa,CAAC,CAAe;IACrC,OAAO,CAAC,UAAU,CAAC,CAAY;gBAEnB,MAAM,GAAE,YAAiB;IAUrC,IAAW,SAAS,IAAI,SAAS,CAKhC;IAED,IAAW,WAAW,IAAI,WAAW,CAKpC;IAED,IAAW,KAAK,IAAI,KAAK,CAKxB;IAED,IAAW,QAAQ,IAAI,QAAQ,CAK9B;IAED,IAAW,SAAS,IAAI,SAAS,CAKhC;IAED,IAAW,KAAK,IAAI,KAAK,CAKxB;IAED,IAAW,WAAW,IAAI,WAAW,CAKpC;IAED,IAAW,YAAY,IAAI,YAAY,CAKtC;IAED,IAAW,SAAS,IAAI,SAAS,CAKhC;CACF"}
package/dist/client.js ADDED
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Client = void 0;
4
+ /**
5
+ * KiriMel Node.js SDK Client
6
+ */
7
+ const httpClient_1 = require("./httpClient");
8
+ const Campaigns_1 = require("./resources/Campaigns");
9
+ const Subscribers_1 = require("./resources/Subscribers");
10
+ const Lists_1 = require("./resources/Lists");
11
+ const Segments_1 = require("./resources/Segments");
12
+ const Templates_1 = require("./resources/Templates");
13
+ const Forms_1 = require("./resources/Forms");
14
+ const Conversions_1 = require("./resources/Conversions");
15
+ const LandingPages_1 = require("./resources/LandingPages");
16
+ const Workflows_1 = require("./resources/Workflows");
17
+ class Client {
18
+ constructor(config = {}) {
19
+ this.httpClient = new httpClient_1.HttpClient({
20
+ apiKey: config.apiKey,
21
+ baseUrl: config.baseUrl,
22
+ timeout: config.timeout,
23
+ retries: config.retries,
24
+ logger: config.logger,
25
+ });
26
+ }
27
+ get campaigns() {
28
+ if (!this._campaigns) {
29
+ this._campaigns = new Campaigns_1.Campaigns(this.httpClient);
30
+ }
31
+ return this._campaigns;
32
+ }
33
+ get subscribers() {
34
+ if (!this._subscribers) {
35
+ this._subscribers = new Subscribers_1.Subscribers(this.httpClient);
36
+ }
37
+ return this._subscribers;
38
+ }
39
+ get lists() {
40
+ if (!this._lists) {
41
+ this._lists = new Lists_1.Lists(this.httpClient);
42
+ }
43
+ return this._lists;
44
+ }
45
+ get segments() {
46
+ if (!this._segments) {
47
+ this._segments = new Segments_1.Segments(this.httpClient);
48
+ }
49
+ return this._segments;
50
+ }
51
+ get templates() {
52
+ if (!this._templates) {
53
+ this._templates = new Templates_1.Templates(this.httpClient);
54
+ }
55
+ return this._templates;
56
+ }
57
+ get forms() {
58
+ if (!this._forms) {
59
+ this._forms = new Forms_1.Forms(this.httpClient);
60
+ }
61
+ return this._forms;
62
+ }
63
+ get conversions() {
64
+ if (!this._conversions) {
65
+ this._conversions = new Conversions_1.Conversions(this.httpClient);
66
+ }
67
+ return this._conversions;
68
+ }
69
+ get landingPages() {
70
+ if (!this._landingPages) {
71
+ this._landingPages = new LandingPages_1.LandingPages(this.httpClient);
72
+ }
73
+ return this._landingPages;
74
+ }
75
+ get workflows() {
76
+ if (!this._workflows) {
77
+ this._workflows = new Workflows_1.Workflows(this.httpClient);
78
+ }
79
+ return this._workflows;
80
+ }
81
+ }
82
+ exports.Client = Client;
83
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,6CAA4D;AAC5D,qDAAkD;AAClD,yDAAsD;AACtD,6CAA0C;AAC1C,mDAAgD;AAChD,qDAAkD;AAClD,6CAA0C;AAC1C,yDAAsD;AACtD,2DAAwD;AACxD,qDAAkD;AAMlD,MAAa,MAAM;IAYjB,YAAY,SAAuB,EAAE;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,uBAAU,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAW,SAAS;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAW,WAAW;QACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAW,KAAK;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,QAAQ;QACjB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAW,SAAS;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAW,KAAK;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,WAAW;QACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAW,YAAY;QACrB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAW,SAAS;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AApFD,wBAoFC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * KiriMel SDK Exception Classes
3
+ */
4
+ export interface ApiError {
5
+ message: string;
6
+ field?: string;
7
+ }
8
+ export declare class ApiException extends Error {
9
+ readonly statusCode?: number;
10
+ readonly errors?: ApiError[];
11
+ readonly errorType?: string;
12
+ constructor(message: string, statusCode?: number, errors?: ApiError[]);
13
+ }
14
+ export declare class AuthenticationException extends ApiException {
15
+ readonly errorType = "authentication_error";
16
+ constructor(message: string, statusCode?: number, errors?: ApiError[]);
17
+ }
18
+ export declare class RateLimitException extends ApiException {
19
+ readonly errorType = "rate_limit_error";
20
+ readonly retryAfter?: number;
21
+ constructor(message: string, statusCode?: number, errors?: ApiError[], retryAfter?: number);
22
+ }
23
+ export declare class ValidationException extends ApiException {
24
+ readonly errorType = "validation_error";
25
+ constructor(message: string, statusCode?: number, errors?: ApiError[]);
26
+ }
27
+ //# sourceMappingURL=exceptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.d.ts","sourceRoot":"","sources":["../src/exceptions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpC,SAAgB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAGjC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,QAAQ,EAAE;CAOtB;AAED,qBAAa,uBAAwB,SAAQ,YAAY;IACvD,SAAgB,SAAS,0BAA0B;gBAEvC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE;CAItE;AAED,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,SAAgB,SAAS,sBAAsB;IAC/C,SAAgB,UAAU,CAAC,EAAE,MAAM,CAAC;gBAGlC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,QAAQ,EAAE,EACnB,UAAU,CAAC,EAAE,MAAM;CAMtB;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,SAAgB,SAAS,sBAAsB;gBAEnC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE;CAItE"}