@taskmagic/apps-tapfiliate 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.
- package/README.md +7 -0
- package/package.json +47 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +39 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/create-affiliate.d.ts +15 -0
- package/src/lib/actions/create-affiliate.js +110 -0
- package/src/lib/actions/create-affiliate.js.map +1 -0
- package/src/lib/actions/create-conversion.d.ts +16 -0
- package/src/lib/actions/create-conversion.js +136 -0
- package/src/lib/actions/create-conversion.js.map +1 -0
- package/src/lib/actions/get-affiliate.d.ts +3 -0
- package/src/lib/actions/get-affiliate.js +31 -0
- package/src/lib/actions/get-affiliate.js.map +1 -0
- package/src/lib/actions/list-affiliates.d.ts +8 -0
- package/src/lib/actions/list-affiliates.js +58 -0
- package/src/lib/actions/list-affiliates.js.map +1 -0
- package/src/lib/common/auth.d.ts +1 -0
- package/src/lib/common/auth.js +31 -0
- package/src/lib/common/auth.js.map +1 -0
- package/src/lib/common/tapfiliate.client.d.ts +15 -0
- package/src/lib/common/tapfiliate.client.js +104 -0
- package/src/lib/common/tapfiliate.client.js.map +1 -0
package/README.md
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@taskmagic/apps-tapfiliate",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"dependencies": {
|
|
5
|
+
"@anthropic-ai/sdk": "0.33.1",
|
|
6
|
+
"@sinclair/typebox": "0.34.11",
|
|
7
|
+
"axios": "1.17.0",
|
|
8
|
+
"axios-retry": "4.4.1",
|
|
9
|
+
"deepmerge-ts": "7.1.0",
|
|
10
|
+
"mime-types": "2.1.35",
|
|
11
|
+
"nanoid": "3.3.8",
|
|
12
|
+
"openai": "4.67.1",
|
|
13
|
+
"replicate": "0.34.1",
|
|
14
|
+
"semver": "7.6.0",
|
|
15
|
+
"zod": "3.25.76",
|
|
16
|
+
"@taskmagic/pieces-common": "0.4.4",
|
|
17
|
+
"@taskmagic/pieces-framework": "0.7.46",
|
|
18
|
+
"@taskmagic/shared": "0.10.171",
|
|
19
|
+
"tslib": "1.14.1"
|
|
20
|
+
},
|
|
21
|
+
"overrides": {
|
|
22
|
+
"cross-spawn": "7.0.6",
|
|
23
|
+
"elliptic": "^6.6.1",
|
|
24
|
+
"fast-xml-parser": "^4.4.1",
|
|
25
|
+
"protobufjs": "^7.5.5",
|
|
26
|
+
"tmp": "^0.2.4",
|
|
27
|
+
"koa": "^2.16.4",
|
|
28
|
+
"picomatch": "^4.0.4",
|
|
29
|
+
"langsmith": "^0.6.0",
|
|
30
|
+
"serialize-javascript": "^6.0.2",
|
|
31
|
+
"elevenlabs": {
|
|
32
|
+
"form-data": "^4.0.4"
|
|
33
|
+
},
|
|
34
|
+
"@tryfabric/martian": {
|
|
35
|
+
"@notionhq/client": "$@notionhq/client"
|
|
36
|
+
},
|
|
37
|
+
"vite": {
|
|
38
|
+
"rollup": "npm:@rollup/wasm-node@^4.61.1"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"resolutions": {
|
|
42
|
+
"rollup": "npm:@rollup/wasm-node@^4.61.1"
|
|
43
|
+
},
|
|
44
|
+
"types": "./src/index.d.ts",
|
|
45
|
+
"main": "./src/index.js",
|
|
46
|
+
"type": "commonjs"
|
|
47
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const tapfiliate: import("@taskmagic/pieces-framework").Piece<import("@taskmagic/pieces-framework").SecretTextProperty<true>>;
|
package/src/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tapfiliate = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
6
|
+
const pieces_framework_1 = require("@taskmagic/pieces-framework");
|
|
7
|
+
const shared_1 = require("@taskmagic/shared");
|
|
8
|
+
const create_affiliate_1 = require("./lib/actions/create-affiliate");
|
|
9
|
+
const create_conversion_1 = require("./lib/actions/create-conversion");
|
|
10
|
+
const get_affiliate_1 = require("./lib/actions/get-affiliate");
|
|
11
|
+
const list_affiliates_1 = require("./lib/actions/list-affiliates");
|
|
12
|
+
const auth_1 = require("./lib/common/auth");
|
|
13
|
+
const tapfiliate_client_1 = require("./lib/common/tapfiliate.client");
|
|
14
|
+
exports.tapfiliate = (0, pieces_framework_1.createPiece)({
|
|
15
|
+
displayName: 'Tapfiliate',
|
|
16
|
+
description: 'Affiliate tracking and conversion management platform.',
|
|
17
|
+
minimumSupportedRelease: '0.30.0',
|
|
18
|
+
logoUrl: 'https://cdn.activepieces.com/pieces/tapfiliate.png',
|
|
19
|
+
categories: [shared_1.PieceCategory.MARKETING, shared_1.PieceCategory.SALES_AND_CRM],
|
|
20
|
+
authors: ['Harmatta', 'onyedikachi-david'],
|
|
21
|
+
auth: auth_1.tapfiliateAuth,
|
|
22
|
+
actions: [
|
|
23
|
+
create_affiliate_1.createAffiliateAction,
|
|
24
|
+
get_affiliate_1.getAffiliateAction,
|
|
25
|
+
list_affiliates_1.listAffiliatesAction,
|
|
26
|
+
create_conversion_1.createConversionAction,
|
|
27
|
+
(0, pieces_common_1.createCustomApiCallAction)({
|
|
28
|
+
baseUrl: () => tapfiliate_client_1.TAPFILIATE_BASE_URL,
|
|
29
|
+
auth: auth_1.tapfiliateAuth,
|
|
30
|
+
authMapping: (auth) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
31
|
+
return ({
|
|
32
|
+
'X-Api-Key': auth,
|
|
33
|
+
});
|
|
34
|
+
}),
|
|
35
|
+
}),
|
|
36
|
+
],
|
|
37
|
+
triggers: [],
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/tapfiliate/src/index.ts"],"names":[],"mappings":";;;;AAAA,4DAAqE;AACrE,kEAA0D;AAC1D,8CAAkD;AAElD,qEAAuE;AACvE,uEAAyE;AACzE,+DAAiE;AACjE,mEAAqE;AACrE,4CAAmD;AACnD,sEAAqE;AAExD,QAAA,UAAU,GAAG,IAAA,8BAAW,EAAC;IACpC,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,wDAAwD;IACrE,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,oDAAoD;IAC7D,UAAU,EAAE,CAAC,sBAAa,CAAC,SAAS,EAAE,sBAAa,CAAC,aAAa,CAAC;IAClE,OAAO,EAAE,CAAC,UAAU,EAAE,mBAAmB,CAAC;IAC1C,IAAI,EAAE,qBAAc;IACpB,OAAO,EAAE;QACP,wCAAqB;QACrB,kCAAkB;QAClB,sCAAoB;QACpB,0CAAsB;QACtB,IAAA,yCAAyB,EAAC;YACxB,OAAO,EAAE,GAAG,EAAE,CAAC,uCAAmB;YAClC,IAAI,EAAE,qBAAc;YACpB,WAAW,EAAE,CAAO,IAAI,EAAE,EAAE;gBAAC,OAAA,CAAC;oBAC5B,WAAW,EAAE,IAAc;iBAC5B,CAAC,CAAA;cAAA;SACH,CAAC;KACH;IACD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const createAffiliateAction: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
|
|
2
|
+
firstname: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
|
|
3
|
+
lastname: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
email: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
|
|
5
|
+
password: import("@taskmagic/pieces-framework").ShortTextProperty<true>;
|
|
6
|
+
companyName: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
7
|
+
companyDescription: import("@taskmagic/pieces-framework").LongTextProperty<false>;
|
|
8
|
+
addressLine1: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
9
|
+
addressLine2: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
10
|
+
postalCode: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
11
|
+
city: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
12
|
+
state: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
13
|
+
countryCode: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
14
|
+
customFields: import("@taskmagic/pieces-framework").JsonProperty<false>;
|
|
15
|
+
}>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAffiliateAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
6
|
+
const pieces_framework_1 = require("@taskmagic/pieces-framework");
|
|
7
|
+
const auth_1 = require("../common/auth");
|
|
8
|
+
const tapfiliate_client_1 = require("../common/tapfiliate.client");
|
|
9
|
+
function isRecord(value) {
|
|
10
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
exports.createAffiliateAction = (0, pieces_framework_1.createAction)({
|
|
13
|
+
auth: auth_1.tapfiliateAuth,
|
|
14
|
+
name: 'create_affiliate',
|
|
15
|
+
displayName: 'Create Affiliate',
|
|
16
|
+
description: 'Creates a new affiliate in Tapfiliate.',
|
|
17
|
+
props: {
|
|
18
|
+
firstname: pieces_framework_1.Property.ShortText({
|
|
19
|
+
displayName: 'First Name',
|
|
20
|
+
required: true,
|
|
21
|
+
}),
|
|
22
|
+
lastname: pieces_framework_1.Property.ShortText({
|
|
23
|
+
displayName: 'Last Name',
|
|
24
|
+
required: true,
|
|
25
|
+
}),
|
|
26
|
+
email: pieces_framework_1.Property.ShortText({
|
|
27
|
+
displayName: 'Email',
|
|
28
|
+
required: true,
|
|
29
|
+
}),
|
|
30
|
+
password: pieces_framework_1.Property.ShortText({
|
|
31
|
+
displayName: 'Password',
|
|
32
|
+
description: 'Password for the new affiliate account.',
|
|
33
|
+
required: true,
|
|
34
|
+
}),
|
|
35
|
+
companyName: pieces_framework_1.Property.ShortText({
|
|
36
|
+
displayName: 'Company Name',
|
|
37
|
+
required: false,
|
|
38
|
+
}),
|
|
39
|
+
companyDescription: pieces_framework_1.Property.LongText({
|
|
40
|
+
displayName: 'Company Description',
|
|
41
|
+
required: false,
|
|
42
|
+
}),
|
|
43
|
+
addressLine1: pieces_framework_1.Property.ShortText({
|
|
44
|
+
displayName: 'Address Line 1',
|
|
45
|
+
required: false,
|
|
46
|
+
}),
|
|
47
|
+
addressLine2: pieces_framework_1.Property.ShortText({
|
|
48
|
+
displayName: 'Address Line 2',
|
|
49
|
+
required: false,
|
|
50
|
+
}),
|
|
51
|
+
postalCode: pieces_framework_1.Property.ShortText({
|
|
52
|
+
displayName: 'Postal Code',
|
|
53
|
+
required: false,
|
|
54
|
+
}),
|
|
55
|
+
city: pieces_framework_1.Property.ShortText({
|
|
56
|
+
displayName: 'City',
|
|
57
|
+
required: false,
|
|
58
|
+
}),
|
|
59
|
+
state: pieces_framework_1.Property.ShortText({
|
|
60
|
+
displayName: 'State',
|
|
61
|
+
required: false,
|
|
62
|
+
}),
|
|
63
|
+
countryCode: pieces_framework_1.Property.ShortText({
|
|
64
|
+
displayName: 'Country Code',
|
|
65
|
+
description: 'ISO 3166-1 alpha-2 code, e.g. US or NL.',
|
|
66
|
+
required: false,
|
|
67
|
+
}),
|
|
68
|
+
customFields: pieces_framework_1.Property.Json({
|
|
69
|
+
displayName: 'Custom Fields',
|
|
70
|
+
required: false,
|
|
71
|
+
}),
|
|
72
|
+
},
|
|
73
|
+
run(context) {
|
|
74
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const company = context.propsValue.companyName || context.propsValue.companyDescription
|
|
76
|
+
? Object.assign(Object.assign({}, (context.propsValue.companyName
|
|
77
|
+
? { name: context.propsValue.companyName }
|
|
78
|
+
: {})), (context.propsValue.companyDescription
|
|
79
|
+
? { description: context.propsValue.companyDescription }
|
|
80
|
+
: {})) : undefined;
|
|
81
|
+
const address = context.propsValue.addressLine1 ||
|
|
82
|
+
context.propsValue.addressLine2 ||
|
|
83
|
+
context.propsValue.postalCode ||
|
|
84
|
+
context.propsValue.city ||
|
|
85
|
+
context.propsValue.state ||
|
|
86
|
+
context.propsValue.countryCode
|
|
87
|
+
? Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (context.propsValue.addressLine1
|
|
88
|
+
? { address: context.propsValue.addressLine1 }
|
|
89
|
+
: {})), (context.propsValue.addressLine2
|
|
90
|
+
? { address_two: context.propsValue.addressLine2 }
|
|
91
|
+
: {})), (context.propsValue.postalCode
|
|
92
|
+
? { postal_code: context.propsValue.postalCode }
|
|
93
|
+
: {})), (context.propsValue.city ? { city: context.propsValue.city } : {})), (context.propsValue.state
|
|
94
|
+
? { state: context.propsValue.state }
|
|
95
|
+
: {})), (context.propsValue.countryCode
|
|
96
|
+
? { country: { code: context.propsValue.countryCode } }
|
|
97
|
+
: {})) : undefined;
|
|
98
|
+
const customFields = isRecord(context.propsValue.customFields)
|
|
99
|
+
? context.propsValue.customFields
|
|
100
|
+
: undefined;
|
|
101
|
+
return yield (0, tapfiliate_client_1.tapfiliateApiCall)({
|
|
102
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
103
|
+
path: '/affiliates/',
|
|
104
|
+
apiKey: context.auth,
|
|
105
|
+
body: Object.assign(Object.assign(Object.assign({ firstname: context.propsValue.firstname, lastname: context.propsValue.lastname, email: context.propsValue.email, password: context.propsValue.password }, (company ? { company } : {})), (address ? { address } : {})), (customFields ? { custom_fields: customFields } : {})),
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
//# sourceMappingURL=create-affiliate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-affiliate.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/tapfiliate/src/lib/actions/create-affiliate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const createConversionAction: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
|
|
2
|
+
referralCode: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
3
|
+
trackingId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
4
|
+
clickId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
5
|
+
coupon: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
6
|
+
currency: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
7
|
+
assetId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
8
|
+
sourceId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
9
|
+
externalId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
10
|
+
amount: import("@taskmagic/pieces-framework").NumberProperty<true>;
|
|
11
|
+
customerId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
12
|
+
overrideMaxCookieTime: import("@taskmagic/pieces-framework").CheckboxProperty<false>;
|
|
13
|
+
userAgent: import("@taskmagic/pieces-framework").LongTextProperty<false>;
|
|
14
|
+
ip: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
15
|
+
metaData: import("@taskmagic/pieces-framework").JsonProperty<false>;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createConversionAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
6
|
+
const pieces_framework_1 = require("@taskmagic/pieces-framework");
|
|
7
|
+
const auth_1 = require("../common/auth");
|
|
8
|
+
const tapfiliate_client_1 = require("../common/tapfiliate.client");
|
|
9
|
+
function isRecord(value) {
|
|
10
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
exports.createConversionAction = (0, pieces_framework_1.createAction)({
|
|
13
|
+
auth: auth_1.tapfiliateAuth,
|
|
14
|
+
name: 'create_conversion',
|
|
15
|
+
displayName: 'Create Conversion',
|
|
16
|
+
description: 'Creates a conversion in Tapfiliate. At least one attribution field is required: Customer ID, Referral Code, Tracking ID, Click ID, Coupon, or Asset ID + Source ID together.',
|
|
17
|
+
props: {
|
|
18
|
+
referralCode: pieces_framework_1.Property.ShortText({
|
|
19
|
+
displayName: 'Referral Code',
|
|
20
|
+
description: "The affiliate's referral code used to attribute this conversion.",
|
|
21
|
+
required: false,
|
|
22
|
+
}),
|
|
23
|
+
trackingId: pieces_framework_1.Property.ShortText({
|
|
24
|
+
displayName: 'Tracking ID',
|
|
25
|
+
description: 'The Tapfiliate tracking ID stored in the affiliate click cookie.',
|
|
26
|
+
required: false,
|
|
27
|
+
}),
|
|
28
|
+
clickId: pieces_framework_1.Property.ShortText({
|
|
29
|
+
displayName: 'Click ID',
|
|
30
|
+
description: 'The Tapfiliate click ID from the affiliate referral link.',
|
|
31
|
+
required: false,
|
|
32
|
+
}),
|
|
33
|
+
coupon: pieces_framework_1.Property.ShortText({
|
|
34
|
+
displayName: 'Coupon',
|
|
35
|
+
description: 'A coupon code linked to an affiliate to attribute this conversion.',
|
|
36
|
+
required: false,
|
|
37
|
+
}),
|
|
38
|
+
currency: pieces_framework_1.Property.ShortText({
|
|
39
|
+
displayName: 'Currency',
|
|
40
|
+
description: 'Three-letter ISO currency code such as USD or EUR.',
|
|
41
|
+
required: false,
|
|
42
|
+
}),
|
|
43
|
+
assetId: pieces_framework_1.Property.ShortText({
|
|
44
|
+
displayName: 'Asset ID',
|
|
45
|
+
description: 'The Tapfiliate asset ID. Must be provided together with Source ID.',
|
|
46
|
+
required: false,
|
|
47
|
+
}),
|
|
48
|
+
sourceId: pieces_framework_1.Property.ShortText({
|
|
49
|
+
displayName: 'Source ID',
|
|
50
|
+
description: 'The Tapfiliate source ID. Must be provided together with Asset ID.',
|
|
51
|
+
required: false,
|
|
52
|
+
}),
|
|
53
|
+
externalId: pieces_framework_1.Property.ShortText({
|
|
54
|
+
displayName: 'External ID',
|
|
55
|
+
description: 'Your own unique identifier for this conversion, such as an order number.',
|
|
56
|
+
required: false,
|
|
57
|
+
}),
|
|
58
|
+
amount: pieces_framework_1.Property.Number({
|
|
59
|
+
displayName: 'Amount',
|
|
60
|
+
description: 'Conversion amount used to calculate commissions.',
|
|
61
|
+
required: true,
|
|
62
|
+
}),
|
|
63
|
+
customerId: pieces_framework_1.Property.ShortText({
|
|
64
|
+
displayName: 'Customer ID',
|
|
65
|
+
description: 'Your customer identifier to attribute this conversion to the matching affiliate.',
|
|
66
|
+
required: false,
|
|
67
|
+
}),
|
|
68
|
+
overrideMaxCookieTime: pieces_framework_1.Property.Checkbox({
|
|
69
|
+
displayName: 'Override Max Cookie Time',
|
|
70
|
+
description: 'Override the maximum cookie time for this conversion.',
|
|
71
|
+
required: false,
|
|
72
|
+
defaultValue: false,
|
|
73
|
+
}),
|
|
74
|
+
userAgent: pieces_framework_1.Property.LongText({
|
|
75
|
+
displayName: 'User Agent',
|
|
76
|
+
required: false,
|
|
77
|
+
}),
|
|
78
|
+
ip: pieces_framework_1.Property.ShortText({
|
|
79
|
+
displayName: 'IP Address',
|
|
80
|
+
required: false,
|
|
81
|
+
}),
|
|
82
|
+
metaData: pieces_framework_1.Property.Json({
|
|
83
|
+
displayName: 'Meta Data',
|
|
84
|
+
required: false,
|
|
85
|
+
}),
|
|
86
|
+
},
|
|
87
|
+
run(context) {
|
|
88
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const metaData = isRecord(context.propsValue.metaData)
|
|
90
|
+
? context.propsValue.metaData
|
|
91
|
+
: undefined;
|
|
92
|
+
if (Boolean(context.propsValue.assetId) !== Boolean(context.propsValue.sourceId)) {
|
|
93
|
+
throw new Error('Asset ID and Source ID must be provided together.');
|
|
94
|
+
}
|
|
95
|
+
const hasAttribution = !!context.propsValue.customerId ||
|
|
96
|
+
!!context.propsValue.referralCode ||
|
|
97
|
+
!!context.propsValue.trackingId ||
|
|
98
|
+
!!context.propsValue.clickId ||
|
|
99
|
+
!!context.propsValue.coupon ||
|
|
100
|
+
(!!context.propsValue.assetId && !!context.propsValue.sourceId);
|
|
101
|
+
if (!hasAttribution) {
|
|
102
|
+
throw new Error('Tapfiliate requires at least one attribution key: Customer ID, Referral Code, Tracking ID, Click ID, Coupon, or Asset ID + Source ID.');
|
|
103
|
+
}
|
|
104
|
+
return yield (0, tapfiliate_client_1.tapfiliateApiCall)({
|
|
105
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
106
|
+
path: '/conversions/',
|
|
107
|
+
apiKey: context.auth,
|
|
108
|
+
query: context.propsValue.overrideMaxCookieTime
|
|
109
|
+
? { override_max_cookie_time: 'true' }
|
|
110
|
+
: undefined,
|
|
111
|
+
body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (context.propsValue.referralCode
|
|
112
|
+
? { referral_code: context.propsValue.referralCode }
|
|
113
|
+
: {})), (context.propsValue.trackingId
|
|
114
|
+
? { tracking_id: context.propsValue.trackingId }
|
|
115
|
+
: {})), (context.propsValue.clickId
|
|
116
|
+
? { click_id: context.propsValue.clickId }
|
|
117
|
+
: {})), (context.propsValue.coupon
|
|
118
|
+
? { coupon: context.propsValue.coupon }
|
|
119
|
+
: {})), (context.propsValue.currency
|
|
120
|
+
? { currency: context.propsValue.currency }
|
|
121
|
+
: {})), (context.propsValue.assetId
|
|
122
|
+
? { asset_id: context.propsValue.assetId }
|
|
123
|
+
: {})), (context.propsValue.sourceId
|
|
124
|
+
? { source_id: context.propsValue.sourceId }
|
|
125
|
+
: {})), (context.propsValue.externalId
|
|
126
|
+
? { external_id: context.propsValue.externalId }
|
|
127
|
+
: {})), { amount: context.propsValue.amount }), (context.propsValue.customerId
|
|
128
|
+
? { customer_id: context.propsValue.customerId }
|
|
129
|
+
: {})), (context.propsValue.userAgent
|
|
130
|
+
? { user_agent: context.propsValue.userAgent }
|
|
131
|
+
: {})), (context.propsValue.ip ? { ip: context.propsValue.ip } : {})), (metaData ? { meta_data: metaData } : {})),
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=create-conversion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-conversion.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/tapfiliate/src/lib/actions/create-conversion.ts"],"names":[],"mappings":";;;;AAAA,4DAAsD;AACtD,kEAAqE;AACrE,yCAAgD;AAChD,mEAAgE;AAEhE,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAEY,QAAA,sBAAsB,GAAG,IAAA,+BAAY,EAAC;IACjD,IAAI,EAAE,qBAAc;IACpB,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,mBAAmB;IAChC,WAAW,EACT,8KAA8K;IAChL,KAAK,EAAE;QACL,YAAY,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,eAAe;YAC5B,WAAW,EAAE,kEAAkE;YAC/E,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,kEAAkE;YAC/E,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,2DAA2D;YACxE,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,oEAAoE;YACjF,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,WAAW,EAAE,oEAAoE;YACjF,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,WAAW;YACxB,WAAW,EAAE,oEAAoE;YACjF,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,0EAA0E;YACvF,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,QAAQ;YACrB,WAAW,EAAE,kDAAkD;YAC/D,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC7B,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,kFAAkF;YAC/F,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,qBAAqB,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YACvC,WAAW,EAAE,0BAA0B;YACvC,WAAW,EAAE,uDAAuD;YACpE,QAAQ,EAAE,KAAK;YACf,YAAY,EAAE,KAAK;SACpB,CAAC;QACF,SAAS,EAAE,2BAAQ,CAAC,QAAQ,CAAC;YAC3B,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,EAAE,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACrB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,IAAI,CAAC;YACtB,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACpD,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ;gBAC7B,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,cAAc,GAClB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU;gBAC/B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY;gBACjC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU;gBAC/B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;gBAC5B,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM;gBAC3B,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAElE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CACb,uIAAuI,CACxI,CAAC;YACJ,CAAC;YAED,OAAO,MAAM,IAAA,qCAAiB,EAAC;gBAC7B,MAAM,EAAE,0BAAU,CAAC,IAAI;gBACvB,IAAI,EAAE,eAAe;gBACrB,MAAM,EAAE,OAAO,CAAC,IAAc;gBAC9B,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,qBAAqB;oBAC7C,CAAC,CAAC,EAAE,wBAAwB,EAAE,MAAM,EAAE;oBACtC,CAAC,CAAC,SAAS;gBACb,IAAI,4LACC,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY;oBACjC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE;oBACpD,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU;oBAC/B,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;oBAC5B,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;oBAC1C,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM;oBAC3B,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE;oBACvC,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ;oBAC7B,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAC3C,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO;oBAC5B,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE;oBAC1C,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ;oBAC7B,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAC5C,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU;oBAC/B,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC,KACP,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM,KAC9B,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU;oBAC/B,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS;oBAC9B,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE;oBAC9C,CAAC,CAAC,EAAE,CAAC,GACJ,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAC5D,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7C;aACF,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAffiliateAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
6
|
+
const pieces_framework_1 = require("@taskmagic/pieces-framework");
|
|
7
|
+
const auth_1 = require("../common/auth");
|
|
8
|
+
const tapfiliate_client_1 = require("../common/tapfiliate.client");
|
|
9
|
+
exports.getAffiliateAction = (0, pieces_framework_1.createAction)({
|
|
10
|
+
auth: auth_1.tapfiliateAuth,
|
|
11
|
+
name: 'get_affiliate',
|
|
12
|
+
displayName: 'Get Affiliate',
|
|
13
|
+
description: 'Retrieves a Tapfiliate affiliate by ID.',
|
|
14
|
+
props: {
|
|
15
|
+
affiliateId: pieces_framework_1.Property.ShortText({
|
|
16
|
+
displayName: 'Affiliate ID',
|
|
17
|
+
description: 'The unique Tapfiliate affiliate ID. Find it on the affiliate detail page in your Tapfiliate dashboard.',
|
|
18
|
+
required: true,
|
|
19
|
+
}),
|
|
20
|
+
},
|
|
21
|
+
run(context) {
|
|
22
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
return yield (0, tapfiliate_client_1.tapfiliateApiCall)({
|
|
24
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
25
|
+
path: `/affiliates/${context.propsValue.affiliateId}/`,
|
|
26
|
+
apiKey: context.auth,
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=get-affiliate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-affiliate.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/tapfiliate/src/lib/actions/get-affiliate.ts"],"names":[],"mappings":";;;;AAAA,4DAAsD;AACtD,kEAAqE;AACrE,yCAAgD;AAChD,mEAAgE;AAEnD,QAAA,kBAAkB,GAAG,IAAA,+BAAY,EAAC;IAC7C,IAAI,EAAE,qBAAc;IACpB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,yCAAyC;IACtD,KAAK,EAAE;QACL,WAAW,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC9B,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,wGAAwG;YACrH,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,OAAO,MAAM,IAAA,qCAAiB,EAAC;gBAC7B,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,IAAI,EAAE,eAAe,OAAO,CAAC,UAAU,CAAC,WAAW,GAAG;gBACtD,MAAM,EAAE,OAAO,CAAC,IAAc;aAC/B,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const listAffiliatesAction: import("@taskmagic/pieces-framework").IAction<import("@taskmagic/pieces-framework").SecretTextProperty<true>, {
|
|
2
|
+
clickId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
3
|
+
sourceId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
4
|
+
email: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
5
|
+
referralCode: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
6
|
+
parentId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
7
|
+
affiliateGroupId: import("@taskmagic/pieces-framework").ShortTextProperty<false>;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listAffiliatesAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
6
|
+
const pieces_framework_1 = require("@taskmagic/pieces-framework");
|
|
7
|
+
const auth_1 = require("../common/auth");
|
|
8
|
+
const tapfiliate_client_1 = require("../common/tapfiliate.client");
|
|
9
|
+
exports.listAffiliatesAction = (0, pieces_framework_1.createAction)({
|
|
10
|
+
auth: auth_1.tapfiliateAuth,
|
|
11
|
+
name: 'list_affiliates',
|
|
12
|
+
displayName: 'List Affiliates',
|
|
13
|
+
description: 'Lists affiliates with optional Tapfiliate filters.',
|
|
14
|
+
props: {
|
|
15
|
+
clickId: pieces_framework_1.Property.ShortText({
|
|
16
|
+
displayName: 'Click ID',
|
|
17
|
+
required: false,
|
|
18
|
+
}),
|
|
19
|
+
sourceId: pieces_framework_1.Property.ShortText({
|
|
20
|
+
displayName: 'Source ID',
|
|
21
|
+
required: false,
|
|
22
|
+
}),
|
|
23
|
+
email: pieces_framework_1.Property.ShortText({
|
|
24
|
+
displayName: 'Email',
|
|
25
|
+
required: false,
|
|
26
|
+
}),
|
|
27
|
+
referralCode: pieces_framework_1.Property.ShortText({
|
|
28
|
+
displayName: 'Referral Code',
|
|
29
|
+
required: false,
|
|
30
|
+
}),
|
|
31
|
+
parentId: pieces_framework_1.Property.ShortText({
|
|
32
|
+
displayName: 'Parent Affiliate ID',
|
|
33
|
+
required: false,
|
|
34
|
+
}),
|
|
35
|
+
affiliateGroupId: pieces_framework_1.Property.ShortText({
|
|
36
|
+
displayName: 'Affiliate Group ID',
|
|
37
|
+
required: false,
|
|
38
|
+
}),
|
|
39
|
+
},
|
|
40
|
+
run(context) {
|
|
41
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
return yield (0, tapfiliate_client_1.tapfiliatePaginatedApiCall)({
|
|
43
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
44
|
+
path: '/affiliates/',
|
|
45
|
+
apiKey: context.auth,
|
|
46
|
+
query: (0, tapfiliate_client_1.buildTapfiliateQuery)({
|
|
47
|
+
click_id: context.propsValue.clickId,
|
|
48
|
+
source_id: context.propsValue.sourceId,
|
|
49
|
+
email: context.propsValue.email,
|
|
50
|
+
referral_code: context.propsValue.referralCode,
|
|
51
|
+
parent_id: context.propsValue.parentId,
|
|
52
|
+
affiliate_group_id: context.propsValue.affiliateGroupId,
|
|
53
|
+
}),
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=list-affiliates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-affiliates.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/tapfiliate/src/lib/actions/list-affiliates.ts"],"names":[],"mappings":";;;;AAAA,4DAAsD;AACtD,kEAAqE;AACrE,yCAAgD;AAChD,mEAGqC;AAExB,QAAA,oBAAoB,GAAG,IAAA,+BAAY,EAAC;IAC/C,IAAI,EAAE,qBAAc;IACpB,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,oDAAoD;IACjE,KAAK,EAAE;QACL,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,WAAW;YACxB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,OAAO;YACpB,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,YAAY,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC/B,WAAW,EAAE,eAAe;YAC5B,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,QAAQ,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC3B,WAAW,EAAE,qBAAqB;YAClC,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,gBAAgB,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACnC,WAAW,EAAE,oBAAoB;YACjC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;YACf,OAAO,MAAM,IAAA,8CAA0B,EAAC;gBACtC,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,OAAO,CAAC,IAAc;gBAC9B,KAAK,EAAE,IAAA,wCAAoB,EAAC;oBAC1B,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO;oBACpC,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;oBACtC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK;oBAC/B,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY;oBAC9C,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;oBACtC,kBAAkB,EAAE,OAAO,CAAC,UAAU,CAAC,gBAAgB;iBACxD,CAAC;aACH,CAAC,CAAC;QACL,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const tapfiliateAuth: import("@taskmagic/pieces-framework").SecretTextProperty<true>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tapfiliateAuth = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
6
|
+
const pieces_framework_1 = require("@taskmagic/pieces-framework");
|
|
7
|
+
const tapfiliate_client_1 = require("./tapfiliate.client");
|
|
8
|
+
exports.tapfiliateAuth = pieces_framework_1.PieceAuth.SecretText({
|
|
9
|
+
displayName: 'API Key',
|
|
10
|
+
description: `To obtain your API key:
|
|
11
|
+
|
|
12
|
+
1. Log in to your Tapfiliate account.
|
|
13
|
+
2. Open your account settings.
|
|
14
|
+
3. Find the API key section.
|
|
15
|
+
4. Copy the API key and paste it here.`,
|
|
16
|
+
required: true,
|
|
17
|
+
validate: (_a) => tslib_1.__awaiter(void 0, [_a], void 0, function* ({ auth }) {
|
|
18
|
+
try {
|
|
19
|
+
yield (0, tapfiliate_client_1.tapfiliateApiCall)({
|
|
20
|
+
method: pieces_common_1.HttpMethod.GET,
|
|
21
|
+
path: '/affiliates/',
|
|
22
|
+
apiKey: auth,
|
|
23
|
+
});
|
|
24
|
+
return { valid: true };
|
|
25
|
+
}
|
|
26
|
+
catch (_b) {
|
|
27
|
+
return { valid: false, error: 'Invalid API Key.' };
|
|
28
|
+
}
|
|
29
|
+
}),
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/tapfiliate/src/lib/common/auth.ts"],"names":[],"mappings":";;;;AAAA,4DAAsD;AACtD,kEAAwD;AAExD,2DAAwD;AAE3C,QAAA,cAAc,GAAG,4BAAS,CAAC,UAAU,CAAC;IACjD,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE;;;;;uCAKwB;IACrC,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,KAAiB,EAAE,oDAAZ,EAAE,IAAI,EAAE;QACvB,IAAI,CAAC;YACH,MAAM,IAAA,qCAAiB,EAAC;gBACtB,MAAM,EAAE,0BAAU,CAAC,GAAG;gBACtB,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,IAAc;aACvB,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACrD,CAAC;IACH,CAAC,CAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { HttpMessageBody, HttpMethod, QueryParams } from '@taskmagic/pieces-common';
|
|
2
|
+
export declare const TAPFILIATE_BASE_URL = "https://api.tapfiliate.com/1.6";
|
|
3
|
+
export declare function buildTapfiliateQuery(values?: Record<string, unknown>): QueryParams;
|
|
4
|
+
type TapfiliateApiCallParams = {
|
|
5
|
+
method: HttpMethod;
|
|
6
|
+
path: string;
|
|
7
|
+
apiKey: string;
|
|
8
|
+
apiBaseUrl?: string;
|
|
9
|
+
query?: QueryParams;
|
|
10
|
+
body?: unknown;
|
|
11
|
+
};
|
|
12
|
+
export declare function parseTapfiliateNextPage(linkHeader: string | string[] | undefined): string | undefined;
|
|
13
|
+
export declare function tapfiliateApiCall<T extends HttpMessageBody>({ method, path, apiKey, apiBaseUrl, query, body, }: TapfiliateApiCallParams): Promise<T>;
|
|
14
|
+
export declare function tapfiliatePaginatedApiCall<T extends HttpMessageBody>({ method, path, apiKey, apiBaseUrl, query, body, }: TapfiliateApiCallParams): Promise<T[]>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TAPFILIATE_BASE_URL = void 0;
|
|
4
|
+
exports.buildTapfiliateQuery = buildTapfiliateQuery;
|
|
5
|
+
exports.parseTapfiliateNextPage = parseTapfiliateNextPage;
|
|
6
|
+
exports.tapfiliateApiCall = tapfiliateApiCall;
|
|
7
|
+
exports.tapfiliatePaginatedApiCall = tapfiliatePaginatedApiCall;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const pieces_common_1 = require("@taskmagic/pieces-common");
|
|
10
|
+
exports.TAPFILIATE_BASE_URL = 'https://api.tapfiliate.com/1.6';
|
|
11
|
+
function shouldKeepValue(value) {
|
|
12
|
+
if (value === null || value === undefined) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
if (typeof value === 'string') {
|
|
16
|
+
return value.trim().length > 0;
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
function buildTapfiliateQuery(values) {
|
|
21
|
+
const query = {};
|
|
22
|
+
if (!values) {
|
|
23
|
+
return query;
|
|
24
|
+
}
|
|
25
|
+
for (const [key, value] of Object.entries(values)) {
|
|
26
|
+
if (!shouldKeepValue(value)) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
query[key] = String(value);
|
|
30
|
+
}
|
|
31
|
+
return query;
|
|
32
|
+
}
|
|
33
|
+
function buildTapfiliateRequest({ method, path, apiKey, apiBaseUrl = exports.TAPFILIATE_BASE_URL, query, body, }) {
|
|
34
|
+
return {
|
|
35
|
+
method,
|
|
36
|
+
url: `${apiBaseUrl}${path}`,
|
|
37
|
+
headers: {
|
|
38
|
+
'Content-Type': 'application/json',
|
|
39
|
+
'X-Api-Key': apiKey,
|
|
40
|
+
},
|
|
41
|
+
queryParams: query,
|
|
42
|
+
body,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function parseTapfiliateNextPage(linkHeader) {
|
|
46
|
+
var _a, _b, _c;
|
|
47
|
+
const normalizedHeader = Array.isArray(linkHeader)
|
|
48
|
+
? linkHeader.join(',')
|
|
49
|
+
: linkHeader;
|
|
50
|
+
if (!normalizedHeader || !normalizedHeader.includes('rel="next"')) {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
const nextLink = (_b = (_a = normalizedHeader
|
|
54
|
+
.split(',')
|
|
55
|
+
.find((segment) => segment.includes('rel="next"'))) === null || _a === void 0 ? void 0 : _a.match(/<(.*?)>/)) === null || _b === void 0 ? void 0 : _b[1];
|
|
56
|
+
if (!nextLink) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
return (_c = new URL(nextLink).searchParams.get('page')) !== null && _c !== void 0 ? _c : undefined;
|
|
60
|
+
}
|
|
61
|
+
function tapfiliateApiCall(_a) {
|
|
62
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ method, path, apiKey, apiBaseUrl = exports.TAPFILIATE_BASE_URL, query, body, }) {
|
|
63
|
+
const response = yield pieces_common_1.httpClient.sendRequest(buildTapfiliateRequest({
|
|
64
|
+
method,
|
|
65
|
+
path,
|
|
66
|
+
apiKey,
|
|
67
|
+
apiBaseUrl,
|
|
68
|
+
query,
|
|
69
|
+
body,
|
|
70
|
+
}));
|
|
71
|
+
return response.body;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
function tapfiliatePaginatedApiCall(_a) {
|
|
75
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ method, path, apiKey, apiBaseUrl = exports.TAPFILIATE_BASE_URL, query, body, }) {
|
|
76
|
+
var _b, _c, _d;
|
|
77
|
+
const results = [];
|
|
78
|
+
let currentQuery = query;
|
|
79
|
+
let pageCount = 0;
|
|
80
|
+
while (pageCount < TAPFILIATE_MAX_PAGES) {
|
|
81
|
+
const response = yield pieces_common_1.httpClient.sendRequest(buildTapfiliateRequest({
|
|
82
|
+
method,
|
|
83
|
+
path,
|
|
84
|
+
apiKey,
|
|
85
|
+
apiBaseUrl,
|
|
86
|
+
query: currentQuery,
|
|
87
|
+
body,
|
|
88
|
+
}));
|
|
89
|
+
if (!Array.isArray(response.body) || response.body.length === 0) {
|
|
90
|
+
return results;
|
|
91
|
+
}
|
|
92
|
+
results.push(...response.body);
|
|
93
|
+
pageCount += 1;
|
|
94
|
+
const nextPage = parseTapfiliateNextPage((_c = (_b = response.headers) === null || _b === void 0 ? void 0 : _b['link']) !== null && _c !== void 0 ? _c : (_d = response.headers) === null || _d === void 0 ? void 0 : _d['Link']);
|
|
95
|
+
if (!nextPage) {
|
|
96
|
+
return results;
|
|
97
|
+
}
|
|
98
|
+
currentQuery = Object.assign(Object.assign({}, (query !== null && query !== void 0 ? query : {})), { page: nextPage });
|
|
99
|
+
}
|
|
100
|
+
return results;
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
const TAPFILIATE_MAX_PAGES = 500;
|
|
104
|
+
//# sourceMappingURL=tapfiliate.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tapfiliate.client.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/tapfiliate/src/lib/common/tapfiliate.client.ts"],"names":[],"mappings":"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"}
|