@taskmagic/apps-plausible 0.0.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.
Files changed (68) hide show
  1. package/README.md +1 -0
  2. package/package.json +47 -0
  3. package/src/index.d.ts +2 -0
  4. package/src/index.js +97 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/actions/create-custom-property.d.ts +4 -0
  7. package/src/lib/actions/create-custom-property.js +37 -0
  8. package/src/lib/actions/create-custom-property.js.map +1 -0
  9. package/src/lib/actions/create-goal.d.ts +7 -0
  10. package/src/lib/actions/create-goal.js +72 -0
  11. package/src/lib/actions/create-goal.js.map +1 -0
  12. package/src/lib/actions/create-shared-link.d.ts +4 -0
  13. package/src/lib/actions/create-shared-link.js +37 -0
  14. package/src/lib/actions/create-shared-link.js.map +1 -0
  15. package/src/lib/actions/create-site.d.ts +10 -0
  16. package/src/lib/actions/create-site.js +100 -0
  17. package/src/lib/actions/create-site.js.map +1 -0
  18. package/src/lib/actions/delete-custom-property.d.ts +4 -0
  19. package/src/lib/actions/delete-custom-property.js +32 -0
  20. package/src/lib/actions/delete-custom-property.js.map +1 -0
  21. package/src/lib/actions/delete-goal.d.ts +4 -0
  22. package/src/lib/actions/delete-goal.js +32 -0
  23. package/src/lib/actions/delete-goal.js.map +1 -0
  24. package/src/lib/actions/delete-site.d.ts +3 -0
  25. package/src/lib/actions/delete-site.js +28 -0
  26. package/src/lib/actions/delete-site.js.map +1 -0
  27. package/src/lib/actions/get-aggregate-stats.action.d.ts +5 -0
  28. package/src/lib/actions/get-aggregate-stats.action.js +63 -0
  29. package/src/lib/actions/get-aggregate-stats.action.js.map +1 -0
  30. package/src/lib/actions/get-breakdown.action.d.ts +6 -0
  31. package/src/lib/actions/get-breakdown.action.js +64 -0
  32. package/src/lib/actions/get-breakdown.action.js.map +1 -0
  33. package/src/lib/actions/get-realtime-visitors.action.d.ts +3 -0
  34. package/src/lib/actions/get-realtime-visitors.action.js +29 -0
  35. package/src/lib/actions/get-realtime-visitors.action.js.map +1 -0
  36. package/src/lib/actions/get-site.d.ts +3 -0
  37. package/src/lib/actions/get-site.js +28 -0
  38. package/src/lib/actions/get-site.js.map +1 -0
  39. package/src/lib/actions/invite-guest.d.ts +5 -0
  40. package/src/lib/actions/invite-guest.js +49 -0
  41. package/src/lib/actions/invite-guest.js.map +1 -0
  42. package/src/lib/actions/list-custom-properties.d.ts +3 -0
  43. package/src/lib/actions/list-custom-properties.js +23 -0
  44. package/src/lib/actions/list-custom-properties.js.map +1 -0
  45. package/src/lib/actions/list-goals.d.ts +3 -0
  46. package/src/lib/actions/list-goals.js +23 -0
  47. package/src/lib/actions/list-goals.js.map +1 -0
  48. package/src/lib/actions/list-guests.d.ts +3 -0
  49. package/src/lib/actions/list-guests.js +23 -0
  50. package/src/lib/actions/list-guests.js.map +1 -0
  51. package/src/lib/actions/list-sites.d.ts +1 -0
  52. package/src/lib/actions/list-sites.js +21 -0
  53. package/src/lib/actions/list-sites.js.map +1 -0
  54. package/src/lib/actions/list-teams.d.ts +1 -0
  55. package/src/lib/actions/list-teams.js +21 -0
  56. package/src/lib/actions/list-teams.js.map +1 -0
  57. package/src/lib/actions/remove-guest.d.ts +4 -0
  58. package/src/lib/actions/remove-guest.js +32 -0
  59. package/src/lib/actions/remove-guest.js.map +1 -0
  60. package/src/lib/actions/update-site.d.ts +9 -0
  61. package/src/lib/actions/update-site.js +89 -0
  62. package/src/lib/actions/update-site.js.map +1 -0
  63. package/src/lib/common/index.d.ts +40 -0
  64. package/src/lib/common/index.js +223 -0
  65. package/src/lib/common/index.js.map +1 -0
  66. package/src/lib/triggers/traffic-spike.trigger.d.ts +11 -0
  67. package/src/lib/triggers/traffic-spike.trigger.js +67 -0
  68. package/src/lib/triggers/traffic-spike.trigger.js.map +1 -0
