piece-signal-cli-rest-api 0.2.0 → 0.2.1
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/package.json +26 -4
- package/src/index.d.ts +8 -0
- package/src/index.js +90 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/add-admins-to-group.d.ts +12 -0
- package/src/lib/actions/add-admins-to-group.js +45 -0
- package/src/lib/actions/add-admins-to-group.js.map +1 -0
- package/src/lib/actions/add-device.d.ts +11 -0
- package/src/lib/actions/add-device.js +40 -0
- package/src/lib/actions/add-device.js.map +1 -0
- package/src/lib/actions/add-members-to-group.d.ts +12 -0
- package/src/lib/actions/add-members-to-group.js +45 -0
- package/src/lib/actions/add-members-to-group.js.map +1 -0
- package/src/lib/actions/block-group.d.ts +11 -0
- package/src/lib/actions/block-group.js +37 -0
- package/src/lib/actions/block-group.js.map +1 -0
- package/src/lib/actions/create-group.d.ts +18 -0
- package/src/lib/actions/create-group.js +117 -0
- package/src/lib/actions/create-group.js.map +1 -0
- package/src/lib/actions/delete-group.d.ts +11 -0
- package/src/lib/actions/delete-group.js +37 -0
- package/src/lib/actions/delete-group.js.map +1 -0
- package/src/lib/actions/get-contact.d.ts +11 -0
- package/src/lib/actions/get-contact.js +37 -0
- package/src/lib/actions/get-contact.js.map +1 -0
- package/src/lib/actions/get-group.d.ts +11 -0
- package/src/lib/actions/get-group.js +37 -0
- package/src/lib/actions/get-group.js.map +1 -0
- package/src/lib/actions/get-qr-code-link.d.ts +11 -0
- package/src/lib/actions/get-qr-code-link.js +60 -0
- package/src/lib/actions/get-qr-code-link.js.map +1 -0
- package/src/lib/actions/join-group.d.ts +11 -0
- package/src/lib/actions/join-group.js +37 -0
- package/src/lib/actions/join-group.js.map +1 -0
- package/src/lib/actions/list-accounts.d.ts +8 -0
- package/src/lib/actions/list-accounts.js +23 -0
- package/src/lib/actions/list-accounts.js.map +1 -0
- package/src/lib/actions/list-attachments.d.ts +8 -0
- package/src/lib/actions/list-attachments.js +23 -0
- package/src/lib/actions/list-attachments.js.map +1 -0
- package/src/lib/actions/list-contacts.d.ts +10 -0
- package/src/lib/actions/list-contacts.js +32 -0
- package/src/lib/actions/list-contacts.js.map +1 -0
- package/src/lib/actions/list-devices.d.ts +10 -0
- package/src/lib/actions/list-devices.js +32 -0
- package/src/lib/actions/list-devices.js.map +1 -0
- package/src/lib/actions/list-groups.d.ts +10 -0
- package/src/lib/actions/list-groups.js +32 -0
- package/src/lib/actions/list-groups.js.map +1 -0
- package/src/lib/actions/list-identities.d.ts +10 -0
- package/src/lib/actions/list-identities.js +32 -0
- package/src/lib/actions/list-identities.js.map +1 -0
- package/src/lib/actions/quit-group.d.ts +11 -0
- package/src/lib/actions/quit-group.js +37 -0
- package/src/lib/actions/quit-group.js.map +1 -0
- package/src/lib/actions/receive-messages.d.ts +15 -0
- package/src/lib/actions/receive-messages.js +100 -0
- package/src/lib/actions/receive-messages.js.map +1 -0
- package/src/lib/actions/remote-delete-message.d.ts +12 -0
- package/src/lib/actions/remote-delete-message.js +46 -0
- package/src/lib/actions/remote-delete-message.js.map +1 -0
- package/src/lib/actions/remove-admins-from-group.d.ts +12 -0
- package/src/lib/actions/remove-admins-from-group.js +45 -0
- package/src/lib/actions/remove-admins-from-group.js.map +1 -0
- package/src/lib/actions/remove-device.d.ts +11 -0
- package/src/lib/actions/remove-device.js +37 -0
- package/src/lib/actions/remove-device.js.map +1 -0
- package/src/lib/actions/remove-members-from-group.d.ts +12 -0
- package/src/lib/actions/remove-members-from-group.js +45 -0
- package/src/lib/actions/remove-members-from-group.js.map +1 -0
- package/src/lib/actions/remove-reaction.d.ts +13 -0
- package/src/lib/actions/remove-reaction.js +52 -0
- package/src/lib/actions/remove-reaction.js.map +1 -0
- package/src/lib/actions/request-approval-message.d.ts +15 -0
- package/src/lib/actions/request-approval-message.js +184 -0
- package/src/lib/actions/request-approval-message.js.map +1 -0
- package/src/lib/actions/resume-approval-flow.d.ts +11 -0
- package/src/lib/actions/resume-approval-flow.js +181 -0
- package/src/lib/actions/resume-approval-flow.js.map +1 -0
- package/src/lib/actions/search-numbers.d.ts +11 -0
- package/src/lib/actions/search-numbers.js +42 -0
- package/src/lib/actions/search-numbers.js.map +1 -0
- package/src/lib/actions/send-message.d.ts +27 -0
- package/src/lib/actions/send-message.js +176 -0
- package/src/lib/actions/send-message.js.map +1 -0
- package/src/lib/actions/send-reaction.d.ts +14 -0
- package/src/lib/actions/send-reaction.js +58 -0
- package/src/lib/actions/send-reaction.js.map +1 -0
- package/src/lib/actions/send-receipt.d.ts +13 -0
- package/src/lib/actions/send-receipt.js +58 -0
- package/src/lib/actions/send-receipt.js.map +1 -0
- package/src/lib/actions/start-typing.d.ts +11 -0
- package/src/lib/actions/start-typing.js +40 -0
- package/src/lib/actions/start-typing.js.map +1 -0
- package/src/lib/actions/stop-typing.d.ts +11 -0
- package/src/lib/actions/stop-typing.js +40 -0
- package/src/lib/actions/stop-typing.js.map +1 -0
- package/src/lib/actions/sync-contacts.d.ts +10 -0
- package/src/lib/actions/sync-contacts.js +32 -0
- package/src/lib/actions/sync-contacts.js.map +1 -0
- package/src/lib/actions/update-account-settings.d.ts +12 -0
- package/src/lib/actions/update-account-settings.js +49 -0
- package/src/lib/actions/update-account-settings.js.map +1 -0
- package/src/lib/actions/update-contact.d.ts +13 -0
- package/src/lib/actions/update-contact.js +56 -0
- package/src/lib/actions/update-contact.js.map +1 -0
- package/src/lib/actions/update-group.d.ts +19 -0
- package/src/lib/actions/update-group.js +125 -0
- package/src/lib/actions/update-group.js.map +1 -0
- package/src/lib/actions/update-profile.d.ts +13 -0
- package/src/lib/actions/update-profile.js +56 -0
- package/src/lib/actions/update-profile.js.map +1 -0
- package/src/lib/common/api-client.d.ts +24 -0
- package/src/lib/common/api-client.js +103 -0
- package/src/lib/common/api-client.js.map +1 -0
- package/src/lib/common/auth.d.ts +8 -0
- package/src/lib/common/auth.js +68 -0
- package/src/lib/common/auth.js.map +1 -0
- package/src/lib/common/message-utils.d.ts +81 -0
- package/src/lib/common/message-utils.js +327 -0
- package/src/lib/common/message-utils.js.map +1 -0
- package/src/lib/common/types.d.ts +65 -0
- package/src/lib/common/types.js +3 -0
- package/src/lib/common/types.js.map +1 -0
- package/src/lib/common/utils.d.ts +23 -0
- package/src/lib/common/utils.js +105 -0
- package/src/lib/common/utils.js.map +1 -0
- package/src/lib/triggers/new-group-member.d.ts +50 -0
- package/src/lib/triggers/new-group-member.js +155 -0
- package/src/lib/triggers/new-group-member.js.map +1 -0
- package/src/lib/triggers/new-message-received.d.ts +58 -0
- package/src/lib/triggers/new-message-received.js +469 -0
- package/src/lib/triggers/new-message-received.js.map +1 -0
- package/project.json +0 -58
- package/src/index.ts +0 -87
- package/src/lib/actions/add-admins-to-group.ts +0 -50
- package/src/lib/actions/add-device.ts +0 -45
- package/src/lib/actions/add-members-to-group.ts +0 -50
- package/src/lib/actions/block-group.ts +0 -36
- package/src/lib/actions/create-group.ts +0 -139
- package/src/lib/actions/delete-group.ts +0 -36
- package/src/lib/actions/get-contact.ts +0 -42
- package/src/lib/actions/get-group.ts +0 -37
- package/src/lib/actions/get-qr-code-link.ts +0 -62
- package/src/lib/actions/join-group.ts +0 -36
- package/src/lib/actions/list-accounts.ts +0 -20
- package/src/lib/actions/list-attachments.ts +0 -20
- package/src/lib/actions/list-contacts.ts +0 -37
- package/src/lib/actions/list-devices.ts +0 -38
- package/src/lib/actions/list-groups.ts +0 -32
- package/src/lib/actions/list-identities.ts +0 -32
- package/src/lib/actions/quit-group.ts +0 -36
- package/src/lib/actions/receive-messages.ts +0 -108
- package/src/lib/actions/remote-delete-message.ts +0 -56
- package/src/lib/actions/remove-admins-from-group.ts +0 -50
- package/src/lib/actions/remove-device.ts +0 -36
- package/src/lib/actions/remove-members-from-group.ts +0 -50
- package/src/lib/actions/remove-reaction.ts +0 -59
- package/src/lib/actions/request-approval-message.ts +0 -215
- package/src/lib/actions/search-numbers.ts +0 -47
- package/src/lib/actions/send-message.ts +0 -189
- package/src/lib/actions/send-reaction.ts +0 -66
- package/src/lib/actions/send-receipt.ts +0 -65
- package/src/lib/actions/start-typing.ts +0 -45
- package/src/lib/actions/stop-typing.ts +0 -45
- package/src/lib/actions/sync-contacts.ts +0 -31
- package/src/lib/actions/update-account-settings.ts +0 -57
- package/src/lib/actions/update-contact.ts +0 -65
- package/src/lib/actions/update-group.ts +0 -145
- package/src/lib/actions/update-profile.ts +0 -65
- package/src/lib/common/api-client.ts +0 -150
- package/src/lib/common/auth.ts +0 -66
- package/src/lib/common/message-utils.ts +0 -449
- package/src/lib/common/types.ts +0 -73
- package/src/lib/common/utils.ts +0 -106
- package/src/lib/triggers/new-group-member.ts +0 -176
- package/src/lib/triggers/new-message-received.ts +0 -618
- package/tsconfig.json +0 -19
- package/tsconfig.lib.json +0 -11
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createTrigger,
|
|
3
|
-
TriggerStrategy,
|
|
4
|
-
Property,
|
|
5
|
-
AppConnectionValueForAuthProperty,
|
|
6
|
-
} from '@activepieces/pieces-framework';
|
|
7
|
-
import {
|
|
8
|
-
DedupeStrategy,
|
|
9
|
-
Polling,
|
|
10
|
-
pollingHelper,
|
|
11
|
-
} from '@activepieces/pieces-common';
|
|
12
|
-
import { signalCliRestApiAuth } from '../common/auth';
|
|
13
|
-
import { SignalCliApiClient } from '../common/api-client';
|
|
14
|
-
import { GroupEntry } from '../common/types';
|
|
15
|
-
import { formatPhoneNumber } from '../common/utils';
|
|
16
|
-
|
|
17
|
-
const polling: Polling<
|
|
18
|
-
AppConnectionValueForAuthProperty<typeof signalCliRestApiAuth>,
|
|
19
|
-
{
|
|
20
|
-
number: string;
|
|
21
|
-
groupid: string;
|
|
22
|
-
include_pending_requests?: boolean;
|
|
23
|
-
include_pending_invites?: boolean;
|
|
24
|
-
}
|
|
25
|
-
> = {
|
|
26
|
-
strategy: DedupeStrategy.LAST_ITEM,
|
|
27
|
-
items: async ({ auth, propsValue, lastItemId, store }) => {
|
|
28
|
-
const { number, groupid, include_pending_requests = false, include_pending_invites = false } = propsValue;
|
|
29
|
-
|
|
30
|
-
const apiClient = new SignalCliApiClient(auth.props);
|
|
31
|
-
const formattedNumber = formatPhoneNumber(number);
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
// Hole aktuelle Gruppeninformationen
|
|
35
|
-
const group = await apiClient.get<GroupEntry>(
|
|
36
|
-
`/v1/groups/${encodeURIComponent(formattedNumber)}/${encodeURIComponent(groupid)}`
|
|
37
|
-
);
|
|
38
|
-
|
|
39
|
-
// Im Test-Modus (lastItemId === null): Zeige alle aktuellen Mitglieder
|
|
40
|
-
// Im normalen Polling-Modus: Finde nur neue Mitglieder
|
|
41
|
-
const isTestMode = lastItemId === null || lastItemId === undefined;
|
|
42
|
-
|
|
43
|
-
// Lade vorherigen State (separate Listen für verschiedene Typen)
|
|
44
|
-
const previousMembersJson = await store.get<string>('group_members');
|
|
45
|
-
const previousPendingRequestsJson = await store.get<string>('group_pending_requests');
|
|
46
|
-
const previousPendingInvitesJson = await store.get<string>('group_pending_invites');
|
|
47
|
-
|
|
48
|
-
const previousMembers: string[] = previousMembersJson
|
|
49
|
-
? JSON.parse(previousMembersJson)
|
|
50
|
-
: [];
|
|
51
|
-
const previousPendingRequests: string[] = previousPendingRequestsJson
|
|
52
|
-
? JSON.parse(previousPendingRequestsJson)
|
|
53
|
-
: [];
|
|
54
|
-
const previousPendingInvites: string[] = previousPendingInvitesJson
|
|
55
|
-
? JSON.parse(previousPendingInvitesJson)
|
|
56
|
-
: [];
|
|
57
|
-
|
|
58
|
-
// Erstelle aktuelle Listen
|
|
59
|
-
const currentMembers: string[] = [...(group.members || [])];
|
|
60
|
-
const currentPendingRequests: string[] = [...(group.pending_requests || [])];
|
|
61
|
-
const currentPendingInvites: string[] = [...(group.pending_invites || [])];
|
|
62
|
-
|
|
63
|
-
// Finde neue Mitglieder (nur reguläre Mitglieder)
|
|
64
|
-
const newMembers = isTestMode
|
|
65
|
-
? currentMembers
|
|
66
|
-
: currentMembers.filter((member) => !previousMembers.includes(member));
|
|
67
|
-
|
|
68
|
-
// Finde neue pending requests (nur wenn include_pending_requests aktiviert ist)
|
|
69
|
-
const newPendingRequests = isTestMode
|
|
70
|
-
? (include_pending_requests ? currentPendingRequests : [])
|
|
71
|
-
: (include_pending_requests
|
|
72
|
-
? currentPendingRequests.filter((member) => !previousPendingRequests.includes(member))
|
|
73
|
-
: []);
|
|
74
|
-
|
|
75
|
-
// Finde neue pending invites (nur wenn include_pending_invites aktiviert ist)
|
|
76
|
-
const newPendingInvites = isTestMode
|
|
77
|
-
? (include_pending_invites ? currentPendingInvites : [])
|
|
78
|
-
: (include_pending_invites
|
|
79
|
-
? currentPendingInvites.filter((member) => !previousPendingInvites.includes(member))
|
|
80
|
-
: []);
|
|
81
|
-
|
|
82
|
-
// Kombiniere alle neuen Einträge
|
|
83
|
-
const membersToReturn = [
|
|
84
|
-
...newMembers.map((member) => ({ member, type: 'member' as const })),
|
|
85
|
-
...newPendingRequests.map((member) => ({ member, type: 'pending_request' as const })),
|
|
86
|
-
...newPendingInvites.map((member) => ({ member, type: 'pending_invite' as const })),
|
|
87
|
-
];
|
|
88
|
-
|
|
89
|
-
// Speichere aktuelle Listen als neuen State (nur wenn nicht im Test-Modus)
|
|
90
|
-
if (!isTestMode) {
|
|
91
|
-
await store.put('group_members', JSON.stringify(currentMembers));
|
|
92
|
-
await store.put('group_pending_requests', JSON.stringify(currentPendingRequests));
|
|
93
|
-
await store.put('group_pending_invites', JSON.stringify(currentPendingInvites));
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Returniere Mitglieder als Items
|
|
97
|
-
return membersToReturn.map(({ member, type }) => {
|
|
98
|
-
const isPendingRequest = type === 'pending_request';
|
|
99
|
-
const isPendingInvite = type === 'pending_invite';
|
|
100
|
-
const isRegularMember = type === 'member';
|
|
101
|
-
|
|
102
|
-
return {
|
|
103
|
-
id: `${groupid}-${member}-${type}`, // Eindeutige ID für Trigger (inkl. Typ)
|
|
104
|
-
data: {
|
|
105
|
-
member: member,
|
|
106
|
-
groupId: groupid,
|
|
107
|
-
groupName: group.name,
|
|
108
|
-
groupDescription: group.description,
|
|
109
|
-
isPendingRequest: isPendingRequest,
|
|
110
|
-
isPendingInvite: isPendingInvite,
|
|
111
|
-
isRegularMember: isRegularMember,
|
|
112
|
-
memberType: type,
|
|
113
|
-
},
|
|
114
|
-
};
|
|
115
|
-
});
|
|
116
|
-
} catch (error) {
|
|
117
|
-
// Bei Fehler (z.B. Gruppe nicht gefunden) leere Liste zurückgeben
|
|
118
|
-
console.error('Error fetching group members:', error);
|
|
119
|
-
return [];
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
|
|
124
|
-
export const newGroupMember = createTrigger({
|
|
125
|
-
auth: signalCliRestApiAuth,
|
|
126
|
-
name: 'newGroupMember',
|
|
127
|
-
displayName: 'New Group Member',
|
|
128
|
-
description: 'Triggers when a new member joins a Signal group or requests to join',
|
|
129
|
-
type: TriggerStrategy.POLLING,
|
|
130
|
-
props: {
|
|
131
|
-
number: Property.ShortText({
|
|
132
|
-
displayName: 'Phone Number',
|
|
133
|
-
description: 'Registered phone number in international format (e.g., +43123456789)',
|
|
134
|
-
required: true,
|
|
135
|
-
}),
|
|
136
|
-
groupid: Property.ShortText({
|
|
137
|
-
displayName: 'Group ID',
|
|
138
|
-
description: 'Group ID (base64 encoded)',
|
|
139
|
-
required: true,
|
|
140
|
-
}),
|
|
141
|
-
include_pending_requests: Property.Checkbox({
|
|
142
|
-
displayName: 'Include Pending Requests',
|
|
143
|
-
description: 'Also trigger for members who have requested to join (pending approval)',
|
|
144
|
-
required: false,
|
|
145
|
-
defaultValue: false,
|
|
146
|
-
}),
|
|
147
|
-
include_pending_invites: Property.Checkbox({
|
|
148
|
-
displayName: 'Include Pending Invites',
|
|
149
|
-
description: 'Also trigger for members who have been invited but not yet joined',
|
|
150
|
-
required: false,
|
|
151
|
-
defaultValue: false,
|
|
152
|
-
}),
|
|
153
|
-
},
|
|
154
|
-
sampleData: {
|
|
155
|
-
member: '+43123456789',
|
|
156
|
-
groupId: 'base64groupid',
|
|
157
|
-
groupName: 'My Signal Group',
|
|
158
|
-
groupDescription: 'Group description',
|
|
159
|
-
isPendingRequest: false,
|
|
160
|
-
isPendingInvite: false,
|
|
161
|
-
isRegularMember: true,
|
|
162
|
-
memberType: 'member',
|
|
163
|
-
},
|
|
164
|
-
async test(context) {
|
|
165
|
-
return await pollingHelper.test(polling, context);
|
|
166
|
-
},
|
|
167
|
-
async onEnable(context) {
|
|
168
|
-
await pollingHelper.onEnable(polling, context);
|
|
169
|
-
},
|
|
170
|
-
async onDisable(context) {
|
|
171
|
-
await pollingHelper.onDisable(polling, context);
|
|
172
|
-
},
|
|
173
|
-
async run(context) {
|
|
174
|
-
return await pollingHelper.poll(polling, context);
|
|
175
|
-
},
|
|
176
|
-
});
|