@replyio/n8n-nodes-reply 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.
- package/README.md +46 -0
- package/dist/credentials/ReplyApi.credentials.d.ts +20 -0
- package/dist/credentials/ReplyApi.credentials.js +36 -0
- package/dist/credentials/ReplyApi.credentials.js.map +1 -0
- package/dist/icons/reply.dark.svg +58 -0
- package/dist/icons/reply.svg +1 -0
- package/dist/nodes/Reply/Reply.node.d.ts +5 -0
- package/dist/nodes/Reply/Reply.node.js +64 -0
- package/dist/nodes/Reply/Reply.node.js.map +1 -0
- package/dist/nodes/Reply/Reply.node.json +19 -0
- package/dist/nodes/Reply/ReplyTrigger.node.d.ts +12 -0
- package/dist/nodes/Reply/ReplyTrigger.node.js +308 -0
- package/dist/nodes/Reply/ReplyTrigger.node.js.map +1 -0
- package/dist/nodes/Reply/actions/contact/create.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contact/create.operation.js +29 -0
- package/dist/nodes/Reply/actions/contact/create.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contact/delete.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contact/delete.operation.js +26 -0
- package/dist/nodes/Reply/actions/contact/delete.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contact/getAll.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contact/getAll.operation.js +15 -0
- package/dist/nodes/Reply/actions/contact/getAll.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contact/getByEmail.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contact/getByEmail.operation.js +23 -0
- package/dist/nodes/Reply/actions/contact/getByEmail.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contact/getById.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contact/getById.operation.js +20 -0
- package/dist/nodes/Reply/actions/contact/getById.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contact/index.d.ts +16 -0
- package/dist/nodes/Reply/actions/contact/index.js +429 -0
- package/dist/nodes/Reply/actions/contact/index.js.map +1 -0
- package/dist/nodes/Reply/actions/contact/update.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contact/update.operation.js +54 -0
- package/dist/nodes/Reply/actions/contact/update.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/index.d.ts +24 -0
- package/dist/nodes/Reply/actions/contactStatus/index.js +191 -0
- package/dist/nodes/Reply/actions/contactStatus/index.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsActive.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsActive.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsActive.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsBounced.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsBounced.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsBounced.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsCalled.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsCalled.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsCalled.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsFinished.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsFinished.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsFinished.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsMeetingBooked.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsMeetingBooked.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsMeetingBooked.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsOptedOut.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsOptedOut.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsOptedOut.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsOutOfOffice.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsOutOfOffice.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsOutOfOffice.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsPaused.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsPaused.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsPaused.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsReplied.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsReplied.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsReplied.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsToCall.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsToCall.operation.js +8 -0
- package/dist/nodes/Reply/actions/contactStatus/markAsToCall.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/contactStatus/statusHelper.d.ts +3 -0
- package/dist/nodes/Reply/actions/contactStatus/statusHelper.js +68 -0
- package/dist/nodes/Reply/actions/contactStatus/statusHelper.js.map +1 -0
- package/dist/nodes/Reply/actions/router.d.ts +2 -0
- package/dist/nodes/Reply/actions/router.js +45 -0
- package/dist/nodes/Reply/actions/router.js.map +1 -0
- package/dist/nodes/Reply/actions/sequence/addContact.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/sequence/addContact.operation.js +55 -0
- package/dist/nodes/Reply/actions/sequence/addContact.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/sequence/archive.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/sequence/archive.operation.js +26 -0
- package/dist/nodes/Reply/actions/sequence/archive.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/sequence/getAll.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/sequence/getAll.operation.js +15 -0
- package/dist/nodes/Reply/actions/sequence/getAll.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/sequence/getById.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/sequence/getById.operation.js +20 -0
- package/dist/nodes/Reply/actions/sequence/getById.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/sequence/getContacts.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/sequence/getContacts.operation.js +26 -0
- package/dist/nodes/Reply/actions/sequence/getContacts.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/sequence/index.d.ts +18 -0
- package/dist/nodes/Reply/actions/sequence/index.js +388 -0
- package/dist/nodes/Reply/actions/sequence/index.js.map +1 -0
- package/dist/nodes/Reply/actions/sequence/pause.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/sequence/pause.operation.js +26 -0
- package/dist/nodes/Reply/actions/sequence/pause.operation.js.map +1 -0
- package/dist/nodes/Reply/actions/sequence/start.operation.d.ts +2 -0
- package/dist/nodes/Reply/actions/sequence/start.operation.js +26 -0
- package/dist/nodes/Reply/actions/sequence/start.operation.js.map +1 -0
- package/dist/nodes/Reply/triggers/filters.d.ts +6 -0
- package/dist/nodes/Reply/triggers/filters.js +53 -0
- package/dist/nodes/Reply/triggers/filters.js.map +1 -0
- package/dist/nodes/Reply/utils/GenericFunctions.d.ts +4 -0
- package/dist/nodes/Reply/utils/GenericFunctions.js +62 -0
- package/dist/nodes/Reply/utils/GenericFunctions.js.map +1 -0
- package/dist/nodes/Reply/utils/constants.d.ts +61 -0
- package/dist/nodes/Reply/utils/constants.js +44 -0
- package/dist/nodes/Reply/utils/constants.js.map +1 -0
- package/dist/nodes/Reply/utils/mappings.d.ts +11 -0
- package/dist/nodes/Reply/utils/mappings.js +18 -0
- package/dist/nodes/Reply/utils/mappings.js.map +1 -0
- package/dist/nodes/Reply/utils/validation.d.ts +51 -0
- package/dist/nodes/Reply/utils/validation.js +220 -0
- package/dist/nodes/Reply/utils/validation.js.map +1 -0
- package/dist/package.json +58 -0
- package/dist/publicUrls.d.ts +3 -0
- package/dist/publicUrls.js +7 -0
- package/dist/publicUrls.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.replyApiRequest = replyApiRequest;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const publicUrls_1 = require("../../../publicUrls");
|
|
6
|
+
async function replyApiRequest(method, endpoint, body, qs, headers) {
|
|
7
|
+
const credentials = await this.getCredentials('replyApi');
|
|
8
|
+
if (!(credentials === null || credentials === void 0 ? void 0 : credentials.apiKey) || typeof credentials.apiKey !== 'string') {
|
|
9
|
+
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
|
|
10
|
+
message: 'Reply API credential is required',
|
|
11
|
+
description: 'Please configure the Reply API credential with a valid API key',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const apiKey = credentials.apiKey.trim();
|
|
15
|
+
if (!apiKey) {
|
|
16
|
+
throw new n8n_workflow_1.NodeApiError(this.getNode(), {
|
|
17
|
+
message: 'Reply API credential is required',
|
|
18
|
+
description: 'Please configure the Reply API credential with a valid API key',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const options = {
|
|
22
|
+
method,
|
|
23
|
+
url: `${publicUrls_1.publicUrls.Reply2Api}${endpoint}`,
|
|
24
|
+
headers: {
|
|
25
|
+
'X-API-Key': apiKey,
|
|
26
|
+
'Content-Type': 'application/json',
|
|
27
|
+
...headers,
|
|
28
|
+
},
|
|
29
|
+
json: true,
|
|
30
|
+
};
|
|
31
|
+
if (body && Object.keys(body).length > 0) {
|
|
32
|
+
options.body = body;
|
|
33
|
+
}
|
|
34
|
+
if (qs && Object.keys(qs).length > 0) {
|
|
35
|
+
options.qs = qs;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
return await this.helpers.httpRequest(options);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
throw parseReplyApiError.call(this, error);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function parseReplyApiError(error) {
|
|
45
|
+
var _a, _b;
|
|
46
|
+
const err = error;
|
|
47
|
+
const statusCode = (_a = err.statusCode) !== null && _a !== void 0 ? _a : 500;
|
|
48
|
+
const responseBody = (_b = err.response) === null || _b === void 0 ? void 0 : _b.body;
|
|
49
|
+
const replyMessage = (responseBody === null || responseBody === void 0 ? void 0 : responseBody.detail) ||
|
|
50
|
+
(responseBody === null || responseBody === void 0 ? void 0 : responseBody.message) ||
|
|
51
|
+
(responseBody === null || responseBody === void 0 ? void 0 : responseBody.error) ||
|
|
52
|
+
(responseBody === null || responseBody === void 0 ? void 0 : responseBody.title) ||
|
|
53
|
+
err.message ||
|
|
54
|
+
'Unknown error';
|
|
55
|
+
const prefix = statusCode >= 500 ? 'Reply API server error' : 'Reply API error';
|
|
56
|
+
return new n8n_workflow_1.NodeApiError(this.getNode(), {
|
|
57
|
+
message: `${prefix} (${statusCode}): ${replyMessage}`,
|
|
58
|
+
description: typeof responseBody === 'object' ? JSON.stringify(responseBody) : undefined,
|
|
59
|
+
httpCode: String(statusCode),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=GenericFunctions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../../nodes/Reply/utils/GenericFunctions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
export declare const EMAIL_EVENTS: {
|
|
2
|
+
readonly REPLIED: "email_replied";
|
|
3
|
+
readonly SENT: "email_sent";
|
|
4
|
+
readonly OPENED: "email_opened";
|
|
5
|
+
readonly LINK_CLICKED: "email_link_clicked";
|
|
6
|
+
readonly BOUNCED: "email_bounced";
|
|
7
|
+
};
|
|
8
|
+
export declare const REPLY_EVENTS: {
|
|
9
|
+
readonly CATEGORIZED: "reply_categorized";
|
|
10
|
+
};
|
|
11
|
+
export declare const CONTACT_EVENTS: {
|
|
12
|
+
readonly OPTED_OUT: "contact_opted_out";
|
|
13
|
+
readonly FINISHED: "contact_finished";
|
|
14
|
+
readonly CALLED: "contact_called";
|
|
15
|
+
};
|
|
16
|
+
export declare const LINKEDIN_EVENTS: {
|
|
17
|
+
readonly CONNECTION_REQUEST_SENT: "linkedin_connection_request_sent";
|
|
18
|
+
readonly CONNECTION_REQUEST_ACCEPTED: "linkedin_connection_request_accepted";
|
|
19
|
+
readonly MESSAGE_SENT: "linkedin_message_sent";
|
|
20
|
+
readonly MESSAGE_REPLIED: "linkedin_message_replied";
|
|
21
|
+
readonly REPLY_CATEGORIZED: "linkedin_reply_categorized";
|
|
22
|
+
};
|
|
23
|
+
export declare const ACCOUNT_HEALTH_EVENTS: {
|
|
24
|
+
readonly EMAIL_CONNECTION_LOST: "email_account_connection_lost";
|
|
25
|
+
readonly EMAIL_ERROR: "email_account_error";
|
|
26
|
+
};
|
|
27
|
+
export declare const TRIGGER_EVENT_CATEGORIES: {
|
|
28
|
+
readonly email: {
|
|
29
|
+
readonly REPLIED: "email_replied";
|
|
30
|
+
readonly SENT: "email_sent";
|
|
31
|
+
readonly OPENED: "email_opened";
|
|
32
|
+
readonly LINK_CLICKED: "email_link_clicked";
|
|
33
|
+
readonly BOUNCED: "email_bounced";
|
|
34
|
+
};
|
|
35
|
+
readonly reply: {
|
|
36
|
+
readonly CATEGORIZED: "reply_categorized";
|
|
37
|
+
};
|
|
38
|
+
readonly contact: {
|
|
39
|
+
readonly OPTED_OUT: "contact_opted_out";
|
|
40
|
+
readonly FINISHED: "contact_finished";
|
|
41
|
+
readonly CALLED: "contact_called";
|
|
42
|
+
};
|
|
43
|
+
readonly linkedin: {
|
|
44
|
+
readonly CONNECTION_REQUEST_SENT: "linkedin_connection_request_sent";
|
|
45
|
+
readonly CONNECTION_REQUEST_ACCEPTED: "linkedin_connection_request_accepted";
|
|
46
|
+
readonly MESSAGE_SENT: "linkedin_message_sent";
|
|
47
|
+
readonly MESSAGE_REPLIED: "linkedin_message_replied";
|
|
48
|
+
readonly REPLY_CATEGORIZED: "linkedin_reply_categorized";
|
|
49
|
+
};
|
|
50
|
+
readonly accountHealth: {
|
|
51
|
+
readonly EMAIL_CONNECTION_LOST: "email_account_connection_lost";
|
|
52
|
+
readonly EMAIL_ERROR: "email_account_error";
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
export declare const ALL_TRIGGER_EVENTS: readonly ("email_replied" | "email_sent" | "email_opened" | "email_link_clicked" | "email_bounced" | "reply_categorized" | "contact_opted_out" | "contact_finished" | "contact_called" | "linkedin_connection_request_sent" | "linkedin_connection_request_accepted" | "linkedin_message_sent" | "linkedin_message_replied" | "linkedin_reply_categorized" | "email_account_connection_lost" | "email_account_error")[];
|
|
56
|
+
export type EmailEventType = (typeof EMAIL_EVENTS)[keyof typeof EMAIL_EVENTS];
|
|
57
|
+
export type ReplyEventType = (typeof REPLY_EVENTS)[keyof typeof REPLY_EVENTS];
|
|
58
|
+
export type ContactEventType = (typeof CONTACT_EVENTS)[keyof typeof CONTACT_EVENTS];
|
|
59
|
+
export type LinkedInEventType = (typeof LINKEDIN_EVENTS)[keyof typeof LINKEDIN_EVENTS];
|
|
60
|
+
export type AccountHealthEventType = (typeof ACCOUNT_HEALTH_EVENTS)[keyof typeof ACCOUNT_HEALTH_EVENTS];
|
|
61
|
+
export type TriggerEventType = EmailEventType | ReplyEventType | ContactEventType | LinkedInEventType | AccountHealthEventType;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ALL_TRIGGER_EVENTS = exports.TRIGGER_EVENT_CATEGORIES = exports.ACCOUNT_HEALTH_EVENTS = exports.LINKEDIN_EVENTS = exports.CONTACT_EVENTS = exports.REPLY_EVENTS = exports.EMAIL_EVENTS = void 0;
|
|
4
|
+
exports.EMAIL_EVENTS = {
|
|
5
|
+
REPLIED: 'email_replied',
|
|
6
|
+
SENT: 'email_sent',
|
|
7
|
+
OPENED: 'email_opened',
|
|
8
|
+
LINK_CLICKED: 'email_link_clicked',
|
|
9
|
+
BOUNCED: 'email_bounced',
|
|
10
|
+
};
|
|
11
|
+
exports.REPLY_EVENTS = {
|
|
12
|
+
CATEGORIZED: 'reply_categorized',
|
|
13
|
+
};
|
|
14
|
+
exports.CONTACT_EVENTS = {
|
|
15
|
+
OPTED_OUT: 'contact_opted_out',
|
|
16
|
+
FINISHED: 'contact_finished',
|
|
17
|
+
CALLED: 'contact_called',
|
|
18
|
+
};
|
|
19
|
+
exports.LINKEDIN_EVENTS = {
|
|
20
|
+
CONNECTION_REQUEST_SENT: 'linkedin_connection_request_sent',
|
|
21
|
+
CONNECTION_REQUEST_ACCEPTED: 'linkedin_connection_request_accepted',
|
|
22
|
+
MESSAGE_SENT: 'linkedin_message_sent',
|
|
23
|
+
MESSAGE_REPLIED: 'linkedin_message_replied',
|
|
24
|
+
REPLY_CATEGORIZED: 'linkedin_reply_categorized',
|
|
25
|
+
};
|
|
26
|
+
exports.ACCOUNT_HEALTH_EVENTS = {
|
|
27
|
+
EMAIL_CONNECTION_LOST: 'email_account_connection_lost',
|
|
28
|
+
EMAIL_ERROR: 'email_account_error',
|
|
29
|
+
};
|
|
30
|
+
exports.TRIGGER_EVENT_CATEGORIES = {
|
|
31
|
+
email: exports.EMAIL_EVENTS,
|
|
32
|
+
reply: exports.REPLY_EVENTS,
|
|
33
|
+
contact: exports.CONTACT_EVENTS,
|
|
34
|
+
linkedin: exports.LINKEDIN_EVENTS,
|
|
35
|
+
accountHealth: exports.ACCOUNT_HEALTH_EVENTS,
|
|
36
|
+
};
|
|
37
|
+
exports.ALL_TRIGGER_EVENTS = [
|
|
38
|
+
...Object.values(exports.EMAIL_EVENTS),
|
|
39
|
+
...Object.values(exports.REPLY_EVENTS),
|
|
40
|
+
...Object.values(exports.CONTACT_EVENTS),
|
|
41
|
+
...Object.values(exports.LINKEDIN_EVENTS),
|
|
42
|
+
...Object.values(exports.ACCOUNT_HEALTH_EVENTS),
|
|
43
|
+
];
|
|
44
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../nodes/Reply/utils/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG;IAC3B,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,cAAc;IACtB,YAAY,EAAE,oBAAoB;IAClC,OAAO,EAAE,eAAe;CACf,CAAC;AAEE,QAAA,YAAY,GAAG;IAC3B,WAAW,EAAE,mBAAmB;CACvB,CAAC;AAEE,QAAA,cAAc,GAAG;IAC7B,SAAS,EAAE,mBAAmB;IAC9B,QAAQ,EAAE,kBAAkB;IAC5B,MAAM,EAAE,gBAAgB;CACf,CAAC;AAEE,QAAA,eAAe,GAAG;IAC9B,uBAAuB,EAAE,kCAAkC;IAC3D,2BAA2B,EAAE,sCAAsC;IACnE,YAAY,EAAE,uBAAuB;IACrC,eAAe,EAAE,0BAA0B;IAC3C,iBAAiB,EAAE,4BAA4B;CACtC,CAAC;AAEE,QAAA,qBAAqB,GAAG;IACpC,qBAAqB,EAAE,+BAA+B;IACtD,WAAW,EAAE,qBAAqB;CACzB,CAAC;AAEE,QAAA,wBAAwB,GAAG;IACvC,KAAK,EAAE,oBAAY;IACnB,KAAK,EAAE,oBAAY;IACnB,OAAO,EAAE,sBAAc;IACvB,QAAQ,EAAE,uBAAe;IACzB,aAAa,EAAE,6BAAqB;CAC3B,CAAC;AAEE,QAAA,kBAAkB,GAAG;IACjC,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAC;IAC9B,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAY,CAAC;IAC9B,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC;IAChC,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAe,CAAC;IACjC,GAAG,MAAM,CAAC,MAAM,CAAC,6BAAqB,CAAC;CAC9B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IDataObject } from 'n8n-workflow';
|
|
2
|
+
export interface PaginationParams {
|
|
3
|
+
limit?: number;
|
|
4
|
+
offset?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface ReplyPaginationParams {
|
|
7
|
+
top: number;
|
|
8
|
+
skip: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function mapPagination(params: PaginationParams): ReplyPaginationParams;
|
|
11
|
+
export declare function mapContactFields(uiFields: IDataObject): IDataObject;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapPagination = mapPagination;
|
|
4
|
+
exports.mapContactFields = mapContactFields;
|
|
5
|
+
const MAX_PAGE_SIZE = 100;
|
|
6
|
+
function mapPagination(params) {
|
|
7
|
+
var _a, _b;
|
|
8
|
+
const limit = (_a = params.limit) !== null && _a !== void 0 ? _a : 50;
|
|
9
|
+
const offset = (_b = params.offset) !== null && _b !== void 0 ? _b : 0;
|
|
10
|
+
return {
|
|
11
|
+
top: Math.min(Math.max(1, limit), MAX_PAGE_SIZE),
|
|
12
|
+
skip: Math.max(0, offset),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function mapContactFields(uiFields) {
|
|
16
|
+
return { ...uiFields };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=mappings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappings.js","sourceRoot":"","sources":["../../../../nodes/Reply/utils/mappings.ts"],"names":[],"mappings":";;AAcA,sCAQC;AAED,4CAEC;AAxBD,MAAM,aAAa,GAAG,GAAG,CAAC;AAY1B,SAAgB,aAAa,CAAC,MAAwB;;IACrD,MAAM,KAAK,GAAG,MAAA,MAAM,CAAC,KAAK,mCAAI,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAC;IAElC,OAAO;QACN,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,CAAC;QAChD,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,QAAqB;IACrD,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface Contact {
|
|
2
|
+
id?: number;
|
|
3
|
+
email: string;
|
|
4
|
+
firstName?: string;
|
|
5
|
+
lastName?: string;
|
|
6
|
+
fullName?: string;
|
|
7
|
+
title?: string;
|
|
8
|
+
company?: string;
|
|
9
|
+
domain?: string;
|
|
10
|
+
city?: string;
|
|
11
|
+
state?: string;
|
|
12
|
+
country?: string;
|
|
13
|
+
timeZone?: string;
|
|
14
|
+
phone?: string;
|
|
15
|
+
phoneStatus?: string;
|
|
16
|
+
linkedInProfile?: string;
|
|
17
|
+
linkedInSalesNavigator?: string;
|
|
18
|
+
linkedInRecruiter?: string;
|
|
19
|
+
companySize?: string;
|
|
20
|
+
industry?: string;
|
|
21
|
+
notes?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface Enrollment {
|
|
24
|
+
contactId?: number;
|
|
25
|
+
contact?: Contact;
|
|
26
|
+
forcePush: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface EnrollmentById {
|
|
29
|
+
contactId: number;
|
|
30
|
+
forcePush: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface EnrollmentByContact {
|
|
33
|
+
contact: Contact;
|
|
34
|
+
forcePush: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare function validateContact(data: unknown): Contact;
|
|
37
|
+
export declare function validateEnrollment(data: unknown): Enrollment;
|
|
38
|
+
export declare function validateEnrollmentById(data: unknown): EnrollmentById;
|
|
39
|
+
export declare function validateEmail(email: unknown): string;
|
|
40
|
+
export declare function validateContactId(id: unknown): number;
|
|
41
|
+
export declare function validateSequenceId(id: unknown): number;
|
|
42
|
+
export interface TriggerFiltersInput {
|
|
43
|
+
sequenceIds?: number[];
|
|
44
|
+
emailAccounts?: string[];
|
|
45
|
+
}
|
|
46
|
+
export interface TriggerFiltersOutput {
|
|
47
|
+
sequenceIds: number[];
|
|
48
|
+
emailAccounts: string[];
|
|
49
|
+
}
|
|
50
|
+
export declare function validateTriggerFilters(data: TriggerFiltersInput): TriggerFiltersOutput;
|
|
51
|
+
export declare function validateEnrollmentByContact(data: unknown): EnrollmentByContact;
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateContact = validateContact;
|
|
4
|
+
exports.validateEnrollment = validateEnrollment;
|
|
5
|
+
exports.validateEnrollmentById = validateEnrollmentById;
|
|
6
|
+
exports.validateEmail = validateEmail;
|
|
7
|
+
exports.validateContactId = validateContactId;
|
|
8
|
+
exports.validateSequenceId = validateSequenceId;
|
|
9
|
+
exports.validateTriggerFilters = validateTriggerFilters;
|
|
10
|
+
exports.validateEnrollmentByContact = validateEnrollmentByContact;
|
|
11
|
+
const CONTACT_ALLOWED_FIELDS = new Set([
|
|
12
|
+
'id',
|
|
13
|
+
'email',
|
|
14
|
+
'firstName',
|
|
15
|
+
'lastName',
|
|
16
|
+
'fullName',
|
|
17
|
+
'title',
|
|
18
|
+
'company',
|
|
19
|
+
'domain',
|
|
20
|
+
'city',
|
|
21
|
+
'state',
|
|
22
|
+
'country',
|
|
23
|
+
'timeZone',
|
|
24
|
+
'phone',
|
|
25
|
+
'phoneStatus',
|
|
26
|
+
'linkedInProfile',
|
|
27
|
+
'linkedInSalesNavigator',
|
|
28
|
+
'linkedInRecruiter',
|
|
29
|
+
'companySize',
|
|
30
|
+
'industry',
|
|
31
|
+
'notes',
|
|
32
|
+
]);
|
|
33
|
+
const ENROLLMENT_BY_ID_ALLOWED_FIELDS = new Set(['contactId', 'forcePush']);
|
|
34
|
+
const ENROLLMENT_BY_CONTACT_ALLOWED_FIELDS = new Set(['contact', 'forcePush']);
|
|
35
|
+
function isValidEmail(email) {
|
|
36
|
+
if (typeof email !== 'string')
|
|
37
|
+
return false;
|
|
38
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
39
|
+
return emailRegex.test(email);
|
|
40
|
+
}
|
|
41
|
+
function findUnknownFields(data, allowedFields) {
|
|
42
|
+
return Object.keys(data).filter((key) => !allowedFields.has(key));
|
|
43
|
+
}
|
|
44
|
+
function formatValidationErrors(errors) {
|
|
45
|
+
return `Validation failed: ${errors.join('; ')}`;
|
|
46
|
+
}
|
|
47
|
+
function validateContact(data) {
|
|
48
|
+
const errors = [];
|
|
49
|
+
if (typeof data !== 'object' || data === null) {
|
|
50
|
+
throw new Error('Validation failed: email: Required');
|
|
51
|
+
}
|
|
52
|
+
const obj = data;
|
|
53
|
+
const unknownFields = findUnknownFields(obj, CONTACT_ALLOWED_FIELDS);
|
|
54
|
+
if (unknownFields.length > 0) {
|
|
55
|
+
errors.push(`unknown field '${unknownFields.join(', ')}' not allowed`);
|
|
56
|
+
}
|
|
57
|
+
if (!('email' in obj) || obj.email === undefined || obj.email === '') {
|
|
58
|
+
errors.push('email: Required');
|
|
59
|
+
}
|
|
60
|
+
else if (!isValidEmail(obj.email)) {
|
|
61
|
+
errors.push('email: Invalid email');
|
|
62
|
+
}
|
|
63
|
+
if (errors.length > 0) {
|
|
64
|
+
throw new Error(formatValidationErrors(errors));
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
email: obj.email,
|
|
68
|
+
...(obj.id !== undefined && { id: obj.id }),
|
|
69
|
+
...(obj.firstName !== undefined && { firstName: obj.firstName }),
|
|
70
|
+
...(obj.lastName !== undefined && { lastName: obj.lastName }),
|
|
71
|
+
...(obj.fullName !== undefined && { fullName: obj.fullName }),
|
|
72
|
+
...(obj.title !== undefined && { title: obj.title }),
|
|
73
|
+
...(obj.company !== undefined && { company: obj.company }),
|
|
74
|
+
...(obj.domain !== undefined && { domain: obj.domain }),
|
|
75
|
+
...(obj.city !== undefined && { city: obj.city }),
|
|
76
|
+
...(obj.state !== undefined && { state: obj.state }),
|
|
77
|
+
...(obj.country !== undefined && { country: obj.country }),
|
|
78
|
+
...(obj.timeZone !== undefined && { timeZone: obj.timeZone }),
|
|
79
|
+
...(obj.phone !== undefined && { phone: obj.phone }),
|
|
80
|
+
...(obj.phoneStatus !== undefined && { phoneStatus: obj.phoneStatus }),
|
|
81
|
+
...(obj.linkedInProfile !== undefined && { linkedInProfile: obj.linkedInProfile }),
|
|
82
|
+
...(obj.linkedInSalesNavigator !== undefined && {
|
|
83
|
+
linkedInSalesNavigator: obj.linkedInSalesNavigator,
|
|
84
|
+
}),
|
|
85
|
+
...(obj.linkedInRecruiter !== undefined && {
|
|
86
|
+
linkedInRecruiter: obj.linkedInRecruiter,
|
|
87
|
+
}),
|
|
88
|
+
...(obj.companySize !== undefined && { companySize: obj.companySize }),
|
|
89
|
+
...(obj.industry !== undefined && { industry: obj.industry }),
|
|
90
|
+
...(obj.notes !== undefined && { notes: obj.notes }),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function validateEnrollment(data) {
|
|
94
|
+
if (typeof data !== 'object' || data === null) {
|
|
95
|
+
throw new Error('Validation failed: Provide either contactId or contact');
|
|
96
|
+
}
|
|
97
|
+
const obj = data;
|
|
98
|
+
if ('startStepId' in obj) {
|
|
99
|
+
throw new Error('Validation failed: startStepId is not supported in this version');
|
|
100
|
+
}
|
|
101
|
+
const hasContactId = 'contactId' in obj && obj.contactId !== undefined;
|
|
102
|
+
const hasContact = 'contact' in obj && obj.contact !== undefined;
|
|
103
|
+
if (!hasContactId && !hasContact) {
|
|
104
|
+
throw new Error('Validation failed: Provide either contactId or contact');
|
|
105
|
+
}
|
|
106
|
+
if (hasContactId && hasContact) {
|
|
107
|
+
throw new Error('Validation failed: Provide either contactId or contact, not both');
|
|
108
|
+
}
|
|
109
|
+
const forcePush = typeof obj.forcePush === 'boolean' ? obj.forcePush : false;
|
|
110
|
+
if (hasContactId) {
|
|
111
|
+
return {
|
|
112
|
+
contactId: obj.contactId,
|
|
113
|
+
forcePush,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const validatedContact = validateContact(obj.contact);
|
|
117
|
+
return {
|
|
118
|
+
contact: validatedContact,
|
|
119
|
+
forcePush,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function validateEnrollmentById(data) {
|
|
123
|
+
if (typeof data !== 'object' || data === null) {
|
|
124
|
+
throw new Error('Validation failed: contactId is required');
|
|
125
|
+
}
|
|
126
|
+
const obj = data;
|
|
127
|
+
if ('startStepId' in obj) {
|
|
128
|
+
throw new Error('Validation failed: startStepId is not supported in this version');
|
|
129
|
+
}
|
|
130
|
+
if ('contact' in obj) {
|
|
131
|
+
throw new Error('Validation failed: contact object is not allowed in add-by-id mode');
|
|
132
|
+
}
|
|
133
|
+
const unknownFields = findUnknownFields(obj, ENROLLMENT_BY_ID_ALLOWED_FIELDS);
|
|
134
|
+
if (unknownFields.length > 0) {
|
|
135
|
+
throw new Error(formatValidationErrors([`unknown field '${unknownFields.join(', ')}' not allowed`]));
|
|
136
|
+
}
|
|
137
|
+
const contactId = validateContactId(obj.contactId);
|
|
138
|
+
const forcePush = typeof obj.forcePush === 'boolean' ? obj.forcePush : false;
|
|
139
|
+
return {
|
|
140
|
+
contactId,
|
|
141
|
+
forcePush,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function validateEmail(email) {
|
|
145
|
+
if (email === undefined || email === null || email === '') {
|
|
146
|
+
throw new Error('Validation failed: email is required');
|
|
147
|
+
}
|
|
148
|
+
if (!isValidEmail(email)) {
|
|
149
|
+
throw new Error('Validation failed: Invalid email');
|
|
150
|
+
}
|
|
151
|
+
return email;
|
|
152
|
+
}
|
|
153
|
+
function validateContactId(id) {
|
|
154
|
+
if (id === undefined || id === null) {
|
|
155
|
+
throw new Error('Validation failed: contactId is required');
|
|
156
|
+
}
|
|
157
|
+
if (typeof id !== 'number') {
|
|
158
|
+
throw new Error('Validation failed: contactId must be a number');
|
|
159
|
+
}
|
|
160
|
+
if (id <= 0) {
|
|
161
|
+
throw new Error('Validation failed: contactId must be a positive number');
|
|
162
|
+
}
|
|
163
|
+
return id;
|
|
164
|
+
}
|
|
165
|
+
function validateSequenceId(id) {
|
|
166
|
+
if (id === undefined || id === null) {
|
|
167
|
+
throw new Error('Validation failed: sequenceId is required');
|
|
168
|
+
}
|
|
169
|
+
if (typeof id !== 'number') {
|
|
170
|
+
throw new Error('Validation failed: sequenceId must be a number');
|
|
171
|
+
}
|
|
172
|
+
if (id <= 0) {
|
|
173
|
+
throw new Error('Validation failed: sequenceId must be a positive number');
|
|
174
|
+
}
|
|
175
|
+
return id;
|
|
176
|
+
}
|
|
177
|
+
function validateTriggerFilters(data) {
|
|
178
|
+
var _a, _b;
|
|
179
|
+
const sequenceIds = ((_a = data.sequenceIds) !== null && _a !== void 0 ? _a : [])
|
|
180
|
+
.filter((id) => typeof id === 'number' && id > 0)
|
|
181
|
+
.filter((id, index, arr) => arr.indexOf(id) === index);
|
|
182
|
+
const seenEmails = new Set();
|
|
183
|
+
const emailAccounts = ((_b = data.emailAccounts) !== null && _b !== void 0 ? _b : [])
|
|
184
|
+
.map((email) => (typeof email === 'string' ? email.trim() : ''))
|
|
185
|
+
.filter((email) => email.length > 0)
|
|
186
|
+
.filter((email) => {
|
|
187
|
+
const lower = email.toLowerCase();
|
|
188
|
+
if (seenEmails.has(lower))
|
|
189
|
+
return false;
|
|
190
|
+
seenEmails.add(lower);
|
|
191
|
+
return true;
|
|
192
|
+
});
|
|
193
|
+
return { sequenceIds, emailAccounts };
|
|
194
|
+
}
|
|
195
|
+
function validateEnrollmentByContact(data) {
|
|
196
|
+
if (typeof data !== 'object' || data === null) {
|
|
197
|
+
throw new Error('Validation failed: contact is required');
|
|
198
|
+
}
|
|
199
|
+
const obj = data;
|
|
200
|
+
if ('startStepId' in obj) {
|
|
201
|
+
throw new Error('Validation failed: startStepId is not supported in this version');
|
|
202
|
+
}
|
|
203
|
+
if ('contactId' in obj) {
|
|
204
|
+
throw new Error('Validation failed: contactId is not allowed in add-by-contact mode');
|
|
205
|
+
}
|
|
206
|
+
if (!('contact' in obj) || obj.contact === undefined) {
|
|
207
|
+
throw new Error('Validation failed: contact is required');
|
|
208
|
+
}
|
|
209
|
+
const unknownFields = findUnknownFields(obj, ENROLLMENT_BY_CONTACT_ALLOWED_FIELDS);
|
|
210
|
+
if (unknownFields.length > 0) {
|
|
211
|
+
throw new Error(formatValidationErrors([`unknown field '${unknownFields.join(', ')}' not allowed`]));
|
|
212
|
+
}
|
|
213
|
+
const validatedContact = validateContact(obj.contact);
|
|
214
|
+
const forcePush = typeof obj.forcePush === 'boolean' ? obj.forcePush : false;
|
|
215
|
+
return {
|
|
216
|
+
contact: validatedContact,
|
|
217
|
+
forcePush,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../nodes/Reply/utils/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@replyio/n8n-nodes-reply",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"description": "n8n community node for Reply.io API integration",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"n8n-community-node-package"
|
|
9
|
+
],
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=23.0.0"
|
|
12
|
+
},
|
|
13
|
+
"author": {
|
|
14
|
+
"name": "Borys Boiko",
|
|
15
|
+
"email": "b.boiko@reply.io"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "https://github.com/reply-team/Reply.n8n.git"
|
|
20
|
+
},
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "n8n-node build",
|
|
23
|
+
"build:watch": "tsc --watch",
|
|
24
|
+
"dev": "n8n-node dev",
|
|
25
|
+
"lint": "n8n-node lint",
|
|
26
|
+
"lint:fix": "n8n-node lint --fix",
|
|
27
|
+
"release": "n8n-node release",
|
|
28
|
+
"test": "jest",
|
|
29
|
+
"test:watch": "jest --watch"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist"
|
|
33
|
+
],
|
|
34
|
+
"n8n": {
|
|
35
|
+
"n8nNodesApiVersion": 1,
|
|
36
|
+
"strict": true,
|
|
37
|
+
"credentials": [
|
|
38
|
+
"dist/credentials/ReplyApi.credentials.js"
|
|
39
|
+
],
|
|
40
|
+
"nodes": [
|
|
41
|
+
"dist/nodes/Reply/Reply.node.js",
|
|
42
|
+
"dist/nodes/Reply/ReplyTrigger.node.js"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@n8n/node-cli": "0.17.0",
|
|
47
|
+
"@types/jest": "^29.5.14",
|
|
48
|
+
"eslint": "9.32.0",
|
|
49
|
+
"jest": "^29.7.0",
|
|
50
|
+
"prettier": "3.6.2",
|
|
51
|
+
"release-it": "^19.0.4",
|
|
52
|
+
"ts-jest": "^29.2.5",
|
|
53
|
+
"typescript": "5.9.3"
|
|
54
|
+
},
|
|
55
|
+
"peerDependencies": {
|
|
56
|
+
"n8n-workflow": "2.2.1"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicUrls.js","sourceRoot":"","sources":["../publicUrls.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;IACzB,SAAS,EAAE,0BAA0B;CACrC,CAAC"}
|