@@ -0,0 +1,40 @@
1
+ import { HttpMethod } from '@taskmagic/pieces-common';
2
+ export declare const plausibleCommon: {
3
+ baseUrl: string;
4
+ };
5
+ export declare function plausibleApiCall<T>({ apiKey, method, endpoint, body, queryParams, }: {
6
+ apiKey: string;
7
+ method: HttpMethod;
8
+ endpoint: string;
9
+ body?: unknown;
10
+ queryParams?: Record<string, string>;
11
+ }): Promise<T>;
12
+ export declare function getSites(apiKey: string): Promise<{
13
+ domain: string;
14
+ timezone: string;
15
+ }[]>;
16
+ export declare const siteIdDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
17
+ export declare function getTeams(apiKey: string): Promise<{
18
+ id: string;
19
+ name: string;
20
+ api_available: boolean;
21
+ }[]>;
22
+ export declare const teamIdDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, false>;
23
+ export declare function getGoals(apiKey: string, siteId: string): Promise<{
24
+ id: string;
25
+ goal_type: string;
26
+ display_name: string;
27
+ event_name: string | null;
28
+ page_path: string | null;
29
+ }[]>;
30
+ export declare const goalIdDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
31
+ export declare function getCustomProperties(apiKey: string, siteId: string): Promise<{
32
+ property: string;
33
+ }[]>;
34
+ export declare const customPropertyDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
35
+ export declare function getGuests(apiKey: string, siteId: string): Promise<{
36
+ email: string;
37
+ role: string;
38
+ status: string;
39
+ }[]>;
40
+ export declare const guestEmailDropdown: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.guestEmailDropdown = exports.customPropertyDropdown = exports.goalIdDropdown = exports.teamIdDropdown = exports.siteIdDropdown = exports.plausibleCommon = void 0;
4
+ exports.plausibleApiCall = plausibleApiCall;
5
+ exports.getSites = getSites;
6
+ exports.getTeams = getTeams;
7
+ exports.getGoals = getGoals;
8
+ exports.getCustomProperties = getCustomProperties;
9
+ exports.getGuests = getGuests;
10
+ const tslib_1 = require("tslib");
11
+ const pieces_common_1 = require("@taskmagic/pieces-common");
12
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
13
+ exports.plausibleCommon = {
14
+ baseUrl: 'https://plausible.io/api/v1',
15
+ };
16
+ function plausibleApiCall(_a) {
17
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ apiKey, method, endpoint, body, queryParams, }) {
18
+ const request = {
19
+ url: `${exports.plausibleCommon.baseUrl}${endpoint}`,
20
+ method,
21
+ authentication: {
22
+ type: pieces_common_1.AuthenticationType.BEARER_TOKEN,
23
+ token: apiKey,
24
+ },
25
+ body,
26
+ queryParams,
27
+ };
28
+ const response = yield pieces_common_1.httpClient.sendRequest(request);
29
+ return response.body;
30
+ });
31
+ }
32
+ function getSites(apiKey) {
33
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
34
+ const response = yield plausibleApiCall({
35
+ apiKey,
36
+ method: pieces_common_1.HttpMethod.GET,
37
+ endpoint: '/sites',
38
+ });
39
+ return response.sites;
40
+ });
41
+ }
42
+ exports.siteIdDropdown = pieces_framework_1.Property.Dropdown({
43
+ displayName: 'Site',
44
+ description: 'Select a site',
45
+ required: true,
46
+ refreshers: [],
47
+ options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
48
+ if (!auth) {
49
+ return {
50
+ disabled: true,
51
+ placeholder: 'Connect your account first',
52
+ options: [],
53
+ };
54
+ }
55
+ const sites = yield getSites(auth);
56
+ return {
57
+ disabled: false,
58
+ options: sites.map((site) => ({
59
+ label: site.domain,
60
+ value: site.domain,
61
+ })),
62
+ };
63
+ }),
64
+ });
65
+ function getTeams(apiKey) {
66
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
67
+ const response = yield plausibleApiCall({
68
+ apiKey,
69
+ method: pieces_common_1.HttpMethod.GET,
70
+ endpoint: '/sites/teams',
71
+ });
72
+ return response.teams;
73
+ });
74
+ }
75
+ exports.teamIdDropdown = pieces_framework_1.Property.Dropdown({
76
+ displayName: 'Team',
77
+ description: 'Select a team',
78
+ required: false,
79
+ refreshers: [],
80
+ options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
81
+ if (!auth) {
82
+ return {
83
+ disabled: true,
84
+ placeholder: 'Connect your account first',
85
+ options: [],
86
+ };
87
+ }
88
+ const teams = yield getTeams(auth);
89
+ return {
90
+ disabled: false,
91
+ options: teams
92
+ .filter((team) => team.api_available)
93
+ .map((team) => ({
94
+ label: team.name,
95
+ value: team.id,
96
+ })),
97
+ };
98
+ }),
99
+ });
100
+ function getGoals(apiKey, siteId) {
101
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
102
+ const response = yield plausibleApiCall({
103
+ apiKey,
104
+ method: pieces_common_1.HttpMethod.GET,
105
+ endpoint: '/sites/goals',
106
+ queryParams: { site_id: siteId },
107
+ });
108
+ return response.goals;
109
+ });
110
+ }
111
+ exports.goalIdDropdown = pieces_framework_1.Property.Dropdown({
112
+ displayName: 'Goal',
113
+ description: 'Select a goal',
114
+ required: true,
115
+ refreshers: ['site_id'],
116
+ options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth, site_id }) {
117
+ if (!auth) {
118
+ return {
119
+ disabled: true,
120
+ placeholder: 'Connect your account first',
121
+ options: [],
122
+ };
123
+ }
124
+ if (!site_id) {
125
+ return {
126
+ disabled: true,
127
+ placeholder: 'Select a site first',
128
+ options: [],
129
+ };
130
+ }
131
+ const goals = yield getGoals(auth, site_id);
132
+ return {
133
+ disabled: false,
134
+ options: goals.map((goal) => ({
135
+ label: goal.display_name,
136
+ value: goal.id,
137
+ })),
138
+ };
139
+ }),
140
+ });
141
+ function getCustomProperties(apiKey, siteId) {
142
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
143
+ const response = yield plausibleApiCall({
144
+ apiKey,
145
+ method: pieces_common_1.HttpMethod.GET,
146
+ endpoint: '/sites/custom-props',
147
+ queryParams: { site_id: siteId },
148
+ });
149
+ return response.custom_properties;
150
+ });
151
+ }
152
+ exports.customPropertyDropdown = pieces_framework_1.Property.Dropdown({
153
+ displayName: 'Custom Property',
154
+ description: 'Select a custom property',
155
+ required: true,
156
+ refreshers: ['site_id'],
157
+ options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth, site_id }) {
158
+ if (!auth) {
159
+ return {
160
+ disabled: true,
161
+ placeholder: 'Connect your account first',
162
+ options: [],
163
+ };
164
+ }
165
+ if (!site_id) {
166
+ return {
167
+ disabled: true,
168
+ placeholder: 'Select a site first',
169
+ options: [],
170
+ };
171
+ }
172
+ const props = yield getCustomProperties(auth, site_id);
173
+ return {
174
+ disabled: false,
175
+ options: props.map((prop) => ({
176
+ label: prop.property,
177
+ value: prop.property,
178
+ })),
179
+ };
180
+ }),
181
+ });
182
+ function getGuests(apiKey, siteId) {
183
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
184
+ const response = yield plausibleApiCall({
185
+ apiKey,
186
+ method: pieces_common_1.HttpMethod.GET,
187
+ endpoint: '/sites/guests',
188
+ queryParams: { site_id: siteId },
189
+ });
190
+ return response.guests;
191
+ });
192
+ }
193
+ exports.guestEmailDropdown = pieces_framework_1.Property.Dropdown({
194
+ displayName: 'Guest',
195
+ description: 'Select a guest',
196
+ required: true,
197
+ refreshers: ['site_id'],
198
+ options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth, site_id }) {
199
+ if (!auth) {
200
+ return {
201
+ disabled: true,
202
+ placeholder: 'Connect your account first',
203
+ options: [],
204
+ };
205
+ }
206
+ if (!site_id) {
207
+ return {
208
+ disabled: true,
209
+ placeholder: 'Select a site first',
210
+ options: [],
211
+ };
212
+ }
213
+ const guests = yield getGuests(auth, site_id);
214
+ return {
215
+ disabled: false,
216
+ options: guests.map((guest) => ({
217
+ label: `${guest.email} (${guest.role})`,
218
+ value: guest.email,
219
+ })),
220
+ };
221
+ }),
222
+ });
223
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/plausible/src/lib/common/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { TriggerStrategy } from '@taskmagic/pieces-framework';
2
+ export declare const trafficSpike: import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
3
+ site_id: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
4
+ threshold: import("@taskmagic/pieces-framework").NumberProperty<true>;
5
+ }> | import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
6
+ site_id: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
7
+ threshold: import("@taskmagic/pieces-framework").NumberProperty<true>;
8
+ }> | import("@taskmagic/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
9
+ site_id: import("@taskmagic/pieces-framework").DropdownProperty<string, true>;
10
+ threshold: import("@taskmagic/pieces-framework").NumberProperty<true>;
11
+ }>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.trafficSpike = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@taskmagic/pieces-framework");
6
+ const pieces_common_1 = require("@taskmagic/pieces-common");
7
+ const __1 = require("../..");
8
+ const common_1 = require("../common");
9
+ exports.trafficSpike = (0, pieces_framework_1.createTrigger)({
10
+ name: 'traffic_spike',
11
+ auth: __1.plausibleAuth,
12
+ displayName: 'Traffic Spike',
13
+ description: 'Triggers once when current visitors exceed a threshold, then resets when they drop below it',
14
+ type: pieces_framework_1.TriggerStrategy.POLLING,
15
+ props: {
16
+ site_id: common_1.siteIdDropdown,
17
+ threshold: pieces_framework_1.Property.Number({
18
+ displayName: 'Visitor Threshold',
19
+ description: 'Trigger when visitors exceed this number',
20
+ required: true,
21
+ defaultValue: 100,
22
+ }),
23
+ },
24
+ onEnable(_a) {
25
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ store }) {
26
+ yield store.put('wasAboveThreshold', false, pieces_framework_1.StoreScope.FLOW);
27
+ });
28
+ },
29
+ onDisable(_a) {
30
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ store }) {
31
+ yield store.delete('wasAboveThreshold', pieces_framework_1.StoreScope.FLOW);
32
+ });
33
+ },
34
+ run(_a) {
35
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ auth, propsValue, store }) {
36
+ var _b;
37
+ const visitors = yield (0, common_1.plausibleApiCall)({
38
+ apiKey: auth,
39
+ method: pieces_common_1.HttpMethod.GET,
40
+ endpoint: '/stats/realtime/visitors',
41
+ queryParams: { site_id: propsValue.site_id },
42
+ });
43
+ const threshold = (_b = propsValue.threshold) !== null && _b !== void 0 ? _b : 100;
44
+ const isAbove = visitors >= threshold;
45
+ const wasAbove = yield store.get('wasAboveThreshold', pieces_framework_1.StoreScope.FLOW);
46
+ yield store.put('wasAboveThreshold', isAbove, pieces_framework_1.StoreScope.FLOW);
47
+ if (isAbove && !wasAbove) {
48
+ return [
49
+ {
50
+ site_id: propsValue.site_id,
51
+ current_visitors: visitors,
52
+ threshold,
53
+ triggered_at: new Date().toISOString(),
54
+ },
55
+ ];
56
+ }
57
+ return [];
58
+ });
59
+ },
60
+ sampleData: {
61
+ site_id: 'example.com',
62
+ current_visitors: 150,
63
+ threshold: 100,
64
+ triggered_at: '2024-01-01T12:00:00Z',
65
+ },
66
+ });
67
+ //# sourceMappingURL=traffic-spike.trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traffic-spike.trigger.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/plausible/src/lib/triggers/traffic-spike.trigger.ts"],"names":[],"mappings":";;;;AAAA,kEAKqC;AACrC,4DAAsD;AACtD,6BAAsC;AACtC,sCAA6D;AAEhD,QAAA,YAAY,GAAG,IAAA,gCAAa,EAAC;IACxC,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,iBAAa;IACnB,WAAW,EAAE,eAAe;IAC5B,WAAW,EACT,6FAA6F;IAC/F,IAAI,EAAE,kCAAe,CAAC,OAAO;IAC7B,KAAK,EAAE;QACL,OAAO,EAAE,uBAAc;QACvB,SAAS,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,GAAG;SAClB,CAAC;KACH;IACK,QAAQ;qEAAC,EAAE,KAAK,EAAE;YACtB,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,6BAAU,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;KAAA;IACK,SAAS;qEAAC,EAAE,KAAK,EAAE;YACvB,MAAM,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,6BAAU,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;KAAA;IACK,GAAG;qEAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;;YACnC,MAAM,QAAQ,GAAG,MAAM,IAAA,yBAAgB,EAAS;gBAC9C,MAAM,EAAE,IAAc;gBACtB,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,QAAQ,EAAE,0BAA0B;gBACpC,WAAW,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE;aAC7C,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAA,UAAU,CAAC,SAAS,mCAAI,GAAG,CAAC;YAC9C,MAAM,OAAO,GAAG,QAAQ,IAAI,SAAS,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAU,mBAAmB,EAAE,6BAAU,CAAC,IAAI,CAAC,CAAC;YAEhF,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,OAAO,EAAE,6BAAU,CAAC,IAAI,CAAC,CAAC;YAE/D,IAAI,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACzB,OAAO;oBACL;wBACE,OAAO,EAAE,UAAU,CAAC,OAAO;wBAC3B,gBAAgB,EAAE,QAAQ;wBAC1B,SAAS;wBACT,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACvC;iBACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;KAAA;IACD,UAAU,EAAE;QACV,OAAO,EAAE,aAAa;QACtB,gBAAgB,EAAE,GAAG;QACrB,SAAS,EAAE,GAAG;QACd,YAAY,EAAE,sBAAsB;KACrC;CACF,CAAC,CAAC"}