airbyte-faros-destination 0.9.34 → 0.9.36
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/lib/converters/zendesk/common.d.ts +21 -1
- package/lib/converters/zendesk/common.js +23 -1
- package/lib/converters/zendesk/common.js.map +1 -1
- package/lib/converters/zendesk/groups.d.ts +7 -0
- package/lib/converters/zendesk/groups.js +26 -0
- package/lib/converters/zendesk/groups.js.map +1 -0
- package/lib/converters/zendesk/satisfaction_ratings.d.ts +3 -2
- package/lib/converters/zendesk/satisfaction_ratings.js +25 -6
- package/lib/converters/zendesk/satisfaction_ratings.js.map +1 -1
- package/lib/converters/zendesk/tickets.js +5 -6
- package/lib/converters/zendesk/tickets.js.map +1 -1
- package/lib/destination-logger.js +21 -5
- package/lib/destination-logger.js.map +1 -1
- package/lib/destination.js +42 -30
- package/lib/destination.js.map +1 -1
- package/lib/sync.js +9 -3
- package/lib/sync.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/resources/source-specific-configs/agileaccelerator.json +0 -1
- package/resources/source-specific-configs/asana.json +0 -1
- package/resources/source-specific-configs/aws-cloudwatch-metrics.json +0 -1
- package/resources/source-specific-configs/azurepipeline.json +0 -1
- package/resources/source-specific-configs/backlog.json +0 -1
- package/resources/source-specific-configs/bamboohr.json +0 -1
- package/resources/source-specific-configs/bitbucket.json +0 -1
- package/resources/source-specific-configs/circleci.json +0 -1
- package/resources/source-specific-configs/clickup.json +0 -1
- package/resources/source-specific-configs/datadog.json +0 -1
- package/resources/source-specific-configs/docker.json +0 -1
- package/resources/source-specific-configs/firehydrant.json +0 -1
- package/resources/source-specific-configs/jenkins.json +0 -1
- package/resources/source-specific-configs/jira.json +0 -1
- package/resources/source-specific-configs/notion.json +0 -1
- package/resources/source-specific-configs/octopus.json +0 -1
- package/resources/source-specific-configs/opsgenie.json +0 -1
- package/resources/source-specific-configs/pagerduty.json +0 -1
- package/resources/source-specific-configs/phabricator.json +0 -1
- package/resources/source-specific-configs/servicenow.json +0 -1
- package/resources/source-specific-configs/squadcast.json +0 -1
- package/resources/source-specific-configs/statuspage.json +0 -1
- package/resources/source-specific-configs/surveys.json +3 -4
- package/resources/source-specific-configs/trello.json +1 -2
- package/resources/source-specific-configs/victorops.json +0 -1
- package/resources/source-specific-configs/workday.json +1 -2
- package/resources/source-specific-configs/zendesk.json +47 -30
|
@@ -1,10 +1,30 @@
|
|
|
1
1
|
import { AirbyteRecord } from 'faros-airbyte-cdk';
|
|
2
|
-
import {
|
|
2
|
+
import { Dictionary } from 'ts-essentials';
|
|
3
|
+
import { Converter, StreamContext, StreamName } from '../converter';
|
|
4
|
+
type TeamMapping = Dictionary<string>;
|
|
5
|
+
export interface ZendeskConfig {
|
|
6
|
+
additional_fields_array_limit: number;
|
|
7
|
+
customStatuses: any;
|
|
8
|
+
fieldIdsByName: Map<string, Set<number>>;
|
|
9
|
+
sync_groups?: boolean;
|
|
10
|
+
team_mapping?: TeamMapping;
|
|
11
|
+
ticket_additional_fields?: ReadonlyArray<string>;
|
|
12
|
+
}
|
|
13
|
+
interface OrgTeam {
|
|
14
|
+
uid: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}
|
|
3
18
|
export declare const TicketMetricsStream: StreamName;
|
|
4
19
|
export declare const TicketFieldsStream: StreamName;
|
|
20
|
+
export declare const GroupsStream: StreamName;
|
|
5
21
|
export declare abstract class ZendeskConverter extends Converter {
|
|
6
22
|
readonly projectUid = "zendesk_tickets";
|
|
7
23
|
readonly projectName = "Zendesk Tickets";
|
|
8
24
|
source: string;
|
|
9
25
|
id(record: AirbyteRecord): any;
|
|
26
|
+
protected zendeskConfig(ctx: StreamContext): ZendeskConfig;
|
|
27
|
+
protected teamMapping(ctx: StreamContext): TeamMapping;
|
|
28
|
+
protected orgTeam(ctx: StreamContext, group: Dictionary<any>): OrgTeam;
|
|
10
29
|
}
|
|
30
|
+
export {};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ZendeskConverter = exports.TicketFieldsStream = exports.TicketMetricsStream = void 0;
|
|
3
|
+
exports.ZendeskConverter = exports.GroupsStream = exports.TicketFieldsStream = exports.TicketMetricsStream = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
4
5
|
const converter_1 = require("../converter");
|
|
5
6
|
exports.TicketMetricsStream = new converter_1.StreamName('zendesk', 'ticket_metrics');
|
|
6
7
|
exports.TicketFieldsStream = new converter_1.StreamName('zendesk', 'ticket_fields');
|
|
8
|
+
exports.GroupsStream = new converter_1.StreamName('zendesk', 'groups');
|
|
7
9
|
class ZendeskConverter extends converter_1.Converter {
|
|
8
10
|
constructor() {
|
|
9
11
|
super(...arguments);
|
|
@@ -15,6 +17,26 @@ class ZendeskConverter extends converter_1.Converter {
|
|
|
15
17
|
var _a, _b;
|
|
16
18
|
return (_b = (_a = record === null || record === void 0 ? void 0 : record.record) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.id;
|
|
17
19
|
}
|
|
20
|
+
zendeskConfig(ctx) {
|
|
21
|
+
var _a, _b, _c;
|
|
22
|
+
return (_c = (_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.config) === null || _a === void 0 ? void 0 : _a.source_specific_configs) === null || _b === void 0 ? void 0 : _b.zendesk) !== null && _c !== void 0 ? _c : {};
|
|
23
|
+
}
|
|
24
|
+
teamMapping(ctx) {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
return ((_b = (0, converter_1.parseObjectConfig)((_a = this.zendeskConfig(ctx)) === null || _a === void 0 ? void 0 : _a.team_mapping, 'Team Mapping')) !== null && _b !== void 0 ? _b : {});
|
|
27
|
+
}
|
|
28
|
+
orgTeam(ctx, group) {
|
|
29
|
+
const teamMapping = this.teamMapping(ctx);
|
|
30
|
+
const mappedTeam = teamMapping[(0, lodash_1.trim)(group.name)] || teamMapping['*'];
|
|
31
|
+
if (mappedTeam) {
|
|
32
|
+
return { uid: mappedTeam };
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
uid: (0, lodash_1.trim)(group.name),
|
|
36
|
+
name: group.name,
|
|
37
|
+
description: group.description,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
18
40
|
}
|
|
19
41
|
exports.ZendeskConverter = ZendeskConverter;
|
|
20
42
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/converters/zendesk/common.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/converters/zendesk/common.ts"],"names":[],"mappings":";;;AACA,mCAA4B;AAG5B,4CAKsB;AAmBT,QAAA,mBAAmB,GAAG,IAAI,sBAAU,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AAClE,QAAA,kBAAkB,GAAG,IAAI,sBAAU,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAChE,QAAA,YAAY,GAAG,IAAI,sBAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEhE,MAAsB,gBAAiB,SAAQ,qBAAS;IAAxD;;QACW,eAAU,GAAG,iBAAiB,CAAC;QAC/B,gBAAW,GAAG,iBAAiB,CAAC;QACzC,WAAM,GAAG,SAAS,CAAC;IA+BrB,CAAC;IA7BC,EAAE,CAAC,MAAqB;;QACtB,OAAO,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,IAAI,0CAAE,EAAE,CAAC;IAClC,CAAC;IAES,aAAa,CAAC,GAAkB;;QACxC,OAAO,MAAA,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,0CAAE,uBAAuB,0CAAE,OAAO,mCAAI,EAAE,CAAC;IAC7D,CAAC;IAES,WAAW,CAAC,GAAkB;;QACtC,OAAO,CACL,MAAA,IAAA,6BAAiB,EACf,MAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,0CAAE,YAAY,EACrC,cAAc,CACf,mCAAI,EAAE,CACR,CAAC;IACJ,CAAC;IAES,OAAO,CAAC,GAAkB,EAAE,KAAsB;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAA,aAAI,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAC,GAAG,EAAE,UAAU,EAAC,CAAC;QAC3B,CAAC;QACD,OAAO;YACL,GAAG,EAAE,IAAA,aAAI,EAAC,KAAK,CAAC,IAAI,CAAC;YACrB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;SAC/B,CAAC;IACJ,CAAC;CACF;AAlCD,4CAkCC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AirbyteRecord } from 'faros-airbyte-cdk';
|
|
2
|
+
import { DestinationModel, DestinationRecord, StreamContext } from '../converter';
|
|
3
|
+
import { ZendeskConverter } from './common';
|
|
4
|
+
export declare class Groups extends ZendeskConverter {
|
|
5
|
+
readonly destinationModels: ReadonlyArray<DestinationModel>;
|
|
6
|
+
convert(record: AirbyteRecord, ctx: StreamContext): Promise<ReadonlyArray<DestinationRecord>>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Groups = void 0;
|
|
4
|
+
const common_1 = require("./common");
|
|
5
|
+
class Groups extends common_1.ZendeskConverter {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.destinationModels = ['org_Team'];
|
|
9
|
+
}
|
|
10
|
+
async convert(record, ctx) {
|
|
11
|
+
var _a;
|
|
12
|
+
if (!((_a = this.zendeskConfig(ctx)) === null || _a === void 0 ? void 0 : _a.sync_groups)) {
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
const group = record.record.data;
|
|
16
|
+
const orgTeam = this.orgTeam(ctx, group);
|
|
17
|
+
return [
|
|
18
|
+
{
|
|
19
|
+
model: 'org_Team',
|
|
20
|
+
record: { ...orgTeam },
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.Groups = Groups;
|
|
26
|
+
//# sourceMappingURL=groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../src/converters/zendesk/groups.ts"],"names":[],"mappings":";;;AAGA,qCAA0C;AAE1C,MAAa,MAAO,SAAQ,yBAAgB;IAA5C;;QACW,sBAAiB,GAAoC,CAAC,UAAU,CAAC,CAAC;IAmB7E,CAAC;IAjBC,KAAK,CAAC,OAAO,CACX,MAAqB,EACrB,GAAkB;;QAElB,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,0CAAE,WAAW,CAAA,EAAE,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO;YACL;gBACE,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,EAAC,GAAG,OAAO,EAAC;aACrB;SACF,CAAC;IACJ,CAAC;CACF;AApBD,wBAoBC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { AirbyteRecord } from 'faros-airbyte-cdk';
|
|
2
|
-
import { DestinationModel, DestinationRecord } from '../converter';
|
|
2
|
+
import { DestinationModel, DestinationRecord, StreamContext, StreamName } from '../converter';
|
|
3
3
|
import { ZendeskConverter } from './common';
|
|
4
4
|
export declare class SatisfactionRatings extends ZendeskConverter {
|
|
5
5
|
private readonly definitionUid;
|
|
6
6
|
private createDefinition;
|
|
7
|
+
get dependencies(): ReadonlyArray<StreamName>;
|
|
7
8
|
readonly destinationModels: ReadonlyArray<DestinationModel>;
|
|
8
|
-
convert(record: AirbyteRecord): Promise<ReadonlyArray<DestinationRecord>>;
|
|
9
|
+
convert(record: AirbyteRecord, ctx: StreamContext): Promise<ReadonlyArray<DestinationRecord>>;
|
|
9
10
|
}
|
|
@@ -11,9 +11,14 @@ class SatisfactionRatings extends common_1.ZendeskConverter {
|
|
|
11
11
|
this.destinationModels = [
|
|
12
12
|
'faros_MetricDefinition',
|
|
13
13
|
'faros_MetricValue',
|
|
14
|
+
'org_TeamMetric',
|
|
14
15
|
];
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
+
get dependencies() {
|
|
18
|
+
return [common_1.GroupsStream];
|
|
19
|
+
}
|
|
20
|
+
async convert(record, ctx) {
|
|
21
|
+
var _a, _b;
|
|
17
22
|
const recs = [];
|
|
18
23
|
const definitionKey = { uid: this.definitionUid };
|
|
19
24
|
if (this.createDefinition) {
|
|
@@ -23,23 +28,37 @@ class SatisfactionRatings extends common_1.ZendeskConverter {
|
|
|
23
28
|
record: {
|
|
24
29
|
...definitionKey,
|
|
25
30
|
name: 'Zendesk Satisfaction Ratings',
|
|
26
|
-
valueType: 'String',
|
|
27
|
-
|
|
31
|
+
valueType: { category: 'String' },
|
|
32
|
+
valueSource: { category: 'MetricValueEntries' },
|
|
28
33
|
},
|
|
29
34
|
});
|
|
30
35
|
this.createDefinition = false;
|
|
31
36
|
}
|
|
32
37
|
const rating = record.record.data;
|
|
33
|
-
const
|
|
38
|
+
const metricValueKey = {
|
|
39
|
+
uid: `zendesk-satisfaction-rating-${rating.id}`,
|
|
40
|
+
definition: definitionKey,
|
|
41
|
+
};
|
|
34
42
|
recs.push({
|
|
35
43
|
model: 'faros_MetricValue',
|
|
36
44
|
record: {
|
|
37
|
-
|
|
45
|
+
...metricValueKey,
|
|
38
46
|
value: rating.score,
|
|
39
47
|
computedAt: faros_js_client_1.Utils.toDate(rating.updated_at),
|
|
40
|
-
definition: definitionKey,
|
|
41
48
|
},
|
|
42
49
|
});
|
|
50
|
+
// Assign metric value to team
|
|
51
|
+
const group = (_b = (_a = ctx.get(common_1.GroupsStream.asString, rating.group_id)) === null || _a === void 0 ? void 0 : _a.record) === null || _b === void 0 ? void 0 : _b.data;
|
|
52
|
+
if (group) {
|
|
53
|
+
const team = this.orgTeam(ctx, group);
|
|
54
|
+
recs.push({
|
|
55
|
+
model: 'org_TeamMetric',
|
|
56
|
+
record: {
|
|
57
|
+
team: { uid: team.uid },
|
|
58
|
+
value: { ...metricValueKey },
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
43
62
|
return recs;
|
|
44
63
|
}
|
|
45
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"satisfaction_ratings.js","sourceRoot":"","sources":["../../../src/converters/zendesk/satisfaction_ratings.ts"],"names":[],"mappings":";;;AACA,qDAAsC;
|
|
1
|
+
{"version":3,"file":"satisfaction_ratings.js","sourceRoot":"","sources":["../../../src/converters/zendesk/satisfaction_ratings.ts"],"names":[],"mappings":";;;AACA,qDAAsC;AAQtC,qCAAwD;AAExD,MAAa,mBAAoB,SAAQ,yBAAgB;IAAzD;;QACmB,kBAAa,GAAG,8BAA8B,CAAC;QACxD,qBAAgB,GAAG,IAAI,CAAC;QAMvB,sBAAiB,GAAoC;YAC5D,wBAAwB;YACxB,mBAAmB;YACnB,gBAAgB;SACjB,CAAC;IAqDJ,CAAC;IA7DC,IAAa,YAAY;QACvB,OAAO,CAAC,qBAAY,CAAC,CAAC;IACxB,CAAC;IAQD,KAAK,CAAC,OAAO,CACX,MAAqB,EACrB,GAAkB;;QAElB,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,MAAM,aAAa,GAAG,EAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAC,CAAC;QAEhD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,+BAA+B;YAC/B,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,wBAAwB;gBAC/B,MAAM,EAAE;oBACN,GAAG,aAAa;oBAChB,IAAI,EAAE,8BAA8B;oBACpC,SAAS,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC;oBAC/B,WAAW,EAAE,EAAC,QAAQ,EAAE,oBAAoB,EAAC;iBAC9C;aACF,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAChC,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,cAAc,GAAG;YACrB,GAAG,EAAE,+BAA+B,MAAM,CAAC,EAAE,EAAE;YAC/C,UAAU,EAAE,aAAa;SAC1B,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC;YACR,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE;gBACN,GAAG,cAAc;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;aAC5C;SACF,CAAC,CAAC;QAEH,8BAA8B;QAC9B,MAAM,KAAK,GAAG,MAAA,MAAA,GAAG,CAAC,GAAG,CAAC,qBAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,0CAAE,MAAM,0CAAE,IAAI,CAAC;QAC5E,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,gBAAgB;gBACvB,MAAM,EAAE;oBACN,IAAI,EAAE,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC;oBACrB,KAAK,EAAE,EAAC,GAAG,cAAc,EAAC;iBAC3B;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAjED,kDAiEC"}
|
|
@@ -23,24 +23,23 @@ class Tickets extends common_1.ZendeskConverter {
|
|
|
23
23
|
];
|
|
24
24
|
}
|
|
25
25
|
initialize(ctx) {
|
|
26
|
-
var _a, _b, _c, _d, _e
|
|
26
|
+
var _a, _b, _c, _d, _e;
|
|
27
27
|
if (this.config)
|
|
28
28
|
return;
|
|
29
|
-
this.config =
|
|
30
|
-
(_c = (_a = this.config) !== null && _a !== void 0 ? _a : (_b = ctx === null || ctx === void 0 ? void 0 : ctx.config.source_specific_configs) === null || _b === void 0 ? void 0 : _b.zendesk) !== null && _c !== void 0 ? _c : {};
|
|
29
|
+
this.config = (_a = this.config) !== null && _a !== void 0 ? _a : this.zendeskConfig(ctx);
|
|
31
30
|
// Create mapping of field Ids to field names once and store the custom_statuses
|
|
32
31
|
// so we do not keep querying for them from StreamContext
|
|
33
32
|
this.config.fieldIdsByName = new Map();
|
|
34
33
|
const ticketFields = ctx.getAll(common_1.TicketFieldsStream.asString);
|
|
35
34
|
for (const field of Object.values(ticketFields)) {
|
|
36
|
-
const fieldName = (
|
|
35
|
+
const fieldName = (_c = (_b = field.record) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.title;
|
|
37
36
|
if (!fieldName)
|
|
38
37
|
continue;
|
|
39
38
|
if (!this.config.fieldIdsByName.has(fieldName)) {
|
|
40
39
|
this.config.fieldIdsByName.set(fieldName, new Set());
|
|
41
40
|
}
|
|
42
|
-
(
|
|
43
|
-
if (((
|
|
41
|
+
(_d = this.config.fieldIdsByName.get(fieldName)) === null || _d === void 0 ? void 0 : _d.add(field.record.data.id);
|
|
42
|
+
if (((_e = field.record.data) === null || _e === void 0 ? void 0 : _e.type) === 'custom_status') {
|
|
44
43
|
this.config.customStatuses = field.record.data.custom_statuses;
|
|
45
44
|
}
|
|
46
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tickets.js","sourceRoot":"","sources":["../../../src/converters/zendesk/tickets.ts"],"names":[],"mappings":";;;AACA,qDAAsC;AACtC,mCAAgD;AAQhD,
|
|
1
|
+
{"version":3,"file":"tickets.js","sourceRoot":"","sources":["../../../src/converters/zendesk/tickets.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,14 @@ class LogFiles {
|
|
|
18
18
|
const logDir = os_1.default.tmpdir();
|
|
19
19
|
this.srcPath = `${logDir}/src.log`;
|
|
20
20
|
this.dstPath = `${logDir}/dst.log`;
|
|
21
|
-
this.srcStream = fs_1.default.createWriteStream(this.srcPath, {
|
|
22
|
-
|
|
21
|
+
this.srcStream = fs_1.default.createWriteStream(this.srcPath, {
|
|
22
|
+
flags: 'a',
|
|
23
|
+
encoding: 'utf-8',
|
|
24
|
+
});
|
|
25
|
+
this.dstStream = fs_1.default.createWriteStream(this.dstPath, {
|
|
26
|
+
flags: 'a',
|
|
27
|
+
encoding: 'utf-8',
|
|
28
|
+
});
|
|
23
29
|
}
|
|
24
30
|
writeSourceLogs(...logs) {
|
|
25
31
|
this.srcWriteQueue.add(() => this.writeLogs(this.srcStream, logs));
|
|
@@ -68,8 +74,8 @@ class LogFiles {
|
|
|
68
74
|
const dstLogs = [];
|
|
69
75
|
logger === null || logger === void 0 ? void 0 : logger.debug('Gathering sync logs for uploading to Faros');
|
|
70
76
|
await Promise.all([
|
|
71
|
-
readFile(this.srcPath, (line) =>
|
|
72
|
-
readFile(this.dstPath, (line) =>
|
|
77
|
+
readFile(this.srcPath, (line) => processLogLineFromFile(line, srcLogs, logger)),
|
|
78
|
+
readFile(this.dstPath, (line) => processLogLineFromFile(line, dstLogs, logger)),
|
|
73
79
|
]);
|
|
74
80
|
const allLogs = srcLogs.concat(dstLogs);
|
|
75
81
|
allLogs.sort((a, b) => a.timestamp - b.timestamp);
|
|
@@ -85,9 +91,19 @@ class LogFiles {
|
|
|
85
91
|
}
|
|
86
92
|
}
|
|
87
93
|
exports.LogFiles = LogFiles;
|
|
94
|
+
function processLogLineFromFile(line, logArray, logger) {
|
|
95
|
+
try {
|
|
96
|
+
const log = JSON.parse(line);
|
|
97
|
+
logArray.push(log);
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
logger === null || logger === void 0 ? void 0 : logger.warn(`Failed to parse log line: ${line}. Error: ${JSON.stringify(err)}`);
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
88
104
|
async function readFile(filePath, processLine) {
|
|
89
105
|
return new Promise((resolve, reject) => {
|
|
90
|
-
const fileStream = fs_1.default.createReadStream(filePath);
|
|
106
|
+
const fileStream = fs_1.default.createReadStream(filePath, 'utf-8');
|
|
91
107
|
const rl = readline_1.default.createInterface({
|
|
92
108
|
input: fileStream,
|
|
93
109
|
crlfDelay: Infinity,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"destination-logger.js","sourceRoot":"","sources":["../src/destination-logger.ts"],"names":[],"mappings":";;;;;;AAAA,+DAAsC;AACtC,oDAA4B;AAC5B,yDAS2B;AAC3B,4CAAoB;AACpB,4CAAoB;AACpB,wDAAgC;AAEhC,MAAa,QAAQ;IAUnB,YAA6B,MAA8B;QAA9B,WAAM,GAAN,MAAM,CAAwB;QAH1C,kBAAa,GAAW,IAAI,iBAAM,CAAC,EAAC,WAAW,EAAE,CAAC,EAAC,CAAC,CAAC;QACrD,kBAAa,GAAW,IAAI,iBAAM,CAAC,EAAC,WAAW,EAAE,CAAC,EAAC,CAAC,CAAC;QAGpE,MAAM,MAAM,GAAG,YAAE,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,MAAM,UAAU,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,GAAG,MAAM,UAAU,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,YAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"destination-logger.js","sourceRoot":"","sources":["../src/destination-logger.ts"],"names":[],"mappings":"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"}
|
package/lib/destination.js
CHANGED
|
@@ -318,7 +318,7 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
318
318
|
return origin;
|
|
319
319
|
}
|
|
320
320
|
async *write(config, redactedConfig, catalog, stdin, dryRun) {
|
|
321
|
-
var _a, _b;
|
|
321
|
+
var _a, _b, _c;
|
|
322
322
|
const startedAt = new Date();
|
|
323
323
|
const origin = this.getOrigin(config, catalog);
|
|
324
324
|
const accountId = config.faros_source_id || origin;
|
|
@@ -349,12 +349,13 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
349
349
|
}
|
|
350
350
|
let latestStateMessage = undefined;
|
|
351
351
|
const stats = new write_stats_1.WriteStats();
|
|
352
|
+
const syncErrors = { fatal: [], nonFatal: [], warnings: [] };
|
|
352
353
|
// Avoid creating a new revision and writer when dry run or community edition is enabled
|
|
353
354
|
try {
|
|
354
355
|
const streamContext = new converter_1.StreamContext(this.logger, config, streamsSyncMode, this.farosGraph, origin, this.edition === types_1.Edition.COMMUNITY ? undefined : this.getFarosClient());
|
|
355
356
|
if (dryRunEnabled) {
|
|
356
357
|
this.logger.info("Dry run is ENABLED. Won't write any records");
|
|
357
|
-
for await (const stateMessage of this.writeEntries(config, streamContext, stdin, streams, converterDependencies, stats)) {
|
|
358
|
+
for await (const stateMessage of this.writeEntries(config, streamContext, stdin, streams, converterDependencies, stats, syncErrors)) {
|
|
358
359
|
latestStateMessage = stateMessage;
|
|
359
360
|
}
|
|
360
361
|
}
|
|
@@ -385,17 +386,38 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
385
386
|
},
|
|
386
387
|
}
|
|
387
388
|
: { getOrigin: () => origin }, stats, this);
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
389
|
+
try {
|
|
390
|
+
for await (const stateMessage of this.writeEntries(config, streamContext, stdin, streams, converterDependencies, stats, syncErrors, writer, logFiles, async () => await graphQLClient.resetData(origin, Array.from(streamContext.resetModels), this.edition === types_1.Edition.COMMUNITY), async (msg) => {
|
|
391
|
+
if (account === null || account === void 0 ? void 0 : account.local) {
|
|
392
|
+
await this.getFarosClient().updateLocalAccount(accountId, this.farosGraph, { ...redactedConfig, ...msg.redactedConfig }, msg.sourceType, msg.sourceMode);
|
|
393
|
+
}
|
|
394
|
+
})) {
|
|
395
|
+
await graphQLClient.flush();
|
|
396
|
+
yield stateMessage;
|
|
391
397
|
}
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
|
|
398
|
+
}
|
|
399
|
+
catch (error) {
|
|
400
|
+
const wrappedError = (0, faros_airbyte_cdk_1.wrapApiError)(error);
|
|
401
|
+
this.logger.error(`Encountered an error while writing records to Faros: ${wrappedError} - ${JSON.stringify(wrappedError)}`, wrappedError.stack);
|
|
402
|
+
const destinationError = {
|
|
403
|
+
summary: (_c = wrappedError.message) !== null && _c !== void 0 ? _c : JSON.stringify(wrappedError),
|
|
404
|
+
code: 0, // placeholder
|
|
405
|
+
action: 'Contact Faros Support', // placeholder
|
|
406
|
+
type: 'ERROR',
|
|
407
|
+
};
|
|
408
|
+
syncErrors.fatal.push(destinationError);
|
|
409
|
+
throw error;
|
|
410
|
+
}
|
|
411
|
+
finally {
|
|
412
|
+
if (sync === null || sync === void 0 ? void 0 : sync.syncId) {
|
|
413
|
+
await this.getFarosClient().updateAccountSync(accountId, sync.syncId, {
|
|
414
|
+
endedAt: new Date(),
|
|
415
|
+
status: syncErrors.fatal.length ? 'error' : 'success',
|
|
416
|
+
metrics: stats.asObject(),
|
|
417
|
+
errors: syncErrors.fatal.concat(syncErrors.nonFatal),
|
|
418
|
+
warnings: syncErrors.warnings,
|
|
419
|
+
});
|
|
395
420
|
}
|
|
396
|
-
})) {
|
|
397
|
-
await graphQLClient.flush();
|
|
398
|
-
yield stateMessage;
|
|
399
421
|
}
|
|
400
422
|
}
|
|
401
423
|
else {
|
|
@@ -424,7 +446,7 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
424
446
|
: 'not synced yet';
|
|
425
447
|
this.logger.info(`Destination graph ${this.farosGraph} was ${lastSynced}`);
|
|
426
448
|
// Process input and write entries
|
|
427
|
-
for await (const stateMessage of this.writeEntries(config, streamContext, stdin, streams, converterDependencies, stats, writer)) {
|
|
449
|
+
for await (const stateMessage of this.writeEntries(config, streamContext, stdin, streams, converterDependencies, stats, syncErrors, writer)) {
|
|
428
450
|
latestStateMessage = stateMessage;
|
|
429
451
|
}
|
|
430
452
|
// Return the current time
|
|
@@ -462,12 +484,14 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
462
484
|
if ((account === null || account === void 0 ? void 0 : account.local) && (sync === null || sync === void 0 ? void 0 : sync.syncId) && logs) {
|
|
463
485
|
const client = this.getFarosClient();
|
|
464
486
|
const url = await client.getAccountSyncLogFileUrl(accountId, sync.syncId, logs.hash);
|
|
465
|
-
|
|
487
|
+
if (url) {
|
|
488
|
+
await client.uploadLogs(url, logs.content, logs.hash);
|
|
489
|
+
}
|
|
466
490
|
}
|
|
467
491
|
}
|
|
468
492
|
}
|
|
469
493
|
}
|
|
470
|
-
async *writeEntries(config, ctx, stdin, streams, converterDependencies, stats, writer, logFiles, resetData,
|
|
494
|
+
async *writeEntries(config, ctx, stdin, streams, converterDependencies, stats, syncErrors, writer, logFiles, resetData, updateLocalAccount) {
|
|
471
495
|
const recordsToBeProcessedLast = [];
|
|
472
496
|
const convertersUsed = new Map();
|
|
473
497
|
// NOTE: readline.createInterface() will start to consume the input stream once invoked.
|
|
@@ -478,11 +502,6 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
478
502
|
terminal: stdin.isTTY,
|
|
479
503
|
});
|
|
480
504
|
try {
|
|
481
|
-
const sourceErrors = {
|
|
482
|
-
fatal: [],
|
|
483
|
-
nonFatal: [],
|
|
484
|
-
};
|
|
485
|
-
const sourceWarnings = [];
|
|
486
505
|
let sourceSucceeded = false;
|
|
487
506
|
const processedStreams = new Set();
|
|
488
507
|
// Process input & write records
|
|
@@ -501,13 +520,13 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
501
520
|
const syncMessage = getSyncMessage(msg.sourceStatus);
|
|
502
521
|
if (syncMessage) {
|
|
503
522
|
if (status === 'ERRORED') {
|
|
504
|
-
|
|
523
|
+
syncErrors.fatal.push(syncMessage);
|
|
505
524
|
}
|
|
506
525
|
else if (syncMessage.type === 'ERROR') {
|
|
507
|
-
|
|
526
|
+
syncErrors.nonFatal.push(syncMessage);
|
|
508
527
|
}
|
|
509
528
|
else {
|
|
510
|
-
|
|
529
|
+
syncErrors.warnings.push(syncMessage);
|
|
511
530
|
}
|
|
512
531
|
}
|
|
513
532
|
}
|
|
@@ -602,7 +621,7 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
602
621
|
Object.values(streams)
|
|
603
622
|
.map((s) => s.destination_sync_mode)
|
|
604
623
|
.every((m) => m === faros_airbyte_cdk_1.DestinationSyncMode.OVERWRITE);
|
|
605
|
-
const allSourceErrors =
|
|
624
|
+
const allSourceErrors = syncErrors.fatal.concat(syncErrors.nonFatal);
|
|
606
625
|
if (allSourceErrors.length) {
|
|
607
626
|
const errorSummary = allSourceErrors.map((e) => e.summary).join('; ');
|
|
608
627
|
this.logger.error('Skipping reset of non-incremental models due to' +
|
|
@@ -618,13 +637,6 @@ class FarosDestination extends faros_airbyte_cdk_1.AirbyteDestination {
|
|
|
618
637
|
}
|
|
619
638
|
// Don't forget to close the writer
|
|
620
639
|
await (writer === null || writer === void 0 ? void 0 : writer.end());
|
|
621
|
-
await (completeSync === null || completeSync === void 0 ? void 0 : completeSync({
|
|
622
|
-
endedAt: new Date(),
|
|
623
|
-
status: sourceErrors.fatal.length ? 'error' : 'success',
|
|
624
|
-
metrics: stats.asObject(),
|
|
625
|
-
errors: allSourceErrors,
|
|
626
|
-
warnings: sourceWarnings,
|
|
627
|
-
}));
|
|
628
640
|
}
|
|
629
641
|
finally {
|
|
630
642
|
input.close();
|