@activepieces/piece-gmail 0.12.4 → 0.12.6

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 -260
  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 -35
  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 -193
  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 -170
  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 -170
  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 -187
  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 -139
  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 -128
  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 -75
  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 -138
  69. package/src/lib/triggers/new-labeled-email.js.map +0 -1
@@ -1,99 +0,0 @@
1
- import { TriggerStrategy } from '@activepieces/pieces-framework';
2
- export declare const gmailNewLabeledEmailTrigger: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, (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
- label: {
7
- required: true;
8
- displayName: string;
9
- description?: string | undefined;
10
- auth: (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
11
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
12
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
13
- }>)[];
14
- refreshers: string[];
15
- refreshOnSearch?: boolean;
16
- options: (propsValue: Record<string, unknown> & {
17
- auth?: import("@activepieces/shared").OAuth2ConnectionValueWithApp | import("@activepieces/shared").CustomAuthConnectionValue<import("@activepieces/pieces-framework").StaticPropsValue<{
18
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
19
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
20
- }>> | undefined;
21
- }, ctx: import("@activepieces/pieces-framework").PropertyContext) => Promise<import("@activepieces/pieces-framework").DropdownState<import("../common/models").GmailLabel>>;
22
- valueSchema: import("../common/models").GmailLabel;
23
- type: import("@activepieces/pieces-framework").PropertyType.DROPDOWN;
24
- defaultValue?: unknown;
25
- };
26
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
27
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
28
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
29
- }>)[], {
30
- label: {
31
- required: true;
32
- displayName: string;
33
- description?: string | undefined;
34
- auth: (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
35
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
36
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
37
- }>)[];
38
- refreshers: string[];
39
- refreshOnSearch?: boolean;
40
- options: (propsValue: Record<string, unknown> & {
41
- auth?: import("@activepieces/shared").OAuth2ConnectionValueWithApp | import("@activepieces/shared").CustomAuthConnectionValue<import("@activepieces/pieces-framework").StaticPropsValue<{
42
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
43
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
44
- }>> | undefined;
45
- }, ctx: import("@activepieces/pieces-framework").PropertyContext) => Promise<import("@activepieces/pieces-framework").DropdownState<import("../common/models").GmailLabel>>;
46
- valueSchema: import("../common/models").GmailLabel;
47
- type: import("@activepieces/pieces-framework").PropertyType.DROPDOWN;
48
- defaultValue?: unknown;
49
- };
50
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.MANUAL, (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
51
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
52
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
53
- }>)[], {
54
- label: {
55
- required: true;
56
- displayName: string;
57
- description?: string | undefined;
58
- auth: (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
59
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
60
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
61
- }>)[];
62
- refreshers: string[];
63
- refreshOnSearch?: boolean;
64
- options: (propsValue: Record<string, unknown> & {
65
- auth?: import("@activepieces/shared").OAuth2ConnectionValueWithApp | import("@activepieces/shared").CustomAuthConnectionValue<import("@activepieces/pieces-framework").StaticPropsValue<{
66
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
67
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
68
- }>> | undefined;
69
- }, ctx: import("@activepieces/pieces-framework").PropertyContext) => Promise<import("@activepieces/pieces-framework").DropdownState<import("../common/models").GmailLabel>>;
70
- valueSchema: import("../common/models").GmailLabel;
71
- type: import("@activepieces/pieces-framework").PropertyType.DROPDOWN;
72
- defaultValue?: unknown;
73
- };
74
- }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
75
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
76
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
77
- }>)[], {
78
- label: {
79
- required: true;
80
- displayName: string;
81
- description?: string | undefined;
82
- auth: (import("@activepieces/pieces-framework").OAuth2Property<import("@activepieces/pieces-framework").OAuth2Props> | import("@activepieces/pieces-framework").CustomAuthProperty<{
83
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
84
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
85
- }>)[];
86
- refreshers: string[];
87
- refreshOnSearch?: boolean;
88
- options: (propsValue: Record<string, unknown> & {
89
- auth?: import("@activepieces/shared").OAuth2ConnectionValueWithApp | import("@activepieces/shared").CustomAuthConnectionValue<import("@activepieces/pieces-framework").StaticPropsValue<{
90
- serviceAccount: import("@activepieces/pieces-framework").LongTextProperty<true>;
91
- userEmail: import("@activepieces/pieces-framework").ShortTextProperty<true>;
92
- }>> | undefined;
93
- }, ctx: import("@activepieces/pieces-framework").PropertyContext) => Promise<import("@activepieces/pieces-framework").DropdownState<import("../common/models").GmailLabel>>;
94
- valueSchema: import("../common/models").GmailLabel;
95
- type: import("@activepieces/pieces-framework").PropertyType.DROPDOWN;
96
- defaultValue?: unknown;
97
- };
98
- }>;
99
- //# sourceMappingURL=new-labeled-email.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-labeled-email.d.ts","sourceRoot":"","sources":["../../../../src/lib/triggers/new-labeled-email.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EAEhB,MAAM,gCAAgC,CAAC;AAmDxC,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwItC,CAAC"}
@@ -1,138 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.gmailNewLabeledEmailTrigger = void 0;
4
- const tslib_1 = require("tslib");
5
- const pieces_framework_1 = require("@activepieces/pieces-framework");
6
- const props_1 = require("../common/props");
7
- const auth_1 = require("../auth");
8
- const googleapis_1 = require("googleapis");
9
- const data_1 = require("../common/data");
10
- function enrichGmailMessage(_a) {
11
- return tslib_1.__awaiter(this, arguments, void 0, function* ({ gmail, messageId, files, labelInfo, }) {
12
- const rawMailResponse = yield gmail.users.messages.get({
13
- userId: 'me',
14
- id: messageId,
15
- format: 'raw',
16
- });
17
- const threadResponse = yield gmail.users.threads.get({
18
- userId: 'me',
19
- id: rawMailResponse.data.threadId,
20
- });
21
- const parsedMailResponse = yield (0, data_1.parseStream)(Buffer.from(rawMailResponse.data.raw, 'base64').toString('utf-8'));
22
- return {
23
- message: Object.assign(Object.assign({}, parsedMailResponse), { attachments: yield (0, data_1.convertAttachment)(parsedMailResponse.attachments, files) }),
24
- thread: threadResponse.data,
25
- labelInfo: Object.assign(Object.assign({}, labelInfo), { addedAt: Date.now() }),
26
- };
27
- });
28
- }
29
- exports.gmailNewLabeledEmailTrigger = (0, pieces_framework_1.createTrigger)({
30
- auth: auth_1.gmailAuth,
31
- name: 'new_labeled_email',
32
- displayName: 'New Labeled Email',
33
- description: 'Triggers when a label is added to an email',
34
- props: {
35
- label: Object.assign(Object.assign({}, props_1.GmailProps.label), { required: true }),
36
- },
37
- sampleData: {},
38
- type: pieces_framework_1.TriggerStrategy.POLLING,
39
- onEnable: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
40
- const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
41
- const gmail = googleapis_1.google.gmail({ version: 'v1', auth: authClient });
42
- const profile = yield gmail.users.getProfile({
43
- userId: 'me',
44
- });
45
- yield context.store.put('lastHistoryId', profile.data.historyId);
46
- }),
47
- onDisable: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
48
- yield context.store.delete('lastHistoryId');
49
- }),
50
- run: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
51
- var _a, _b, _c, _d, _e, _f;
52
- const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
53
- const gmail = googleapis_1.google.gmail({ version: 'v1', auth: authClient });
54
- const lastHistoryId = yield context.store.get('lastHistoryId');
55
- const historyResponse = yield gmail.users.history.list({
56
- userId: 'me',
57
- startHistoryId: lastHistoryId,
58
- labelId: context.propsValue.label.id,
59
- historyTypes: ['labelAdded', 'messageAdded'],
60
- });
61
- const labeledMessages = new Map();
62
- const results = [];
63
- if (historyResponse.data.history) {
64
- for (const history of historyResponse.data.history) {
65
- if (history.labelsAdded) {
66
- for (const labelAdded of history.labelsAdded) {
67
- if (((_a = labelAdded.labelIds) === null || _a === void 0 ? void 0 : _a.includes(context.propsValue.label.id)) &&
68
- ((_b = labelAdded.message) === null || _b === void 0 ? void 0 : _b.id)) {
69
- labeledMessages.set(labelAdded.message.id, ((_c = history.id) === null || _c === void 0 ? void 0 : _c.toString()) || '');
70
- }
71
- }
72
- }
73
- else if (history.messagesAdded) {
74
- for (const messageAdded of history.messagesAdded) {
75
- if (((_d = messageAdded.message) === null || _d === void 0 ? void 0 : _d.id) &&
76
- ((_e = messageAdded.message.labelIds) === null || _e === void 0 ? void 0 : _e.includes(context.propsValue.label.id))) {
77
- labeledMessages.set(messageAdded.message.id, ((_f = history.id) === null || _f === void 0 ? void 0 : _f.toString()) || '');
78
- }
79
- }
80
- }
81
- }
82
- }
83
- for (const [messageId, historyId] of labeledMessages) {
84
- const enrichedMessage = yield enrichGmailMessage({
85
- gmail,
86
- messageId,
87
- files: context.files,
88
- labelInfo: {
89
- labelId: context.propsValue.label.id,
90
- labelName: context.propsValue.label.name,
91
- },
92
- });
93
- if (lastHistoryId !== historyId) {
94
- results.push({
95
- id: historyId,
96
- data: enrichedMessage,
97
- });
98
- }
99
- }
100
- if (historyResponse.data.historyId) {
101
- yield context.store.put('lastHistoryId', historyResponse.data.historyId);
102
- }
103
- return results;
104
- }),
105
- test: (context) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
106
- const authClient = yield (0, auth_1.createGoogleClient)(context.auth);
107
- const gmail = googleapis_1.google.gmail({ version: 'v1', auth: authClient });
108
- const messagesResponse = yield gmail.users.messages.list({
109
- userId: 'me',
110
- labelIds: [context.propsValue.label.id],
111
- maxResults: 5,
112
- });
113
- const results = [];
114
- if (messagesResponse.data.messages) {
115
- for (const message of messagesResponse.data.messages) {
116
- const messageId = message.id;
117
- if (!messageId) {
118
- continue;
119
- }
120
- const enrichedMessage = yield enrichGmailMessage({
121
- gmail,
122
- messageId: messageId,
123
- files: context.files,
124
- labelInfo: {
125
- labelId: context.propsValue.label.id,
126
- labelName: context.propsValue.label.name,
127
- },
128
- });
129
- results.push({
130
- id: messageId,
131
- data: enrichedMessage,
132
- });
133
- }
134
- }
135
- return results;
136
- }),
137
- });
138
- //# sourceMappingURL=new-labeled-email.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-labeled-email.js","sourceRoot":"","sources":["../../../../src/lib/triggers/new-labeled-email.ts"],"names":[],"mappings":"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"}