@activepieces/piece-skyprep 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 (32) hide show
  1. package/README.md +7 -0
  2. package/package.json +27 -0
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +15 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/actions/enroll-a-user-into-a-cource.d.ts +4 -0
  7. package/src/lib/actions/enroll-a-user-into-a-cource.js +31 -0
  8. package/src/lib/actions/enroll-a-user-into-a-cource.js.map +1 -0
  9. package/src/lib/actions/enroll-a-user-into-a-user-group.d.ts +7 -0
  10. package/src/lib/actions/enroll-a-user-into-a-user-group.js +65 -0
  11. package/src/lib/actions/enroll-a-user-into-a-user-group.js.map +1 -0
  12. package/src/lib/actions/update-user.d.ts +16 -0
  13. package/src/lib/actions/update-user.js +130 -0
  14. package/src/lib/actions/update-user.js.map +1 -0
  15. package/src/lib/common/auth.d.ts +1 -0
  16. package/src/lib/common/auth.js +10 -0
  17. package/src/lib/common/auth.js.map +1 -0
  18. package/src/lib/common/client.d.ts +3 -0
  19. package/src/lib/common/client.js +27 -0
  20. package/src/lib/common/client.js.map +1 -0
  21. package/src/lib/common/props.d.ts +2 -0
  22. package/src/lib/common/props.js +59 -0
  23. package/src/lib/common/props.js.map +1 -0
  24. package/src/lib/triggers/cource-failed.d.ts +8 -0
  25. package/src/lib/triggers/cource-failed.js +72 -0
  26. package/src/lib/triggers/cource-failed.js.map +1 -0
  27. package/src/lib/triggers/cource-passed.d.ts +8 -0
  28. package/src/lib/triggers/cource-passed.js +73 -0
  29. package/src/lib/triggers/cource-passed.js.map +1 -0
  30. package/src/lib/triggers/new-user.d.ts +2 -0
  31. package/src/lib/triggers/new-user.js +67 -0
  32. package/src/lib/triggers/new-user.js.map +1 -0
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # pieces-skyprep
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build pieces-skyprep` to build the library.
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@activepieces/piece-skyprep",
3
+ "version": "0.0.1",
4
+ "type": "commonjs",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "dependencies": {
8
+ "@sinclair/typebox": "0.34.11",
9
+ "axios": "1.13.1",
10
+ "axios-retry": "4.4.1",
11
+ "dayjs": "1.11.9",
12
+ "deepmerge-ts": "7.1.0",
13
+ "form-data": "4.0.4",
14
+ "mime-types": "2.1.35",
15
+ "nanoid": "3.3.8",
16
+ "semver": "7.6.0",
17
+ "socket.io-client": "4.8.1",
18
+ "tslib": "^2.3.0",
19
+ "zod": "4.1.13",
20
+ "@activepieces/pieces-common": "0.11.0",
21
+ "@activepieces/pieces-framework": "0.23.0",
22
+ "@activepieces/shared": "0.30.4"
23
+ },
24
+ "resolutions": {
25
+ "rollup": "npm:@rollup/wasm-node"
26
+ }
27
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const skyprep: import("@activepieces/pieces-framework").Piece<import("@activepieces/pieces-framework").SecretTextProperty<true>>;
package/src/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.skyprep = void 0;
4
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
5
+ const auth_1 = require("./lib/common/auth");
6
+ exports.skyprep = (0, pieces_framework_1.createPiece)({
7
+ displayName: 'SkyPrep',
8
+ auth: auth_1.skyprepAuth,
9
+ minimumSupportedRelease: '0.36.1',
10
+ logoUrl: 'https://cdn.activepieces.com/pieces/skyprep.png',
11
+ authors: ['sanket-a11y'],
12
+ actions: [],
13
+ triggers: [],
14
+ });
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/skyprep/src/index.ts"],"names":[],"mappings":";;;AAAA,qEAAwE;AACxE,4CAAgD;AAEnC,QAAA,OAAO,GAAG,IAAA,8BAAW,EAAC;IACjC,WAAW,EAAE,SAAS;IACtB,IAAI,EAAE,kBAAW;IACjB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,iDAAiD;IAC1D,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const enrollAUserIntoACource: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").SecretTextProperty<true>, {
2
+ user_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
3
+ course_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
4
+ }>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enrollAUserIntoACource = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const auth_1 = require("../common/auth");
7
+ const client_1 = require("../common/client");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ const props_1 = require("../common/props");
10
+ exports.enrollAUserIntoACource = (0, pieces_framework_1.createAction)({
11
+ auth: auth_1.skyprepAuth,
12
+ name: 'enrollAUserIntoACource',
13
+ displayName: 'Enroll a User Into a Course',
14
+ description: 'Enroll a user into a course by user email or user ID',
15
+ props: {
16
+ user_id: props_1.user_idDropdown,
17
+ course_id: props_1.courceID,
18
+ },
19
+ run(context) {
20
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
+ const { user_id, course_id } = context.propsValue;
22
+ const body = {
23
+ course_id,
24
+ user_id,
25
+ };
26
+ const response = yield (0, client_1.makeRequest)(context.auth.secret_text, pieces_common_1.HttpMethod.POST, '/enroll_user_in_course', body);
27
+ return response;
28
+ });
29
+ },
30
+ });
31
+ //# sourceMappingURL=enroll-a-user-into-a-cource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enroll-a-user-into-a-cource.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/actions/enroll-a-user-into-a-cource.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,yCAA6C;AAC7C,6CAA+C;AAC/C,+DAAyD;AACzD,2CAA4D;AAE/C,QAAA,sBAAsB,GAAG,IAAA,+BAAY,EAAC;IACjD,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,6BAA6B;IAC1C,WAAW,EAAE,sDAAsD;IACnE,KAAK,EAAE;QACL,OAAO,EAAE,uBAAe;QACxB,SAAS,EAAE,gBAAQ;KACpB;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAElD,MAAM,IAAI,GAAQ;gBAChB,SAAS;gBACT,OAAO;aACR,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAChC,OAAO,CAAC,IAAI,CAAC,WAAW,EACxB,0BAAU,CAAC,IAAI,EACf,wBAAwB,EACxB,IAAI,CACL,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const enrollAUserIntoAUserGroup: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").SecretTextProperty<true>, {
2
+ user_identifier: import("@activepieces/pieces-framework").StaticDropdownProperty<string, true>;
3
+ user_email: import("@activepieces/pieces-framework").ShortTextProperty<false>;
4
+ user_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
5
+ user_group_id: import("@activepieces/pieces-framework").NumberProperty<true>;
6
+ user_group_enrollment_expiration_date: import("@activepieces/pieces-framework").ShortTextProperty<false>;
7
+ }>;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.enrollAUserIntoAUserGroup = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const auth_1 = require("../common/auth");
7
+ const client_1 = require("../common/client");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ const props_1 = require("../common/props");
10
+ exports.enrollAUserIntoAUserGroup = (0, pieces_framework_1.createAction)({
11
+ auth: auth_1.skyprepAuth,
12
+ name: 'enrollAUserIntoAUserGroup',
13
+ displayName: 'Enroll a User Into a User Group',
14
+ description: 'Enroll a user into a user group by user email or user ID',
15
+ props: {
16
+ user_identifier: pieces_framework_1.Property.StaticDropdown({
17
+ displayName: 'User Identifier Type',
18
+ description: 'Choose whether to identify the user by email or ID',
19
+ options: {
20
+ options: [
21
+ { label: 'Email', value: 'email' },
22
+ { label: 'User ID', value: 'user_id' },
23
+ ],
24
+ },
25
+ required: true,
26
+ }),
27
+ user_email: pieces_framework_1.Property.ShortText({
28
+ displayName: 'User Email',
29
+ description: 'The email address of the user to enroll',
30
+ required: false,
31
+ }),
32
+ user_id: props_1.user_idDropdown,
33
+ user_group_id: pieces_framework_1.Property.Number({
34
+ displayName: 'User Group ID',
35
+ description: 'The ID of the user group to enroll the user into',
36
+ required: true,
37
+ }),
38
+ user_group_enrollment_expiration_date: pieces_framework_1.Property.ShortText({
39
+ displayName: 'Enrollment Expiration Date',
40
+ description: 'Optional: The date when the enrollment will expire (e.g., "2024-12-31")',
41
+ required: false,
42
+ }),
43
+ },
44
+ run(context) {
45
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
46
+ const { user_identifier, user_email, user_id, user_group_id, user_group_enrollment_expiration_date, } = context.propsValue;
47
+ const body = {
48
+ user_group_id,
49
+ };
50
+ if (user_identifier === 'email') {
51
+ body.user_email = user_email;
52
+ }
53
+ else {
54
+ body.user_id = user_id;
55
+ }
56
+ if (user_group_enrollment_expiration_date) {
57
+ body.user_group_enrollment_expiration_date =
58
+ user_group_enrollment_expiration_date;
59
+ }
60
+ const response = yield (0, client_1.makeRequest)(context.auth.secret_text, pieces_common_1.HttpMethod.POST, '/enroll_user_in_user_group', body);
61
+ return response;
62
+ });
63
+ },
64
+ });
65
+ //# sourceMappingURL=enroll-a-user-into-a-user-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enroll-a-user-into-a-user-group.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/actions/enroll-a-user-into-a-user-group.ts"],"names":[],"mappings":";;;;AAAA,qEAAwE;AACxE,yCAA6C;AAC7C,6CAA+C;AAC/C,+DAAyD;AACzD,2CAAkD;AAErC,QAAA,yBAAyB,GAAG,IAAA,+BAAY,EAAC;IACpD,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,iCAAiC;IAC9C,WAAW,EAAE,0DAA0D;IACvE,KAAK,EAAE;QACL,eAAe,EAAE,2BAAQ,CAAC,cAAc,CAAC;YACvC,WAAW,EAAE,sBAAsB;YACnC,WAAW,EAAE,oDAAoD;YACjE,OAAO,EAAE;gBACP,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;oBAClC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;iBACvC;aACF;YACD,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,yCAAyC;YACtD,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO,EAAC,uBAAe;QACvB,aAAa,EAAE,2BAAQ,CAAC,MAAM,CAAC;YAC7B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,qCAAqC,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxD,WAAW,EAAE,4BAA4B;YACzC,WAAW,EACT,yEAAyE;YAC3E,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,EACJ,eAAe,EACf,UAAU,EACV,OAAO,EACP,aAAa,EACb,qCAAqC,GACtC,GAAG,OAAO,CAAC,UAAU,CAAC;YAEvB,MAAM,IAAI,GAAQ;gBAChB,aAAa;aACd,CAAC;YAEF,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;gBAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACzB,CAAC;YAED,IAAI,qCAAqC,EAAE,CAAC;gBAC1C,IAAI,CAAC,qCAAqC;oBACxC,qCAAqC,CAAC;YAC1C,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAChC,OAAO,CAAC,IAAI,CAAC,WAAW,EACxB,0BAAU,CAAC,IAAI,EACf,4BAA4B,EAC5B,IAAI,CACL,CAAC;YAEF,OAAO,QAAQ,CAAC;QAClB,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const updateUser: import("@activepieces/pieces-framework").IAction<import("@activepieces/pieces-framework").SecretTextProperty<true>, {
2
+ user_email: import("@activepieces/pieces-framework").ShortTextProperty<true>;
3
+ first_name: import("@activepieces/pieces-framework").ShortTextProperty<false>;
4
+ last_name: import("@activepieces/pieces-framework").ShortTextProperty<false>;
5
+ role: import("@activepieces/pieces-framework").StaticDropdownProperty<string, false>;
6
+ title: import("@activepieces/pieces-framework").ShortTextProperty<false>;
7
+ cell: import("@activepieces/pieces-framework").ShortTextProperty<false>;
8
+ work_phone: import("@activepieces/pieces-framework").ShortTextProperty<false>;
9
+ address: import("@activepieces/pieces-framework").ShortTextProperty<false>;
10
+ card_no: import("@activepieces/pieces-framework").ShortTextProperty<false>;
11
+ email_notifications: import("@activepieces/pieces-framework").CheckboxProperty<false>;
12
+ sms_notifications: import("@activepieces/pieces-framework").CheckboxProperty<false>;
13
+ access_start_date: import("@activepieces/pieces-framework").ShortTextProperty<false>;
14
+ access_end_date: import("@activepieces/pieces-framework").ShortTextProperty<false>;
15
+ password_expiration_date: import("@activepieces/pieces-framework").ShortTextProperty<false>;
16
+ }>;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateUser = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const auth_1 = require("../common/auth");
7
+ const client_1 = require("../common/client");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ exports.updateUser = (0, pieces_framework_1.createAction)({
10
+ auth: auth_1.skyprepAuth,
11
+ name: 'updateUser',
12
+ displayName: 'Update User',
13
+ description: 'Update user information. Omitted parameters will not be updated.',
14
+ props: {
15
+ user_email: pieces_framework_1.Property.ShortText({
16
+ displayName: 'User Email',
17
+ description: 'The email address of the user to update (required)',
18
+ required: true,
19
+ }),
20
+ first_name: pieces_framework_1.Property.ShortText({
21
+ displayName: 'First Name',
22
+ description: 'The first name of the user',
23
+ required: false,
24
+ }),
25
+ last_name: pieces_framework_1.Property.ShortText({
26
+ displayName: 'Last Name',
27
+ description: 'The last name of the user',
28
+ required: false,
29
+ }),
30
+ role: pieces_framework_1.Property.StaticDropdown({
31
+ displayName: 'Role',
32
+ description: 'The role of the user',
33
+ options: {
34
+ options: [
35
+ { label: 'Email', value: 'email' },
36
+ { label: 'User ID', value: 'user_id' },
37
+ ],
38
+ },
39
+ required: false,
40
+ }),
41
+ title: pieces_framework_1.Property.ShortText({
42
+ displayName: 'Title',
43
+ description: 'The title/position of the user',
44
+ required: false,
45
+ }),
46
+ cell: pieces_framework_1.Property.ShortText({
47
+ displayName: 'Cell Phone',
48
+ description: 'The cell phone number of the user',
49
+ required: false,
50
+ }),
51
+ work_phone: pieces_framework_1.Property.ShortText({
52
+ displayName: 'Work Phone',
53
+ description: 'The work phone number of the user',
54
+ required: false,
55
+ }),
56
+ address: pieces_framework_1.Property.ShortText({
57
+ displayName: 'Address',
58
+ description: 'The address of the user',
59
+ required: false,
60
+ }),
61
+ card_no: pieces_framework_1.Property.ShortText({
62
+ displayName: 'Card/ID Number',
63
+ description: 'The unique user identifier (e.g. student #, badge #)',
64
+ required: false,
65
+ }),
66
+ email_notifications: pieces_framework_1.Property.Checkbox({
67
+ displayName: 'Email Notifications',
68
+ description: 'Whether the user receives email notifications',
69
+ required: false,
70
+ }),
71
+ sms_notifications: pieces_framework_1.Property.Checkbox({
72
+ displayName: 'SMS Notifications',
73
+ description: 'Whether the user receives SMS notifications (requires Twilio integration)',
74
+ required: false,
75
+ }),
76
+ access_start_date: pieces_framework_1.Property.ShortText({
77
+ displayName: 'Access Start Date',
78
+ description: 'The date when the user can start accessing content (e.g., "July 31, 2015")',
79
+ required: false,
80
+ }),
81
+ access_end_date: pieces_framework_1.Property.ShortText({
82
+ displayName: 'Access End Date',
83
+ description: 'The date when the user can no longer access content (e.g., "July 30, 2017")',
84
+ required: false,
85
+ }),
86
+ password_expiration_date: pieces_framework_1.Property.ShortText({
87
+ displayName: 'Password Expiration Date',
88
+ description: 'The date when the user password expires (e.g., "July 19, 2022")',
89
+ required: false,
90
+ }),
91
+ },
92
+ run(context) {
93
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
94
+ const { user_email, first_name, last_name, role, title, cell, work_phone, address, card_no, email_notifications, sms_notifications, access_start_date, access_end_date, password_expiration_date, } = context.propsValue;
95
+ const body = {
96
+ user_email,
97
+ };
98
+ // Add optional fields only if provided
99
+ if (first_name)
100
+ body.first_name = first_name;
101
+ if (last_name)
102
+ body.last_name = last_name;
103
+ if (role)
104
+ body.role = role;
105
+ if (title)
106
+ body.title = title;
107
+ if (cell)
108
+ body.cell = cell;
109
+ if (work_phone)
110
+ body.work_phone = work_phone;
111
+ if (address)
112
+ body.address = address;
113
+ if (card_no)
114
+ body.card_no = card_no;
115
+ if (email_notifications !== undefined)
116
+ body.email_notifications = email_notifications;
117
+ if (sms_notifications !== undefined)
118
+ body.sms_notifications = sms_notifications;
119
+ if (access_start_date)
120
+ body.access_start_date = access_start_date;
121
+ if (access_end_date)
122
+ body.access_end_date = access_end_date;
123
+ if (password_expiration_date)
124
+ body.password_expiration_date = password_expiration_date;
125
+ const response = yield (0, client_1.makeRequest)(context.auth.secret_text, pieces_common_1.HttpMethod.POST, '/update_user', body);
126
+ return response;
127
+ });
128
+ },
129
+ });
130
+ //# sourceMappingURL=update-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-user.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/actions/update-user.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const skyprepAuth: import("@activepieces/pieces-framework").SecretTextProperty<true>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.skyprepAuth = void 0;
4
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
5
+ exports.skyprepAuth = pieces_framework_1.PieceAuth.SecretText({
6
+ displayName: 'API Key',
7
+ description: 'Skyprep API Key',
8
+ required: true,
9
+ });
10
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/common/auth.ts"],"names":[],"mappings":";;;AAAA,qEAA2D;AAE9C,QAAA,WAAW,GAAG,4BAAS,CAAC,UAAU,CAAC;IAC9C,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,iBAAiB;IAC9B,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { HttpMethod } from '@activepieces/pieces-common';
2
+ export declare const BASE_URL = "https://api.skyprep.io/admin/api";
3
+ export declare function makeRequest(api_key: string, method: HttpMethod, path: string, body?: unknown): Promise<any>;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BASE_URL = void 0;
4
+ exports.makeRequest = makeRequest;
5
+ const tslib_1 = require("tslib");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ exports.BASE_URL = `https://api.skyprep.io/admin/api`;
8
+ function makeRequest(api_key, method, path, body) {
9
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
+ try {
11
+ const response = yield pieces_common_1.httpClient.sendRequest({
12
+ method,
13
+ url: `${exports.BASE_URL}${path}`,
14
+ headers: {
15
+ Authorization: `Bearer ${api_key}`,
16
+ 'Content-Type': 'application/json',
17
+ },
18
+ body,
19
+ });
20
+ return response.body;
21
+ }
22
+ catch (error) {
23
+ throw new Error(`Unexpected error: ${error.message || String(error)}`);
24
+ }
25
+ });
26
+ }
27
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/common/client.ts"],"names":[],"mappings":";;;AAIA,kCAqBC;;AAzBD,+DAAqE;AAExD,QAAA,QAAQ,GAAG,kCAAkC,CAAC;AAE3D,SAAsB,WAAW,CAC/B,OAAe,EACf,MAAkB,EAClB,IAAY,EACZ,IAAc;;QAEd,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;gBAC5C,MAAM;gBACN,GAAG,EAAE,GAAG,gBAAQ,GAAG,IAAI,EAAE;gBACzB,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,OAAO,EAAE;oBAClC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI;aACL,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const courceID: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
2
+ export declare const user_idDropdown: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.user_idDropdown = exports.courceID = 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 client_1 = require("./client");
8
+ const pieces_common_1 = require("@activepieces/pieces-common");
9
+ exports.courceID = pieces_framework_1.Property.Dropdown({
10
+ auth: auth_1.skyprepAuth,
11
+ displayName: 'Course',
12
+ description: 'Select the course',
13
+ required: true,
14
+ refreshers: [],
15
+ options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
16
+ if (!auth || !auth.secret_text) {
17
+ return {
18
+ disabled: true,
19
+ options: [],
20
+ };
21
+ }
22
+ const response = yield (0, client_1.makeRequest)(auth.secret_text, pieces_common_1.HttpMethod.POST, '/get_courses', {
23
+ per_page: 100,
24
+ });
25
+ return {
26
+ disabled: false,
27
+ options: response.map((course) => ({
28
+ label: course.name,
29
+ value: course.id || course.course_id,
30
+ })),
31
+ };
32
+ }),
33
+ });
34
+ exports.user_idDropdown = pieces_framework_1.Property.Dropdown({
35
+ auth: auth_1.skyprepAuth,
36
+ displayName: 'User',
37
+ description: 'Select the user',
38
+ required: true,
39
+ refreshers: [],
40
+ options: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
41
+ if (!auth || !auth.secret_text) {
42
+ return {
43
+ disabled: true,
44
+ options: [],
45
+ };
46
+ }
47
+ const response = yield (0, client_1.makeRequest)(auth.secret_text, pieces_common_1.HttpMethod.POST, '/get_users', {
48
+ per_page: 100,
49
+ });
50
+ return {
51
+ disabled: false,
52
+ options: response.map((user) => ({
53
+ label: ` ${user.username} (${user.first_name} ${user.last_name})`,
54
+ value: user.id,
55
+ })),
56
+ };
57
+ }),
58
+ });
59
+ //# sourceMappingURL=props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"props.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/common/props.ts"],"names":[],"mappings":";;;;AAAA,qEAA0D;AAC1D,iCAAqC;AACrC,qCAAuC;AACvC,+DAAyD;AAE5C,QAAA,QAAQ,GAAG,2BAAQ,CAAC,QAAQ,CAAC;IACxC,IAAI,EAAE,kBAAW;IACjB,WAAW,EAAE,QAAQ;IACrB,WAAW,EAAE,mBAAmB;IAChC,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAChC,IAAI,CAAC,WAAW,EAChB,0BAAU,CAAC,IAAI,EACf,cAAc,EACd;YACE,QAAQ,EAAE,GAAG;SACd,CACF,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC;gBACtC,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,KAAK,EAAE,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS;aACrC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC,CAAA;CACF,CAAC,CAAC;AAEU,QAAA,eAAe,GAAG,2BAAQ,CAAC,QAAQ,CAAC;IAC/C,IAAI,EAAE,kBAAW;IACjB,WAAW,EAAE,MAAM;IACnB,WAAW,EAAE,iBAAiB;IAC9B,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,EAAE;IACd,OAAO,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACtB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAChC,IAAI,CAAC,WAAW,EAChB,0BAAU,CAAC,IAAI,EACf,YAAY,EACZ;YACE,QAAQ,EAAE,GAAG;SACd,CACF,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;gBACpC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,GAAG;gBACjE,KAAK,EAAE,IAAI,CAAC,EAAE;aACf,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC,CAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { TriggerStrategy } from '@activepieces/pieces-framework';
2
+ export declare const courceFailed: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").SecretTextProperty<true>, {
3
+ course_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
4
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").SecretTextProperty<true>, {
5
+ course_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
6
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").SecretTextProperty<true>, {
7
+ course_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
8
+ }>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.courceFailed = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const client_1 = require("../common/client");
8
+ const pieces_common_2 = require("@activepieces/pieces-common");
9
+ const auth_1 = require("../common/auth");
10
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
11
+ const props_1 = require("../common/props");
12
+ const props = {
13
+ course_id: props_1.courceID,
14
+ };
15
+ const polling = {
16
+ strategy: pieces_common_1.DedupeStrategy.TIMEBASED,
17
+ items: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ propsValue, lastFetchEpochMS, auth }) {
18
+ // Fetch course progresses with "failed" status
19
+ const response = yield (0, client_1.makeRequest)(auth.secret_text, pieces_common_2.HttpMethod.POST, '/get_course_progresses', {
20
+ course_id: propsValue.course_id || null,
21
+ status: 'failed',
22
+ per_page: 100,
23
+ });
24
+ return (response || [])
25
+ .filter((progress) => (0, dayjs_1.default)(progress.updated_at).valueOf() > lastFetchEpochMS)
26
+ .map((progress) => ({
27
+ epochMilliSeconds: (0, dayjs_1.default)(progress.updated_at).valueOf(),
28
+ data: progress,
29
+ }));
30
+ }),
31
+ };
32
+ exports.courceFailed = (0, pieces_framework_1.createTrigger)({
33
+ auth: auth_1.skyprepAuth,
34
+ name: 'courceFailed',
35
+ displayName: 'Course Failed',
36
+ description: 'Trigger when a user fails a course',
37
+ props,
38
+ sampleData: {
39
+ id: 21869069,
40
+ status: 'failed',
41
+ user_id: 590143,
42
+ user_email: 'jane@example.com',
43
+ course_id: 50606,
44
+ course_name: 'General Test Course',
45
+ completion_date: '2020-11-06T00:40:18.000Z',
46
+ updated_at: '2021-04-08T22:36:07.000Z',
47
+ },
48
+ type: pieces_framework_1.TriggerStrategy.POLLING,
49
+ test(context) {
50
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
51
+ return yield pieces_common_1.pollingHelper.test(polling, context);
52
+ });
53
+ },
54
+ onEnable(context) {
55
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
56
+ const { store, auth, propsValue } = context;
57
+ yield pieces_common_1.pollingHelper.onEnable(polling, { store, auth, propsValue });
58
+ });
59
+ },
60
+ onDisable(context) {
61
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
62
+ const { store, auth, propsValue } = context;
63
+ yield pieces_common_1.pollingHelper.onDisable(polling, { store, auth, propsValue });
64
+ });
65
+ },
66
+ run(context) {
67
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
68
+ return yield pieces_common_1.pollingHelper.poll(polling, context);
69
+ });
70
+ },
71
+ });
72
+ //# sourceMappingURL=cource-failed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cource-failed.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/triggers/cource-failed.ts"],"names":[],"mappings":";;;;AAAA,qEAMwC;AACxC,+DAIqC;AACrC,6CAA+C;AAC/C,+DAAyD;AACzD,yCAA6C;AAC7C,0DAA0B;AAC1B,2CAA2C;AAE3C,MAAM,KAAK,GAAG;IACZ,SAAS,EAAE,gBAAQ;CACpB,CAAC;AACF,MAAM,OAAO,GAGT;IACF,QAAQ,EAAE,8BAAc,CAAC,SAAS;IAClC,KAAK,EAAE,KAA+C,EAAE,oDAA1C,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE;QAClD,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAChC,IAAI,CAAC,WAAW,EAChB,0BAAU,CAAC,IAAI,EACf,wBAAwB,EACxB;YACE,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,IAAI;YACvC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,GAAG;SACd,CACF,CAAC;QAEF,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;aACpB,MAAM,CACL,CAAC,QAAa,EAAE,EAAE,CAChB,IAAA,eAAK,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAC1D;aACA,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC;YACvB,iBAAiB,EAAE,IAAA,eAAK,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;YACvD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC,CAAC;IACR,CAAC,CAAA;CACF,CAAC;AAEW,QAAA,YAAY,GAAG,IAAA,gCAAa,EAAC;IACxC,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,oCAAoC;IACjD,KAAK;IACL,UAAU,EAAE;QACV,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,kBAAkB;QAC9B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,qBAAqB;QAClC,eAAe,EAAE,0BAA0B;QAC3C,UAAU,EAAE,0BAA0B;KACvC;IACD,IAAI,EAAE,kCAAe,CAAC,OAAO;IACvB,IAAI,CAAC,OAAO;;YAChB,OAAO,MAAM,6BAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;IACK,QAAQ,CAAC,OAAO;;YACpB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAC5C,MAAM,6BAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;KAAA;IAEK,SAAS,CAAC,OAAO;;YACrB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAC5C,MAAM,6BAAa,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;KAAA;IAEK,GAAG,CAAC,OAAO;;YACf,OAAO,MAAM,6BAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { TriggerStrategy } from '@activepieces/pieces-framework';
2
+ export declare const courcePassed: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").SecretTextProperty<true>, {
3
+ course_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
4
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").SecretTextProperty<true>, {
5
+ course_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
6
+ }> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").SecretTextProperty<true>, {
7
+ course_id: import("@activepieces/pieces-framework").DropdownProperty<unknown, true, import("@activepieces/pieces-framework").SecretTextProperty<true>>;
8
+ }>;
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.courcePassed = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const client_1 = require("../common/client");
8
+ const pieces_common_2 = require("@activepieces/pieces-common");
9
+ const auth_1 = require("../common/auth");
10
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
11
+ const props_1 = require("../common/props");
12
+ const props = {
13
+ course_id: props_1.courceID,
14
+ };
15
+ const polling = {
16
+ strategy: pieces_common_1.DedupeStrategy.TIMEBASED,
17
+ items: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ propsValue, lastFetchEpochMS, auth }) {
18
+ // Fetch course progresses with "passed" status
19
+ const response = yield (0, client_1.makeRequest)(auth.secret_text, pieces_common_2.HttpMethod.POST, '/get_course_progresses', {
20
+ course_id: propsValue.course_id || null,
21
+ status: 'passed',
22
+ per_page: 100,
23
+ });
24
+ // Convert response to polling format with time-based deduplication
25
+ return (response || [])
26
+ .filter((progress) => (0, dayjs_1.default)(progress.updated_at).valueOf() > lastFetchEpochMS)
27
+ .map((progress) => ({
28
+ epochMilliSeconds: (0, dayjs_1.default)(progress.updated_at).valueOf(),
29
+ data: progress,
30
+ }));
31
+ }),
32
+ };
33
+ exports.courcePassed = (0, pieces_framework_1.createTrigger)({
34
+ auth: auth_1.skyprepAuth,
35
+ name: 'courcePassed',
36
+ displayName: 'Course Passed',
37
+ description: 'Trigger when a user passes a course',
38
+ props,
39
+ sampleData: {
40
+ id: 21869068,
41
+ status: 'passed',
42
+ user_id: 590142,
43
+ user_email: 'aaron@example.com',
44
+ course_id: 50606,
45
+ course_name: 'General Test Course',
46
+ completion_date: '2020-11-06T00:40:18.000Z',
47
+ updated_at: '2021-04-08T22:36:07.000Z',
48
+ },
49
+ type: pieces_framework_1.TriggerStrategy.POLLING,
50
+ test(context) {
51
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
52
+ return yield pieces_common_1.pollingHelper.test(polling, context);
53
+ });
54
+ },
55
+ onEnable(context) {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
+ const { store, auth, propsValue } = context;
58
+ yield pieces_common_1.pollingHelper.onEnable(polling, { store, auth, propsValue });
59
+ });
60
+ },
61
+ onDisable(context) {
62
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
63
+ const { store, auth, propsValue } = context;
64
+ yield pieces_common_1.pollingHelper.onDisable(polling, { store, auth, propsValue });
65
+ });
66
+ },
67
+ run(context) {
68
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
69
+ return yield pieces_common_1.pollingHelper.poll(polling, context);
70
+ });
71
+ },
72
+ });
73
+ //# sourceMappingURL=cource-passed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cource-passed.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/triggers/cource-passed.ts"],"names":[],"mappings":";;;;AAAA,qEAMwC;AACxC,+DAIqC;AACrC,6CAA+C;AAC/C,+DAAyD;AACzD,yCAA6C;AAC7C,0DAA0B;AAC1B,2CAA2C;AAC3C,MAAM,KAAK,GAAG;IACZ,SAAS,EAAE,gBAAQ;CACpB,CAAC;AACF,MAAM,OAAO,GAGT;IACF,QAAQ,EAAE,8BAAc,CAAC,SAAS;IAClC,KAAK,EAAE,KAA+C,EAAE,oDAA1C,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE;QAClD,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAChC,IAAI,CAAC,WAAW,EAChB,0BAAU,CAAC,IAAI,EACf,wBAAwB,EACxB;YACE,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,IAAI;YACvC,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,GAAG;SACd,CACF,CAAC;QAEF,mEAAmE;QACnE,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;aACpB,MAAM,CACL,CAAC,QAAa,EAAE,EAAE,CAChB,IAAA,eAAK,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAC1D;aACA,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,CAAC;YACvB,iBAAiB,EAAE,IAAA,eAAK,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;YACvD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC,CAAC;IACR,CAAC,CAAA;CACF,CAAC;AAEW,QAAA,YAAY,GAAG,IAAA,gCAAa,EAAC;IACxC,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,qCAAqC;IAClD,KAAK;IACL,UAAU,EAAE;QACV,EAAE,EAAE,QAAQ;QACZ,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,mBAAmB;QAC/B,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE,qBAAqB;QAClC,eAAe,EAAE,0BAA0B;QAC3C,UAAU,EAAE,0BAA0B;KACvC;IACD,IAAI,EAAE,kCAAe,CAAC,OAAO;IACvB,IAAI,CAAC,OAAO;;YAChB,OAAO,MAAM,6BAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;IACK,QAAQ,CAAC,OAAO;;YACpB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAC5C,MAAM,6BAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;KAAA;IAEK,SAAS,CAAC,OAAO;;YACrB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAC5C,MAAM,6BAAa,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;KAAA;IAEK,GAAG,CAAC,OAAO;;YACf,OAAO,MAAM,6BAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { TriggerStrategy } from '@activepieces/pieces-framework';
2
+ export declare const newUser: import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.WEBHOOK, import("@activepieces/pieces-framework").SecretTextProperty<true>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.POLLING, import("@activepieces/pieces-framework").SecretTextProperty<true>, {}> | import("@activepieces/pieces-framework").ITrigger<TriggerStrategy.APP_WEBHOOK, import("@activepieces/pieces-framework").SecretTextProperty<true>, {}>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.newUser = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const pieces_framework_1 = require("@activepieces/pieces-framework");
6
+ const pieces_common_1 = require("@activepieces/pieces-common");
7
+ const client_1 = require("../common/client");
8
+ const pieces_common_2 = require("@activepieces/pieces-common");
9
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
10
+ const auth_1 = require("../common/auth");
11
+ const polling = {
12
+ strategy: pieces_common_1.DedupeStrategy.TIMEBASED,
13
+ items: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ propsValue, lastFetchEpochMS, auth }) {
14
+ const response = yield (0, client_1.makeRequest)(auth.secret_text, pieces_common_2.HttpMethod.POST, '/get_users', {
15
+ created_within_the_past_day: false,
16
+ order_by_created_at_desc: true,
17
+ limit: 100,
18
+ include_groups: false,
19
+ include_courses: false,
20
+ });
21
+ return (response || [])
22
+ .filter((user) => (0, dayjs_1.default)(user.updated_at).valueOf() > lastFetchEpochMS)
23
+ .map((user) => ({
24
+ epochMilliSeconds: (0, dayjs_1.default)(user.created_at).valueOf(),
25
+ data: user,
26
+ }));
27
+ }),
28
+ };
29
+ exports.newUser = (0, pieces_framework_1.createTrigger)({
30
+ auth: auth_1.skyprepAuth,
31
+ name: 'newUser',
32
+ displayName: 'New User',
33
+ description: 'Trigger when a new user is created in SkyPrep',
34
+ props: {},
35
+ sampleData: {
36
+ id: 32,
37
+ first_name: 'John',
38
+ last_name: 'Doe',
39
+ username: 'john.doe@skyprep.com',
40
+ card_no: 'Emp. # 3211221',
41
+ created_at: '2021-01-01T12:00:00Z',
42
+ },
43
+ type: pieces_framework_1.TriggerStrategy.POLLING,
44
+ test(context) {
45
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
46
+ return yield pieces_common_1.pollingHelper.test(polling, context);
47
+ });
48
+ },
49
+ onEnable(context) {
50
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
51
+ const { store, auth, propsValue } = context;
52
+ yield pieces_common_1.pollingHelper.onEnable(polling, { store, auth, propsValue });
53
+ });
54
+ },
55
+ onDisable(context) {
56
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
57
+ const { store, auth, propsValue } = context;
58
+ yield pieces_common_1.pollingHelper.onDisable(polling, { store, auth, propsValue });
59
+ });
60
+ },
61
+ run(context) {
62
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
63
+ return yield pieces_common_1.pollingHelper.poll(polling, context);
64
+ });
65
+ },
66
+ });
67
+ //# sourceMappingURL=new-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-user.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/skyprep/src/lib/triggers/new-user.ts"],"names":[],"mappings":";;;;AAAA,qEAIwC;AACxC,+DAIqC;AACrC,6CAA+C;AAC/C,+DAAyD;AACzD,0DAA0B;AAC1B,yCAA6C;AAE7C,MAAM,OAAO,GAGT;IACF,QAAQ,EAAE,8BAAc,CAAC,SAAS;IAClC,KAAK,EAAE,KAA+C,EAAE,oDAA1C,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAA,oBAAW,EAChC,IAAI,CAAC,WAAW,EAChB,0BAAU,CAAC,IAAI,EACf,YAAY,EACZ;YACE,2BAA2B,EAAE,KAAK;YAClC,wBAAwB,EAAE,IAAI;YAC9B,KAAK,EAAE,GAAG;YACV,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,KAAK;SACvB,CACF,CAAC;QACF,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;aACpB,MAAM,CACL,CAAC,IAAS,EAAE,EAAE,CAAC,IAAA,eAAK,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,GAAG,gBAAgB,CACnE;aACA,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YACnB,iBAAiB,EAAE,IAAA,eAAK,EAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;YACnD,IAAI,EAAE,IAAI;SACX,CAAC,CAAC,CAAC;IACR,CAAC,CAAA;CACF,CAAC;AAEW,QAAA,OAAO,GAAG,IAAA,gCAAa,EAAC;IACnC,IAAI,EAAE,kBAAW;IACjB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,UAAU;IACvB,WAAW,EAAE,+CAA+C;IAC5D,KAAK,EAAE,EAAE;IACT,UAAU,EAAE;QACV,EAAE,EAAE,EAAE;QACN,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,KAAK;QAChB,QAAQ,EAAE,sBAAsB;QAChC,OAAO,EAAE,gBAAgB;QACzB,UAAU,EAAE,sBAAsB;KACnC;IACD,IAAI,EAAE,kCAAe,CAAC,OAAO;IACvB,IAAI,CAAC,OAAO;;YAChB,OAAO,MAAM,6BAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;IACK,QAAQ,CAAC,OAAO;;YACpB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAC5C,MAAM,6BAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACrE,CAAC;KAAA;IAEK,SAAS,CAAC,OAAO;;YACrB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAC5C,MAAM,6BAAa,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;QACtE,CAAC;KAAA;IAEK,GAAG,CAAC,OAAO;;YACf,OAAO,MAAM,6BAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;KAAA;CACF,CAAC,CAAC"}