@cobaltio/cobalt-js 8.9.2-beta.2 → 9.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.
package/cobalt.d.ts CHANGED
@@ -128,25 +128,6 @@ export interface CobaltOptions {
128
128
  /** The session token. */
129
129
  token?: string;
130
130
  }
131
- /**
132
- * @deprecated
133
- */
134
- export interface EcosystemLead {
135
- _id: string;
136
- name?: string;
137
- email: string;
138
- description?: string;
139
- created_at: string;
140
- }
141
- /**
142
- * @deprecated
143
- */
144
- export interface EcosystemLeadPayload {
145
- slug: string;
146
- name?: string;
147
- email: string;
148
- description?: string;
149
- }
150
131
  export interface RuleOptions {
151
132
  rule_column: {
152
133
  rhs: {
@@ -346,7 +327,7 @@ declare class Cobalt {
346
327
  */
347
328
  private getOAuthUrl;
348
329
  /**
349
- * Handle OAuth for the specified native application.
330
+ * Handle OAuth for the specified application.
350
331
  * @private
351
332
  * @param {String} slug The application slug.
352
333
  * @param {Object.<string, string>} [params] The key value pairs of auth data.
@@ -354,18 +335,33 @@ declare class Cobalt {
354
335
  */
355
336
  private oauth;
356
337
  /**
357
- * Connect the specified application, optionally with the auth data that user provides.
338
+ * Save auth data for the specified keybased application.
358
339
  * @param {String} slug The application slug.
359
340
  * @param {Object.<string, string>} [payload] The key value pairs of auth data.
360
- * @returns {Promise<Boolean>} Whether the connection was successful.
341
+ * @returns {Promise<Boolean>} Whether the auth data was saved successfully.
342
+ */
343
+ private keybased;
344
+ /**
345
+ * Connects the specified application using the provided authentication type and optional auth data.
346
+ * @param params - The parameters for connecting the application.
347
+ * @param params.slug - The application slug.
348
+ * @param params.type - The authentication type to use. If not provided, it defaults to `keybased` if payload is provided, otherwise `oauth2`.
349
+ * @param params.payload - key-value pairs of authentication data required for the specified auth type.
350
+ * @returns A promise that resolves to true if the connection was successful, otherwise false.
351
+ * @throws Throws an error if the authentication type is invalid or the connection fails.
361
352
  */
362
- connect(slug: string, payload?: Record<string, string>): Promise<boolean>;
353
+ connect({ slug, type, payload, }: {
354
+ slug: string;
355
+ type?: AuthType;
356
+ payload?: Record<string, string>;
357
+ }): Promise<boolean>;
363
358
  /**
364
359
  * Disconnect the specified application and remove any associated data from Cobalt.
365
360
  * @param {String} slug The application slug.
366
- * @returns {Promise<void>}
361
+ * @param {AuthType} [type] The authentication type to use. If not provided, it'll remove all the connected accounts.
362
+ * @returns {Promise<unknown>}
367
363
  */
368
- disconnect(slug: string): Promise<void>;
364
+ disconnect(slug: string, type?: AuthType): Promise<unknown>;
369
365
  /**
370
366
  * Returns the specified config, or creates one if it doesn't exist.
371
367
  * @param {ConfigPayload} payload The payload object for config.
@@ -400,13 +396,6 @@ declare class Cobalt {
400
396
  * @returns {Promise<unknown>}
401
397
  */
402
398
  deleteConfig(slug: string, configId?: string): Promise<unknown>;
403
- /**
404
- * @deprecated
405
- * Create a lead for an ecosystem app.
406
- * @param {EcosystemLeadPayload} payload The payload object for the lead.
407
- * @returns {Promise<EcosystemLead>}
408
- */
409
- createEcosystemLead(payload: EcosystemLeadPayload): Promise<EcosystemLead>;
410
399
  /**
411
400
  * Returns the specified field of the config.
412
401
  * @param {String} slug The application slug.
package/cobalt.js CHANGED
@@ -146,7 +146,7 @@ class Cobalt {
146
146
  });
147
147
  }
148
148
  /**
149
- * Handle OAuth for the specified native application.
149
+ * Handle OAuth for the specified application.
150
150
  * @private
151
151
  * @param {String} slug The application slug.
152
152
  * @param {Object.<string, string>} [params] The key value pairs of auth data.
@@ -194,53 +194,61 @@ class Cobalt {
194
194
  });
195
195
  }
196
196
  /**
197
- * Connect the specified application, optionally with the auth data that user provides.
197
+ * Save auth data for the specified keybased application.
198
198
  * @param {String} slug The application slug.
199
199
  * @param {Object.<string, string>} [payload] The key value pairs of auth data.
200
- * @returns {Promise<Boolean>} Whether the connection was successful.
200
+ * @returns {Promise<Boolean>} Whether the auth data was saved successfully.
201
201
  */
202
- connect(slug, payload) {
202
+ keybased(slug, payload) {
203
203
  return __awaiter(this, void 0, void 0, function* () {
204
- return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
205
- try {
206
- const app = yield this.getApp(slug);
207
- // oauth
208
- if (app && app.auth_type === AuthType.OAuth2) {
209
- const connected = yield this.oauth(slug, payload);
210
- resolve(connected);
211
- // key based
212
- }
213
- else {
214
- const res = yield fetch(`${this.baseUrl}/api/v2/app/${slug}/save`, {
215
- method: "POST",
216
- headers: {
217
- authorization: `Bearer ${this.token}`,
218
- "content-type": "application/json",
219
- },
220
- body: JSON.stringify(Object.assign({}, payload)),
221
- });
222
- if (res.status >= 400 && res.status < 600) {
223
- const error = yield res.json();
224
- reject(error);
225
- }
226
- const data = yield res.json();
227
- resolve(data.success);
228
- }
229
- }
230
- catch (error) {
231
- reject(error);
232
- }
233
- }));
204
+ const res = yield fetch(`${this.baseUrl}/api/v2/app/${slug}/save`, {
205
+ method: "POST",
206
+ headers: {
207
+ authorization: `Bearer ${this.token}`,
208
+ "content-type": "application/json",
209
+ },
210
+ body: JSON.stringify(Object.assign({}, payload)),
211
+ });
212
+ if (res.status >= 400 && res.status < 600) {
213
+ const error = yield res.json();
214
+ throw error;
215
+ }
216
+ const data = yield res.json();
217
+ return data.success;
218
+ });
219
+ }
220
+ /**
221
+ * Connects the specified application using the provided authentication type and optional auth data.
222
+ * @param params - The parameters for connecting the application.
223
+ * @param params.slug - The application slug.
224
+ * @param params.type - The authentication type to use. If not provided, it defaults to `keybased` if payload is provided, otherwise `oauth2`.
225
+ * @param params.payload - key-value pairs of authentication data required for the specified auth type.
226
+ * @returns A promise that resolves to true if the connection was successful, otherwise false.
227
+ * @throws Throws an error if the authentication type is invalid or the connection fails.
228
+ */
229
+ connect({ slug, type, payload, }) {
230
+ return __awaiter(this, void 0, void 0, function* () {
231
+ switch (type) {
232
+ case AuthType.OAuth2:
233
+ return this.oauth(slug, payload);
234
+ case AuthType.KeyBased:
235
+ return this.keybased(slug, payload);
236
+ default:
237
+ if (payload)
238
+ return this.keybased(slug, payload);
239
+ return this.oauth(slug);
240
+ }
234
241
  });
235
242
  }
236
243
  /**
237
244
  * Disconnect the specified application and remove any associated data from Cobalt.
238
245
  * @param {String} slug The application slug.
239
- * @returns {Promise<void>}
246
+ * @param {AuthType} [type] The authentication type to use. If not provided, it'll remove all the connected accounts.
247
+ * @returns {Promise<unknown>}
240
248
  */
241
- disconnect(slug) {
249
+ disconnect(slug, type) {
242
250
  return __awaiter(this, void 0, void 0, function* () {
243
- const res = yield fetch(`${this.baseUrl}/api/v1/linked-acc/integration/${slug}`, {
251
+ const res = yield fetch(`${this.baseUrl}/api/v1/linked-acc/integration/${slug}${type ? `?auth_type=${type}` : ""}`, {
244
252
  method: "DELETE",
245
253
  headers: {
246
254
  authorization: `Bearer ${this.token}`,
@@ -250,6 +258,7 @@ class Cobalt {
250
258
  const error = yield res.json();
251
259
  throw error;
252
260
  }
261
+ return yield res.json();
253
262
  });
254
263
  }
255
264
  /**
@@ -356,29 +365,6 @@ class Cobalt {
356
365
  return yield res.json();
357
366
  });
358
367
  }
359
- /**
360
- * @deprecated
361
- * Create a lead for an ecosystem app.
362
- * @param {EcosystemLeadPayload} payload The payload object for the lead.
363
- * @returns {Promise<EcosystemLead>}
364
- */
365
- createEcosystemLead(payload) {
366
- return __awaiter(this, void 0, void 0, function* () {
367
- const res = yield fetch(`${this.baseUrl}/api/v1/ecosystem/leads`, {
368
- method: "POST",
369
- headers: {
370
- authorization: `Bearer ${this.token}`,
371
- "content-type": "application/json",
372
- },
373
- body: JSON.stringify(payload),
374
- });
375
- if (res.status >= 400 && res.status < 600) {
376
- const error = yield res.json();
377
- throw error;
378
- }
379
- return yield res.json();
380
- });
381
- }
382
368
  /**
383
369
  * Returns the specified field of the config.
384
370
  * @param {String} slug The application slug.
package/cobalt.ts CHANGED
@@ -139,27 +139,6 @@ export interface CobaltOptions {
139
139
  token?: string;
140
140
  }
141
141
 
142
- /**
143
- * @deprecated
144
- */
145
- export interface EcosystemLead {
146
- _id: string;
147
- name?: string;
148
- email: string;
149
- description?: string;
150
- created_at: string;
151
- }
152
-
153
- /**
154
- * @deprecated
155
- */
156
- export interface EcosystemLeadPayload {
157
- slug: string;
158
- name?: string;
159
- email: string;
160
- description?: string;
161
- }
162
-
163
142
  export interface RuleOptions {
164
143
  rule_column: {
165
144
  rhs: {
@@ -468,7 +447,7 @@ class Cobalt {
468
447
  }
469
448
 
470
449
  /**
471
- * Handle OAuth for the specified native application.
450
+ * Handle OAuth for the specified application.
472
451
  * @private
473
452
  * @param {String} slug The application slug.
474
453
  * @param {Object.<string, string>} [params] The key value pairs of auth data.
@@ -514,54 +493,69 @@ class Cobalt {
514
493
  }
515
494
 
516
495
  /**
517
- * Connect the specified application, optionally with the auth data that user provides.
496
+ * Save auth data for the specified keybased application.
518
497
  * @param {String} slug The application slug.
519
498
  * @param {Object.<string, string>} [payload] The key value pairs of auth data.
520
- * @returns {Promise<Boolean>} Whether the connection was successful.
499
+ * @returns {Promise<Boolean>} Whether the auth data was saved successfully.
521
500
  */
522
- public async connect(slug: string, payload?: Record<string, string>): Promise<boolean> {
523
- return new Promise(async (resolve, reject) => {
524
- try {
525
- const app = await this.getApp(slug);
526
-
527
- // oauth
528
- if (app && app.auth_type === AuthType.OAuth2) {
529
- const connected = await this.oauth(slug, payload);
530
- resolve(connected);
531
- // key based
532
- } else {
533
- const res = await fetch(`${this.baseUrl}/api/v2/app/${slug}/save`, {
534
- method: "POST",
535
- headers: {
536
- authorization: `Bearer ${this.token}`,
537
- "content-type": "application/json",
538
- },
539
- body: JSON.stringify({
540
- ...payload,
541
- }),
542
- });
543
-
544
- if (res.status >= 400 && res.status < 600) {
545
- const error = await res.json();
546
- reject(error);
547
- }
548
-
549
- const data = await res.json();
550
- resolve(data.success);
551
- }
552
- } catch (error) {
553
- reject(error);
554
- }
501
+ private async keybased(slug: string, payload?: Record<string, string>): Promise<boolean> {
502
+ const res = await fetch(`${this.baseUrl}/api/v2/app/${slug}/save`, {
503
+ method: "POST",
504
+ headers: {
505
+ authorization: `Bearer ${this.token}`,
506
+ "content-type": "application/json",
507
+ },
508
+ body: JSON.stringify({
509
+ ...payload,
510
+ }),
555
511
  });
512
+
513
+ if (res.status >= 400 && res.status < 600) {
514
+ const error = await res.json();
515
+ throw error;
516
+ }
517
+
518
+ const data = await res.json();
519
+ return data.success;
520
+ }
521
+
522
+ /**
523
+ * Connects the specified application using the provided authentication type and optional auth data.
524
+ * @param params - The parameters for connecting the application.
525
+ * @param params.slug - The application slug.
526
+ * @param params.type - The authentication type to use. If not provided, it defaults to `keybased` if payload is provided, otherwise `oauth2`.
527
+ * @param params.payload - key-value pairs of authentication data required for the specified auth type.
528
+ * @returns A promise that resolves to true if the connection was successful, otherwise false.
529
+ * @throws Throws an error if the authentication type is invalid or the connection fails.
530
+ */
531
+ public async connect({
532
+ slug,
533
+ type,
534
+ payload,
535
+ }: {
536
+ slug: string;
537
+ type?: AuthType;
538
+ payload?: Record<string, string>;
539
+ }): Promise<boolean> {
540
+ switch (type) {
541
+ case AuthType.OAuth2:
542
+ return this.oauth(slug, payload);
543
+ case AuthType.KeyBased:
544
+ return this.keybased(slug, payload);
545
+ default:
546
+ if (payload) return this.keybased(slug, payload);
547
+ return this.oauth(slug);
548
+ }
556
549
  }
557
550
 
558
551
  /**
559
552
  * Disconnect the specified application and remove any associated data from Cobalt.
560
553
  * @param {String} slug The application slug.
561
- * @returns {Promise<void>}
554
+ * @param {AuthType} [type] The authentication type to use. If not provided, it'll remove all the connected accounts.
555
+ * @returns {Promise<unknown>}
562
556
  */
563
- public async disconnect(slug: string): Promise<void> {
564
- const res = await fetch(`${this.baseUrl}/api/v1/linked-acc/integration/${slug}`, {
557
+ public async disconnect(slug: string, type?: AuthType): Promise<unknown> {
558
+ const res = await fetch(`${this.baseUrl}/api/v1/linked-acc/integration/${slug}${type ? `?auth_type=${type}` : ""}`, {
565
559
  method: "DELETE",
566
560
  headers: {
567
561
  authorization: `Bearer ${this.token}`,
@@ -572,6 +566,8 @@ class Cobalt {
572
566
  const error = await res.json();
573
567
  throw error;
574
568
  }
569
+
570
+ return await res.json();
575
571
  }
576
572
 
577
573
  /**
@@ -686,30 +682,6 @@ class Cobalt {
686
682
  return await res.json();
687
683
  }
688
684
 
689
- /**
690
- * @deprecated
691
- * Create a lead for an ecosystem app.
692
- * @param {EcosystemLeadPayload} payload The payload object for the lead.
693
- * @returns {Promise<EcosystemLead>}
694
- */
695
- public async createEcosystemLead(payload: EcosystemLeadPayload): Promise<EcosystemLead> {
696
- const res = await fetch(`${this.baseUrl}/api/v1/ecosystem/leads`, {
697
- method: "POST",
698
- headers: {
699
- authorization: `Bearer ${this.token}`,
700
- "content-type": "application/json",
701
- },
702
- body: JSON.stringify(payload),
703
- });
704
-
705
- if (res.status >= 400 && res.status < 600) {
706
- const error = await res.json();
707
- throw error;
708
- }
709
-
710
- return await res.json();
711
- }
712
-
713
685
  /**
714
686
  * Returns the specified field of the config.
715
687
  * @param {String} slug The application slug.
@@ -1 +1 @@
1
- window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzytWsqqurQUAmx4Kpg=="
1
+ window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzwMKVNfWAgCbHgqm"
@@ -1 +1 @@
1
- window.navigationData = "eJyVk9FKwzAUht/lXBeHA0V6J6IgDByCeCFepMmpC8uS0JzihvjuslW3FpOT7Lb/939pTpK3LyDcEtRw5xphCCrwglZQgzQiBAyz4fvFijYGKlhrq6C+nN98V8fmrfdGS0Ha2VNdW8KuFRLDbJRPNfOr65FmWOjJ77kQFU0IXmVb/ZFw7KN8+UGjUYzhkOc1S7EzTnCiXyKvenXdujXuk3H9IZzsXrqwC4SbBSb+a0L8U1XDzYAaFPoOpSBUkPJz24+B56+2Rdknb94x5QbyaH1P6eM+xZxkIRo00f4h4arLvjFasqc7Rcpl3PijZLk6lLtDgfy5N8g9/VHOaV68EoT5pxfhOG3JPLOTfP8BOa3d9A=="
1
+ window.navigationData = "eJyNk01LAzEQhv9LzsViwVJ6E1EQBEtb8SAeZndnu6FpEpoJbRH/u7v1YxvMTnKd532fXSbJ24cgPJKYi1tPzYqAvBMjYYGadoba79y4J1cN7VSLt1JXYj77HAXt9clirNvNh5t3pgBFfa9U4By68fc87F1Pgm9aq2QJJI3u61IT7msoW8MFDzWTm+m/H3i2Xc5FRUGCV+labgYcHUqXHySqijGceVqzgJMywIl+EmnVq9lva2UOjOs3wsnuj1j6wbP6o5ziUVtPwwvqMSd5ggJVtH8mXHXhi/ZCsfsII/ky7ryiyXy1y3e7DPnSK+QeywXnNC+2AsL0ZY3kOG3OPpObfP8CA8O/QA=="
@@ -1 +1 @@
1
- window.searchData = "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";
1
+ window.searchData = "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";