@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 +21 -32
- package/cobalt.js +46 -60
- package/cobalt.ts +56 -84
- package/docs/assets/hierarchy.js +1 -1
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/classes/Cobalt.html +28 -27
- package/docs/enums/AuthStatus.html +3 -0
- package/docs/enums/AuthType.html +4 -0
- package/docs/interfaces/Application.html +28 -16
- package/docs/interfaces/CobaltOptions.html +3 -3
- package/docs/interfaces/Config.html +2 -2
- package/docs/interfaces/ConfigField.html +4 -4
- package/docs/interfaces/ConfigPayload.html +4 -4
- package/docs/interfaces/ConfigWorkflow.html +2 -2
- package/docs/interfaces/Execution.html +4 -2
- package/docs/interfaces/InputField.html +9 -9
- package/docs/interfaces/Label.html +3 -3
- package/docs/interfaces/PublicWorkflow.html +8 -8
- package/docs/interfaces/PublicWorkflowPayload.html +4 -4
- package/docs/interfaces/PublicWorkflowsPayload.html +2 -2
- package/docs/interfaces/RuleOptions.html +2 -2
- package/docs/interfaces/UpdateConfigPayload.html +5 -5
- package/docs/interfaces/WorkflowPayload.html +4 -4
- package/docs/llms.txt +193 -207
- package/docs/modules.html +1 -1
- package/package.json +1 -1
- package/docs/interfaces/EcosystemLead.html +0 -6
- package/docs/interfaces/EcosystemLeadPayload.html +0 -5
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
|
|
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
|
-
*
|
|
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
|
|
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
|
|
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
|
-
* @
|
|
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<
|
|
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
|
|
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
|
-
*
|
|
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
|
|
200
|
+
* @returns {Promise<Boolean>} Whether the auth data was saved successfully.
|
|
201
201
|
*/
|
|
202
|
-
|
|
202
|
+
keybased(slug, payload) {
|
|
203
203
|
return __awaiter(this, void 0, void 0, function* () {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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
|
-
* @
|
|
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
|
|
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
|
-
*
|
|
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
|
|
499
|
+
* @returns {Promise<Boolean>} Whether the auth data was saved successfully.
|
|
521
500
|
*/
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
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
|
-
* @
|
|
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<
|
|
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.
|
package/docs/assets/hierarchy.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.hierarchyData = "
|
|
1
|
+
window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzwMKVNfWAgCbHgqm"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "
|
|
1
|
+
window.navigationData = "eJyNk01LAzEQhv9LzsViwVJ6E1EQBEtb8SAeZndnu6FpEpoJbRH/u7v1YxvMTnKd532fXSbJ24cgPJKYi1tPzYqAvBMjYYGadoba79y4J1cN7VSLt1JXYj77HAXt9clirNvNh5t3pgBFfa9U4By68fc87F1Pgm9aq2QJJI3u61IT7msoW8MFDzWTm+m/H3i2Xc5FRUGCV+labgYcHUqXHySqijGceVqzgJMywIl+EmnVq9lva2UOjOs3wsnuj1j6wbP6o5ziUVtPwwvqMSd5ggJVtH8mXHXhi/ZCsfsII/ky7ryiyXy1y3e7DPnSK+QeywXnNC+2AsL0ZY3kOG3OPpObfP8CA8O/QA=="
|
package/docs/assets/search.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.searchData = "
|
|
1
|
+
window.searchData = "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";
|