@activepieces/piece-gmail 0.12.5 → 0.12.7

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.
Files changed (69) hide show
  1. package/package.json +7 -21
  2. package/src/index.js +217 -71
  3. package/src/index.d.ts +0 -6
  4. package/src/index.d.ts.map +0 -1
  5. package/src/index.js.map +0 -1
  6. package/src/lib/actions/create-draft-reply-action.d.ts +0 -17
  7. package/src/lib/actions/create-draft-reply-action.d.ts.map +0 -1
  8. package/src/lib/actions/create-draft-reply-action.js +0 -265
  9. package/src/lib/actions/create-draft-reply-action.js.map +0 -1
  10. package/src/lib/actions/get-mail-action.d.ts +0 -7
  11. package/src/lib/actions/get-mail-action.d.ts.map +0 -1
  12. package/src/lib/actions/get-mail-action.js +0 -40
  13. package/src/lib/actions/get-mail-action.js.map +0 -1
  14. package/src/lib/actions/get-thread-action.d.ts +0 -9
  15. package/src/lib/actions/get-thread-action.d.ts.map +0 -1
  16. package/src/lib/actions/get-thread-action.js +0 -44
  17. package/src/lib/actions/get-thread-action.js.map +0 -1
  18. package/src/lib/actions/reply-to-email-action.d.ts +0 -16
  19. package/src/lib/actions/reply-to-email-action.d.ts.map +0 -1
  20. package/src/lib/actions/reply-to-email-action.js +0 -198
  21. package/src/lib/actions/reply-to-email-action.js.map +0 -1
  22. package/src/lib/actions/request-approval-in-email.d.ts +0 -15
  23. package/src/lib/actions/request-approval-in-email.d.ts.map +0 -1
  24. package/src/lib/actions/request-approval-in-email.js +0 -175
  25. package/src/lib/actions/request-approval-in-email.js.map +0 -1
  26. package/src/lib/actions/search-email-action.d.ts +0 -22
  27. package/src/lib/actions/search-email-action.d.ts.map +0 -1
  28. package/src/lib/actions/search-email-action.js +0 -175
  29. package/src/lib/actions/search-email-action.js.map +0 -1
  30. package/src/lib/actions/send-email-action.d.ts +0 -18
  31. package/src/lib/actions/send-email-action.d.ts.map +0 -1
  32. package/src/lib/actions/send-email-action.js +0 -192
  33. package/src/lib/actions/send-email-action.js.map +0 -1
  34. package/src/lib/auth.d.ts +0 -12
  35. package/src/lib/auth.d.ts.map +0 -1
  36. package/src/lib/auth.js +0 -106
  37. package/src/lib/auth.js.map +0 -1
  38. package/src/lib/common/data.d.ts +0 -132
  39. package/src/lib/common/data.d.ts.map +0 -1
  40. package/src/lib/common/data.js +0 -209
  41. package/src/lib/common/data.js.map +0 -1
  42. package/src/lib/common/models.d.ts +0 -86
  43. package/src/lib/common/models.d.ts.map +0 -1
  44. package/src/lib/common/models.js +0 -26
  45. package/src/lib/common/models.js.map +0 -1
  46. package/src/lib/common/props.d.ts +0 -21
  47. package/src/lib/common/props.d.ts.map +0 -1
  48. package/src/lib/common/props.js +0 -226
  49. package/src/lib/common/props.js.map +0 -1
  50. package/src/lib/triggers/new-attachment.d.ts +0 -208
  51. package/src/lib/triggers/new-attachment.d.ts.map +0 -1
  52. package/src/lib/triggers/new-attachment.js +0 -142
  53. package/src/lib/triggers/new-attachment.js.map +0 -1
  54. package/src/lib/triggers/new-conversation.d.ts +0 -59
  55. package/src/lib/triggers/new-conversation.d.ts.map +0 -1
  56. package/src/lib/triggers/new-conversation.js +0 -306
  57. package/src/lib/triggers/new-conversation.js.map +0 -1
  58. package/src/lib/triggers/new-email.d.ts +0 -52
  59. package/src/lib/triggers/new-email.d.ts.map +0 -1
  60. package/src/lib/triggers/new-email.js +0 -131
  61. package/src/lib/triggers/new-email.js.map +0 -1
  62. package/src/lib/triggers/new-label.d.ts +0 -15
  63. package/src/lib/triggers/new-label.d.ts.map +0 -1
  64. package/src/lib/triggers/new-label.js +0 -78
  65. package/src/lib/triggers/new-label.js.map +0 -1
  66. package/src/lib/triggers/new-labeled-email.d.ts +0 -99
  67. package/src/lib/triggers/new-labeled-email.d.ts.map +0 -1
  68. package/src/lib/triggers/new-labeled-email.js +0 -141
  69. package/src/lib/triggers/new-labeled-email.js.map +0 -1
