@nangohq/node 0.26.8 → 0.26.10

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/dist/sync.d.ts ADDED
@@ -0,0 +1,32 @@
1
+ import type { DataResponse, HubspotModels, ProxyConfiguration, SyncWebhookBody, LogLevel, UpsertResponse } from '@nangohq/shared';
2
+ export { SyncWebhookBody as NangoSyncWebhookBody, HubspotModels };
3
+ import { Nango } from './index';
4
+ interface NangoProps {
5
+ activityLogId?: number;
6
+ lastSyncDate?: Date;
7
+ syncId?: string;
8
+ nangoConnectionId?: number;
9
+ syncJobId?: number;
10
+ }
11
+ interface UserLogParameters {
12
+ success?: boolean;
13
+ level?: LogLevel;
14
+ }
15
+ export declare class NangoSync {
16
+ nango: Nango;
17
+ activityLogId?: number;
18
+ lastSyncDate?: Date;
19
+ syncId?: string;
20
+ nangoConnectionId?: number;
21
+ syncJobId?: number;
22
+ private throttledCreateActivityLogMessage;
23
+ constructor(config?: NangoProps);
24
+ setLastSyncDate(date: Date): void;
25
+ proxy(config: ProxyConfiguration): Promise<import("axios").AxiosResponse<any, any>>;
26
+ get(config: ProxyConfiguration): Promise<import("axios").AxiosResponse<any, any>>;
27
+ post(config: ProxyConfiguration): Promise<import("axios").AxiosResponse<any, any>>;
28
+ patch(config: ProxyConfiguration): Promise<import("axios").AxiosResponse<any, any>>;
29
+ delete(config: ProxyConfiguration): Promise<import("axios").AxiosResponse<any, any>>;
30
+ batchSend(results: DataResponse[], model: string): Promise<UpsertResponse | null>;
31
+ log(content: string, userDefinedLevel?: UserLogParameters): Promise<void>;
32
+ }
package/dist/sync.js ADDED
@@ -0,0 +1,97 @@
1
+ import _ from 'lodash';
2
+ import { updateSyncJobResult, createActivityLogMessage, dataService, syncDataService } from '@nangohq/shared';
3
+ import { Nango } from './index';
4
+ export class NangoSync {
5
+ nango;
6
+ activityLogId;
7
+ lastSyncDate;
8
+ syncId;
9
+ nangoConnectionId;
10
+ syncJobId;
11
+ throttledCreateActivityLogMessage;
12
+ constructor(config = {}) {
13
+ this.throttledCreateActivityLogMessage = _.throttle(createActivityLogMessage, 1000);
14
+ if (config.activityLogId) {
15
+ this.activityLogId = config.activityLogId;
16
+ }
17
+ this.nango = new Nango(config);
18
+ if (config.syncId) {
19
+ this.syncId = config.syncId;
20
+ }
21
+ if (config.nangoConnectionId) {
22
+ this.nangoConnectionId = config.nangoConnectionId;
23
+ }
24
+ if (config.syncJobId) {
25
+ this.syncJobId = config.syncJobId;
26
+ }
27
+ }
28
+ setLastSyncDate(date) {
29
+ this.lastSyncDate = date;
30
+ }
31
+ async proxy(config) {
32
+ return this.nango.proxy(config);
33
+ }
34
+ async get(config) {
35
+ return this.proxy({
36
+ ...config,
37
+ method: 'GET'
38
+ });
39
+ }
40
+ async post(config) {
41
+ return this.proxy({
42
+ ...config,
43
+ method: 'POST'
44
+ });
45
+ }
46
+ async patch(config) {
47
+ return this.proxy({
48
+ ...config,
49
+ method: 'PATCH'
50
+ });
51
+ }
52
+ async delete(config) {
53
+ return this.proxy({
54
+ ...config,
55
+ method: 'DELETE'
56
+ });
57
+ }
58
+ async batchSend(results, model) {
59
+ if (!this.nangoConnectionId || !this.syncId || !this.activityLogId || !this.syncJobId) {
60
+ throw new Error('Nango Connection Id, Sync Id, Activity Log Id and Sync Job Id are all required');
61
+ }
62
+ const formattedResults = syncDataService.formatDataRecords(results, this.nangoConnectionId, model, this.syncId);
63
+ const responseResults = await dataService.upsert(formattedResults, '_nango_sync_data_records', 'external_id', this.nangoConnectionId, model, this.activityLogId);
64
+ if (responseResults) {
65
+ const updatedResults = { added: responseResults.addedKeys.length, updated: responseResults.updatedKeys.length };
66
+ await createActivityLogMessage({
67
+ level: 'info',
68
+ activity_log_id: this.activityLogId,
69
+ content: `Batch send was a success and resulted in ${JSON.stringify(updatedResults, null, 2)}`,
70
+ timestamp: Date.now()
71
+ });
72
+ await updateSyncJobResult(this.syncJobId, updatedResults);
73
+ return responseResults;
74
+ }
75
+ else {
76
+ await createActivityLogMessage({
77
+ level: 'error',
78
+ activity_log_id: this.activityLogId,
79
+ content: `There was an issue with the batch send`,
80
+ timestamp: Date.now()
81
+ });
82
+ return null;
83
+ }
84
+ }
85
+ async log(content, userDefinedLevel) {
86
+ if (!this.activityLogId) {
87
+ throw new Error('There is no current activity log stream to log to');
88
+ }
89
+ await this.throttledCreateActivityLogMessage({
90
+ level: userDefinedLevel?.level ?? 'info',
91
+ activity_log_id: this.activityLogId,
92
+ content,
93
+ timestamp: Date.now()
94
+ });
95
+ }
96
+ }
97
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../lib/sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nangohq/node",
3
- "version": "0.26.8",
3
+ "version": "0.26.10",
4
4
  "description": "Nango's Node client.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",