@@ -1,198 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.gmailReplyToEmailAction = void 0;
4
- const tslib_1 = require("tslib");
5
- const pieces_framework_1 = require("@activepieces/pieces-framework");
6
- const mime_types_1 = tslib_1.__importDefault(require("mime-types"));
7
- const mail_composer_1 = tslib_1.__importDefault(require("nodemailer/lib/mail-composer"));
8
- const auth_1 = require("../auth");
9
- const googleapis_1 = require("googleapis");
10
- const props_1 = require("../common/props");
11
- exports.gmailReplyToEmailAction = (0, pieces_framework_1.createAction)({
12
- auth: auth_1.gmailAuth,
13
- name: 'reply_to_email',
14
- displayName: 'Reply to Email',
15
- description: 'Reply to an existing email.',
16
- audience: 'both',
17
- aiMetadata: {
18
- description: 'Sends a reply to an existing email, preserving the thread and subject and addressing the original sender (reply) or all participants (reply all). Use this to respond within a known conversation; requires the Gmail message ID of the email being answered. Not idempotent: each call sends a new reply message into the thread.',
19
- idempotent: false,
20
- },
21
- props: {
22
- message_id: props_1.GmailProps.message,
23
- reply_type: pieces_framework_1.Property.StaticDropdown({
24
- displayName: 'Reply Type',
25
- description: 'Choose whether to reply to sender only or to all recipients',
26
- required: true,
27
- defaultValue: 'reply',
28
- options: {
29
- disabled: false,
30
- options: [
31
- {
32
- label: 'Reply (to sender only)',
33
- value: 'reply',
34
- },
35
- {
36
- label: 'Reply All (to all recipients)',
37
- value: 'reply_all',
38
- },
39
- ],
40
- },
41
- }),
42
- body_type: pieces_framework_1.Property.StaticDropdown({
43
- displayName: 'Body Type',
44
- required: true,
45
- defaultValue: 'plain_text',
46
- options: {
47
- disabled: false,
48
- options: [
49
- {
50
- label: 'Plain text',
51
- value: 'plain_text',
52
- },
53
- {
54
- label: 'HTML',
55
- value: 'html',
56
- },
57
- ],
58
- },
59
- }),
60
- body: pieces_framework_1.Property.LongText({
61
- displayName: 'Reply Body',
62
- description: 'Your reply message content',
63
- required: true,
64
- }),
65
- sender_name: pieces_framework_1.Property.ShortText({
66
- displayName: 'Sender Name',
67
- description: 'Optional sender name to display',
68
- required: false,
69
- }),
70
- attachment: pieces_framework_1.Property.File({
71
- displayName: 'Attachment',
72
- description: 'Optional file to attach to your reply',
73
- required: false,
74
- }),
75
- attachment_name: pieces_framework_1.Property.ShortText({
76
- displayName: 'Attachment Name',
77
- description: 'Custom name for the attachment',
78
- required: false,
79
- }),
80
- },
81
- run(context) {
82
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
83
- var _a;
84
- const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
85
- const gmail = googleapis_1.google.gmail({ version: 'v1', auth: authClient });
86
- const originalMessage = yield gmail.users.messages.get({
87
- userId: 'me',
88
- id: context.propsValue.message_id,
89
- format: 'full',
90
- });
91
- if (!originalMessage.data || !originalMessage.data.payload) {
92
- throw new Error('Could not fetch original message details');
93
- }
94
- const headers = originalMessage.data.payload.headers || [];
95
- const headerMap = headers.reduce((acc, header) => {
96
- if (header.name && header.value) {
97
- acc[header.name.toLowerCase()] = header.value;
98
- }
99
- return acc;
100
- }, {});
101
- const originalSubject = headerMap['subject'] || '';
102
- const originalFrom = headerMap['from'] || '';
103
- const originalTo = headerMap['to'] || '';
104
- const originalCc = headerMap['cc'] || '';
105
- const originalReplyTo = headerMap['reply-to'] || '';
106
- const originalMessageId = headerMap['message-id'] || '';
107
- const originalReferences = headerMap['references'] || '';
108
- const toRecipients = [];
109
- const ccRecipients = [];
110
- if (context.propsValue.reply_type === 'reply_all') {
111
- const senderEmail = originalReplyTo || originalFrom;
112
- if (senderEmail) {
113
- toRecipients.push(senderEmail);
114
- }
115
- const currentUserEmail = yield (0, auth_1.getUserEmail)(context.auth, authClient);
116
- if (originalTo) {
117
- const toEmails = originalTo.split(',').map((email) => email.trim());
118
- toRecipients.push(...toEmails.filter((email) => !email.includes(currentUserEmail || '')));
119
- }
120
- if (originalCc) {
121
- const ccEmails = originalCc.split(',').map((email) => email.trim());
122
- ccRecipients.push(...ccEmails.filter((email) => !email.includes(currentUserEmail || '')));
123
- }
124
- }
125
- else {
126
- const senderEmail = originalReplyTo || originalFrom;
127
- if (senderEmail) {
128
- toRecipients.push(senderEmail);
129
- }
130
- }
131
- let replySubject = originalSubject;
132
- if (!replySubject.toLowerCase().startsWith('re:')) {
133
- replySubject = `Re: ${replySubject}`;
134
- }
135
- let referencesHeader = originalMessageId;
136
- if (originalReferences) {
137
- referencesHeader = `${originalReferences} ${originalMessageId}`;
138
- }
139
- const senderEmail = yield (0, auth_1.getUserEmail)(context.auth, authClient);
140
- const subjectBase64 = Buffer.from(replySubject).toString('base64');
141
- const mailOptions = {
142
- to: toRecipients.join(', '),
143
- cc: ccRecipients.length > 0 ? ccRecipients.join(', ') : undefined,
144
- subject: `=?UTF-8?B?${subjectBase64}?=`,
145
- text: context.propsValue.body_type === 'plain_text'
146
- ? context.propsValue.body
147
- : undefined,
148
- html: context.propsValue.body_type === 'html'
149
- ? context.propsValue.body
150
- : undefined,
151
- attachments: [],
152
- headers: [
153
- {
154
- key: 'In-Reply-To',
155
- value: originalMessageId,
156
- },
157
- {
158
- key: 'References',
159
- value: referencesHeader,
160
- },
161
- ],
162
- };
163
- if (senderEmail) {
164
- mailOptions.from = context.propsValue.sender_name
165
- ? `${context.propsValue.sender_name} <${senderEmail}>`
166
- : senderEmail;
167
- }
168
- if (context.propsValue.attachment) {
169
- const lookupResult = mime_types_1.default.lookup(context.propsValue.attachment.extension || '');
170
- const attachmentOption = [
171
- {
172
- filename: (_a = context.propsValue.attachment_name) !== null && _a !== void 0 ? _a : context.propsValue.attachment.filename,
173
- content: context.propsValue.attachment.base64,
174
- contentType: lookupResult || undefined,
175
- encoding: 'base64',
176
- },
177
- ];
178
- mailOptions.attachments = attachmentOption;
179
- }
180
- const mail = new mail_composer_1.default(mailOptions).compile();
181
- mail.keepBcc = true;
182
- const mailBody = yield mail.build();
183
- const encodedPayload = Buffer.from(mailBody)
184
- .toString('base64')
185
- .replace(/\+/g, '-')
186
- .replace(/\//g, '_');
187
- const response = yield gmail.users.messages.send({
188
- userId: 'me',
189
- requestBody: {
190
- threadId: originalMessage.data.threadId || undefined,
191
- raw: encodedPayload,
192
- },
193
- });
194
- return response.data;
195
- });
196
- },
197
- });
198
- //# sourceMappingURL=reply-to-email-action.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reply-to-email-action.js","sourceRoot":"","sources":["../../../../src/lib/actions/reply-to-email-action.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- export declare const requestApprovalInEmail: import("@activepieces/pieces-framework").IAction<(import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
2
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
3
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
4
- }>)[], {
5
- receiver: import("@activepieces/pieces-framework").ShortTextProperty<true>;
6
- cc: import("@activepieces/pieces-framework").ArrayProperty<false>;
7
- bcc: import("@activepieces/pieces-framework").ArrayProperty<false>;
8
- subject: import("@activepieces/pieces-framework").ShortTextProperty<true>;
9
- body: import("@activepieces/pieces-framework").ShortTextProperty<true>;
10
- reply_to: import("@activepieces/pieces-framework").ArrayProperty<false>;
11
- sender_name: import("@activepieces/pieces-framework").ShortTextProperty<false>;
12
- from: import("@activepieces/pieces-framework").ShortTextProperty<false>;
13
- in_reply_to: import("@activepieces/pieces-framework").ShortTextProperty<false>;
14
- }>;
15
- //# sourceMappingURL=request-approval-in-email.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-approval-in-email.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/request-approval-in-email.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;EA2LjC,CAAC"}
@@ -1,175 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.requestApprovalInEmail = void 0;
4
- const tslib_1 = require("tslib");
5
- const pieces_framework_1 = require("@activepieces/pieces-framework");
6
- const auth_1 = require("../auth");
7
- const googleapis_1 = require("googleapis");
8
- const mail_composer_1 = tslib_1.__importDefault(require("nodemailer/lib/mail-composer"));
9
- const shared_1 = require("@activepieces/shared");
10
- exports.requestApprovalInEmail = (0, pieces_framework_1.createAction)({
11
- auth: auth_1.gmailAuth,
12
- name: 'request_approval_in_mail',
13
- displayName: 'Request Approval in Email',
14
- description: 'Send approval request email and then wait until the email is approved or disapproved',
15
- audience: 'both',
16
- aiMetadata: {
17
- description: 'Sends an email containing Approve and Disapprove links to a recipient, then pauses the flow until the recipient clicks one, resuming with their decision. Use this as a human-in-the-loop gate before proceeding with a sensitive action. The flow blocks indefinitely until a response arrives. Not idempotent: each call sends a new approval email and creates a new wait.',
18
- idempotent: false,
19
- },
20
- props: {
21
- receiver: pieces_framework_1.Property.ShortText({
22
- displayName: 'Receiver Email (To)',
23
- description: 'The email address of the recipient who will receive the approval request.',
24
- required: true,
25
- }),
26
- cc: pieces_framework_1.Property.Array({
27
- displayName: 'CC Email',
28
- description: 'The email addresses of the recipients who will receive a carbon copy of the approval request.',
29
- required: false,
30
- }),
31
- bcc: pieces_framework_1.Property.Array({
32
- displayName: 'BCC Email',
33
- description: 'The email addresses of the recipients who will receive a blind carbon copy of the approval request.',
34
- required: false,
35
- }),
36
- subject: pieces_framework_1.Property.ShortText({
37
- displayName: 'Subject',
38
- description: 'The subject of the approval request email.',
39
- required: true,
40
- }),
41
- body: pieces_framework_1.Property.ShortText({
42
- displayName: 'Body',
43
- description: 'Body for the email you want to send',
44
- required: true,
45
- }),
46
- reply_to: pieces_framework_1.Property.Array({
47
- displayName: 'Reply-To Email',
48
- description: 'Email address to set as the "Reply-To" header',
49
- required: false,
50
- }),
51
- sender_name: pieces_framework_1.Property.ShortText({
52
- displayName: 'Sender Name',
53
- required: false,
54
- }),
55
- from: pieces_framework_1.Property.ShortText({
56
- displayName: 'Sender Email',
57
- description: "The address must be listed in your GMail account's settings",
58
- required: false,
59
- }),
60
- in_reply_to: pieces_framework_1.Property.ShortText({
61
- displayName: 'In reply to',
62
- description: 'Reply to this Message-ID',
63
- required: false,
64
- }),
65
- },
66
- run(context) {
67
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
68
- var _a, _b, _c, _d;
69
- if (context.executionType === shared_1.ExecutionType.BEGIN) {
70
- try {
71
- const token = yield (0, auth_1.getAccessToken)(context.auth);
72
- const { subject, body } = context.propsValue;
73
- (0, shared_1.assertNotNullOrUndefined)(token, 'token');
74
- (0, shared_1.assertNotNullOrUndefined)(context.propsValue.receiver, 'receiver');
75
- (0, shared_1.assertNotNullOrUndefined)(subject, 'subject');
76
- (0, shared_1.assertNotNullOrUndefined)(body, 'body');
77
- const waitpoint = yield context.run.createWaitpoint({
78
- type: 'WEBHOOK',
79
- });
80
- const approvalLink = waitpoint.buildResumeUrl({
81
- queryParams: { action: 'approve' },
82
- });
83
- const disapprovalLink = waitpoint.buildResumeUrl({
84
- queryParams: { action: 'disapprove' },
85
- });
86
- const htmlBody = `
87
- <div>
88
- <p>${body}</p>
89
- <br />
90
- <p>
91
- <a href="${approvalLink}" style="display: inline-block; padding: 10px 20px; margin-right: 10px; background-color: #2acc50; color: white; text-decoration: none; border-radius: 4px;">Approve</a>
92
- <a href="${disapprovalLink}" style="display: inline-block; padding: 10px 20px; background-color: #e4172b; color: white; text-decoration: none; border-radius: 4px;">Disapprove</a>
93
- </p>
94
- </div>
95
- `;
96
- const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
97
- const gmail = googleapis_1.google.gmail({ version: 'v1', auth: authClient });
98
- const subjectBase64 = Buffer.from(context.propsValue['subject']).toString('base64');
99
- const replyTo = (_a = context.propsValue['reply_to']) === null || _a === void 0 ? void 0 : _a.filter((email) => email !== '');
100
- const receiverEmail = context.propsValue.receiver;
101
- const cc = (_b = context.propsValue['cc']) === null || _b === void 0 ? void 0 : _b.filter((email) => email !== '');
102
- const bcc = (_c = context.propsValue['bcc']) === null || _c === void 0 ? void 0 : _c.filter((email) => email !== '');
103
- const mailOptions = {
104
- to: receiverEmail,
105
- cc: cc ? cc.join(', ') : undefined,
106
- bcc: bcc ? bcc.join(', ') : undefined,
107
- subject: `=?UTF-8?B?${subjectBase64}?=`,
108
- replyTo: replyTo ? replyTo.join(', ') : '',
109
- // text:
110
- // context.propsValue.body_type === 'plain_text'
111
- // ? context.propsValue['body']
112
- // : undefined,
113
- html: htmlBody,
114
- attachments: [],
115
- };
116
- const senderEmail = context.propsValue.from ||
117
- (yield (0, auth_1.getUserEmail)(context.auth, authClient));
118
- if (senderEmail) {
119
- mailOptions.from = context.propsValue.sender_name
120
- ? `${context.propsValue['sender_name']} <${senderEmail}>`
121
- : senderEmail;
122
- }
123
- let threadId = undefined;
124
- if (context.propsValue.in_reply_to) {
125
- mailOptions.headers = [
126
- {
127
- key: 'References',
128
- value: context.propsValue.in_reply_to,
129
- },
130
- {
131
- key: 'In-Reply-To',
132
- value: context.propsValue.in_reply_to,
133
- },
134
- ];
135
- const messages = yield gmail.users.messages.list({
136
- userId: 'me',
137
- q: `Rfc822msgid:${context.propsValue.in_reply_to}`,
138
- });
139
- threadId = (_d = messages.data.messages) === null || _d === void 0 ? void 0 : _d[0].threadId;
140
- }
141
- const mail = new mail_composer_1.default(mailOptions).compile();
142
- mail.keepBcc = true;
143
- const mailBody = yield mail.build();
144
- const encodedPayload = Buffer.from(mailBody)
145
- .toString('base64')
146
- .replace(/\+/g, '-')
147
- .replace(/\//g, '_');
148
- yield gmail.users.messages.send({
149
- userId: 'me',
150
- requestBody: {
151
- threadId,
152
- raw: encodedPayload,
153
- },
154
- });
155
- context.run.waitForWaitpoint(waitpoint.id);
156
- return {
157
- approved: false, // default approval is false
158
- };
159
- }
160
- catch (error) {
161
- console.error('[RequestApprovalEmail] Error during BEGIN execution:', error);
162
- throw error;
163
- }
164
- }
165
- else {
166
- const action = context.resumePayload.queryParams['action'];
167
- const approved = action === 'approve';
168
- return {
169
- approved,
170
- };
171
- }
172
- });
173
- },
174
- });
175
- //# sourceMappingURL=request-approval-in-email.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"request-approval-in-email.js","sourceRoot":"","sources":["../../../../src/lib/actions/request-approval-in-email.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { GmailLabel } from '../common/models';
2
- export declare const gmailSearchMailAction: import("@activepieces/pieces-framework").IAction<(import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
3
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
4
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
5
- }>)[], {
6
- from: import("@activepieces/pieces-framework").ShortTextProperty<false>;
7
- to: import("@activepieces/pieces-framework").ShortTextProperty<false>;
8
- subject: import("@activepieces/pieces-framework").ShortTextProperty<false>;
9
- content: import("@activepieces/pieces-framework").ShortTextProperty<false>;
10
- has_attachment: import("@activepieces/pieces-framework").CheckboxProperty<false>;
11
- attachment_name: import("@activepieces/pieces-framework").ShortTextProperty<false>;
12
- label: import("@activepieces/pieces-framework").DropdownProperty<GmailLabel, false, (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
13
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
14
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
15
- }>)[]>;
16
- category: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
17
- after_date: import("@activepieces/pieces-framework").DateTimeProperty<false>;
18
- before_date: import("@activepieces/pieces-framework").DateTimeProperty<false>;
19
- include_spam_trash: import("@activepieces/pieces-framework").CheckboxProperty<false>;
20
- max_results: import("@activepieces/pieces-framework").NumberProperty<false>;
21
- }>;
22
- //# sourceMappingURL=search-email-action.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-email-action.d.ts","sourceRoot":"","sources":["../../../../src/lib/actions/search-email-action.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;EAiNhC,CAAC"}
@@ -1,175 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.gmailSearchMailAction = void 0;
4
- const tslib_1 = require("tslib");
5
- const pieces_framework_1 = require("@activepieces/pieces-framework");
6
- const auth_1 = require("../auth");
7
- const googleapis_1 = require("googleapis");
8
- const data_1 = require("../common/data");
9
- const props_1 = require("../common/props");
10
- exports.gmailSearchMailAction = (0, pieces_framework_1.createAction)({
11
- auth: auth_1.gmailAuth,
12
- name: 'gmail_search_mail',
13
- displayName: 'Find Email',
14
- description: 'Find emails using advanced search criteria. If no filters are provided, the latest emails are returned.',
15
- audience: 'both',
16
- aiMetadata: {
17
- description: 'Searches the mailbox for emails matching combinable filters (sender, recipient, subject, body text, label, category, date range, attachment presence/name) and returns the matched messages with parsed contents. Use this to locate messages or discover their IDs before reading or replying; with no filters it returns the most recent emails. Bound results with Max Results (1-500, default 10). Idempotent: a read-only search that does not modify the mailbox.',
18
- idempotent: true,
19
- },
20
- props: {
21
- from: props_1.GmailProps.from,
22
- to: props_1.GmailProps.to,
23
- subject: props_1.GmailProps.subject,
24
- content: pieces_framework_1.Property.ShortText({
25
- displayName: 'Email Content',
26
- description: 'Search for specific text within email body',
27
- required: false,
28
- }),
29
- has_attachment: pieces_framework_1.Property.Checkbox({
30
- displayName: 'Has Attachment',
31
- description: 'Only find emails with attachments',
32
- required: false,
33
- defaultValue: false,
34
- }),
35
- attachment_name: pieces_framework_1.Property.ShortText({
36
- displayName: 'Attachment Name',
37
- description: 'Search for emails with specific attachment filename',
38
- required: false,
39
- }),
40
- label: props_1.GmailProps.label,
41
- category: props_1.GmailProps.category,
42
- after_date: pieces_framework_1.Property.DateTime({
43
- displayName: 'After Date',
44
- description: 'Find emails sent after this date',
45
- required: false,
46
- }),
47
- before_date: pieces_framework_1.Property.DateTime({
48
- displayName: 'Before Date',
49
- description: 'Find emails sent before this date',
50
- required: false,
51
- }),
52
- include_spam_trash: pieces_framework_1.Property.Checkbox({
53
- displayName: 'Include Spam & Trash',
54
- description: 'Include emails from Spam and Trash folders in search results',
55
- required: false,
56
- defaultValue: false,
57
- }),
58
- max_results: pieces_framework_1.Property.Number({
59
- displayName: 'Max Results',
60
- description: 'Maximum number of emails to return (1-500)',
61
- required: false,
62
- defaultValue: 10,
63
- }),
64
- },
65
- run(context) {
66
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
67
- var _a, _b, _c, _d, _e, _f, _g;
68
- const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
69
- const gmail = googleapis_1.google.gmail({ version: 'v1', auth: authClient });
70
- const queryParts = [];
71
- if ((_a = context.propsValue.from) === null || _a === void 0 ? void 0 : _a.trim()) {
72
- queryParts.push(`from:(${context.propsValue.from.trim()})`);
73
- }
74
- if ((_b = context.propsValue.to) === null || _b === void 0 ? void 0 : _b.trim()) {
75
- queryParts.push(`to:(${context.propsValue.to.trim()})`);
76
- }
77
- if ((_c = context.propsValue.subject) === null || _c === void 0 ? void 0 : _c.trim()) {
78
- queryParts.push(`subject:(${context.propsValue.subject.trim()})`);
79
- }
80
- if ((_d = context.propsValue.content) === null || _d === void 0 ? void 0 : _d.trim()) {
81
- queryParts.push(`"${context.propsValue.content.trim()}"`);
82
- }
83
- if (context.propsValue.has_attachment) {
84
- queryParts.push('has:attachment');
85
- }
86
- if ((_e = context.propsValue.attachment_name) === null || _e === void 0 ? void 0 : _e.trim()) {
87
- queryParts.push(`filename:(${context.propsValue.attachment_name.trim()})`);
88
- }
89
- if (context.propsValue.label) {
90
- const label = context.propsValue.label;
91
- queryParts.push(`label:${label.name}`);
92
- }
93
- if ((_f = context.propsValue.category) === null || _f === void 0 ? void 0 : _f.trim()) {
94
- queryParts.push(`category:${context.propsValue.category.trim()}`);
95
- }
96
- if (context.propsValue.after_date) {
97
- const afterDate = new Date(context.propsValue.after_date);
98
- const afterDateStr = afterDate
99
- .toISOString()
100
- .split('T')[0]
101
- .replace(/-/g, '/');
102
- queryParts.push(`after:${afterDateStr}`);
103
- }
104
- if (context.propsValue.before_date) {
105
- const beforeDate = new Date(context.propsValue.before_date);
106
- const beforeDateStr = beforeDate
107
- .toISOString()
108
- .split('T')[0]
109
- .replace(/-/g, '/');
110
- queryParts.push(`before:${beforeDateStr}`);
111
- }
112
- const searchQuery = queryParts.join(' ');
113
- const maxResults = Math.min(Math.max(context.propsValue.max_results || 10, 1), 500);
114
- try {
115
- const searchResponse = yield gmail.users.messages.list(Object.assign(Object.assign({ userId: 'me' }, (searchQuery.trim() ? { q: searchQuery } : {})), { maxResults: maxResults, includeSpamTrash: context.propsValue.include_spam_trash }));
116
- const messages = searchResponse.data.messages || [];
117
- if (messages.length === 0) {
118
- return {
119
- found: false,
120
- results: {
121
- messages: [],
122
- count: 0,
123
- },
124
- };
125
- }
126
- const detailedMessages = yield Promise.all(messages.map((message) => tslib_1.__awaiter(this, void 0, void 0, function* () {
127
- try {
128
- const rawMailResponse = yield gmail.users.messages.get({
129
- userId: 'me',
130
- id: message.id,
131
- format: 'raw',
132
- });
133
- const parsedMailResponse = yield (0, data_1.parseStream)(Buffer.from(rawMailResponse.data.raw, 'base64').toString('utf-8'));
134
- return Object.assign(Object.assign({ id: message.id }, parsedMailResponse), { attachments: yield (0, data_1.convertAttachment)(parsedMailResponse.attachments, context.files) });
135
- }
136
- catch (error) {
137
- console.error(`Failed to get details for message ${message.id}:`, error);
138
- return {
139
- id: message.id,
140
- threadId: message.threadId,
141
- error: 'Failed to retrieve message details',
142
- };
143
- }
144
- })));
145
- return {
146
- found: true,
147
- results: {
148
- messages: detailedMessages,
149
- count: detailedMessages.length,
150
- },
151
- };
152
- }
153
- catch (error) {
154
- // Enhanced error handling
155
- if (error.code === 400) {
156
- if ((_g = error.message) === null || _g === void 0 ? void 0 : _g.includes('Invalid query')) {
157
- throw new Error(`Invalid search query: "${searchQuery}". Please check your search syntax.`);
158
- }
159
- throw new Error(`Invalid search request: ${error.message}`);
160
- }
161
- else if (error.code === 403) {
162
- throw new Error('Insufficient permissions to search emails. Ensure the gmail.readonly scope is granted.');
163
- }
164
- else if (error.code === 429) {
165
- throw new Error('Gmail API rate limit exceeded. Please try again later.');
166
- }
167
- else if (error.code === 500) {
168
- throw new Error('Gmail API server error. Please try again later.');
169
- }
170
- throw new Error(`Failed to search emails: ${error.message}`);
171
- }
172
- });
173
- },
174
- });
175
- //# sourceMappingURL=search-email-action.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-email-action.js","sourceRoot":"","sources":["../../../../src/lib/actions/search-email-action.ts"],"names":[],"mappings":"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"}