@linkforty/core 1.0.0 → 1.2.0
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/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/database.d.ts.map +1 -1
- package/dist/lib/database.js +154 -0
- package/dist/lib/database.js.map +1 -1
- package/dist/lib/event-emitter.d.ts +46 -0
- package/dist/lib/event-emitter.d.ts.map +1 -0
- package/dist/lib/event-emitter.js +29 -0
- package/dist/lib/event-emitter.js.map +1 -0
- package/dist/lib/fingerprint.d.ts +64 -0
- package/dist/lib/fingerprint.d.ts.map +1 -0
- package/dist/lib/fingerprint.js +387 -0
- package/dist/lib/fingerprint.js.map +1 -0
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +1 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/webhook.d.ts +18 -0
- package/dist/lib/webhook.d.ts.map +1 -0
- package/dist/lib/webhook.js +150 -0
- package/dist/lib/webhook.js.map +1 -0
- package/dist/routes/debug.d.ts +7 -0
- package/dist/routes/debug.d.ts.map +1 -0
- package/dist/routes/debug.js +321 -0
- package/dist/routes/debug.js.map +1 -0
- package/dist/routes/index.d.ts +5 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +11 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/links.d.ts.map +1 -1
- package/dist/routes/links.js +21 -3
- package/dist/routes/links.js.map +1 -1
- package/dist/routes/preview.d.ts +3 -0
- package/dist/routes/preview.d.ts.map +1 -0
- package/dist/routes/preview.js +225 -0
- package/dist/routes/preview.js.map +1 -0
- package/dist/routes/qr.d.ts +6 -0
- package/dist/routes/qr.d.ts.map +1 -0
- package/dist/routes/qr.js +136 -0
- package/dist/routes/qr.js.map +1 -0
- package/dist/routes/redirect.d.ts.map +1 -1
- package/dist/routes/redirect.js +167 -11
- package/dist/routes/redirect.js.map +1 -1
- package/dist/routes/sdk.d.ts +7 -0
- package/dist/routes/sdk.d.ts.map +1 -0
- package/dist/routes/sdk.js +265 -0
- package/dist/routes/sdk.js.map +1 -0
- package/dist/routes/webhooks.d.ts +3 -0
- package/dist/routes/webhooks.d.ts.map +1 -0
- package/dist/routes/webhooks.js +212 -0
- package/dist/routes/webhooks.js.map +1 -0
- package/dist/types/index.d.ts +81 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +11 -7
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FastifyInstance } from 'fastify';
|
|
2
|
+
/**
|
|
3
|
+
* SDK Routes - Mobile SDK endpoints for deferred deep linking
|
|
4
|
+
* These endpoints are used by the mobile SDKs to report installs and retrieve attribution data
|
|
5
|
+
*/
|
|
6
|
+
export declare function sdkRoutes(fastify: FastifyInstance): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/routes/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAU1C;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,eAAe,iBAySvD"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sdkRoutes = sdkRoutes;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const database_js_1 = require("../lib/database.js");
|
|
6
|
+
const fingerprint_js_1 = require("../lib/fingerprint.js");
|
|
7
|
+
const webhook_js_1 = require("../lib/webhook.js");
|
|
8
|
+
/**
|
|
9
|
+
* SDK Routes - Mobile SDK endpoints for deferred deep linking
|
|
10
|
+
* These endpoints are used by the mobile SDKs to report installs and retrieve attribution data
|
|
11
|
+
*/
|
|
12
|
+
async function sdkRoutes(fastify) {
|
|
13
|
+
/**
|
|
14
|
+
* POST /api/sdk/v1/install
|
|
15
|
+
* Report app installation and retrieve deferred deep link data
|
|
16
|
+
*
|
|
17
|
+
* Request body:
|
|
18
|
+
* - ipAddress: Client IP (auto-detected if not provided)
|
|
19
|
+
* - userAgent: Client user agent
|
|
20
|
+
* - timezone: Device timezone (e.g., "America/New_York")
|
|
21
|
+
* - language: Device language (e.g., "en-US")
|
|
22
|
+
* - screenWidth: Screen width in pixels
|
|
23
|
+
* - screenHeight: Screen height in pixels
|
|
24
|
+
* - platform: Platform name (e.g., "iOS", "Android")
|
|
25
|
+
* - platformVersion: Platform version (e.g., "15.0")
|
|
26
|
+
* - deviceId: Optional device identifier (IDFA, GAID, etc.)
|
|
27
|
+
* - attributionWindowHours: Optional custom attribution window (default: 168 = 7 days)
|
|
28
|
+
*
|
|
29
|
+
* Response:
|
|
30
|
+
* - installId: UUID of the install event
|
|
31
|
+
* - attributed: Boolean indicating if install was matched to a click
|
|
32
|
+
* - confidenceScore: Confidence score (0-100) if matched
|
|
33
|
+
* - matchedFactors: Array of matched fingerprint factors
|
|
34
|
+
* - deepLinkData: Deep link data if matched (shortCode, URLs, UTM params, etc.)
|
|
35
|
+
*/
|
|
36
|
+
fastify.post('/api/sdk/v1/install', async (request, reply) => {
|
|
37
|
+
const schema = zod_1.z.object({
|
|
38
|
+
ipAddress: zod_1.z.string().optional(),
|
|
39
|
+
userAgent: zod_1.z.string(),
|
|
40
|
+
timezone: zod_1.z.string().optional(),
|
|
41
|
+
language: zod_1.z.string().optional(),
|
|
42
|
+
screenWidth: zod_1.z.number().optional(),
|
|
43
|
+
screenHeight: zod_1.z.number().optional(),
|
|
44
|
+
platform: zod_1.z.string().optional(),
|
|
45
|
+
platformVersion: zod_1.z.string().optional(),
|
|
46
|
+
deviceId: zod_1.z.string().optional(),
|
|
47
|
+
attributionWindowHours: zod_1.z.number().optional(),
|
|
48
|
+
});
|
|
49
|
+
const body = schema.parse(request.body);
|
|
50
|
+
// Use client-provided IP or fallback to request IP
|
|
51
|
+
const ipAddress = body.ipAddress || request.ip;
|
|
52
|
+
const fingerprintData = {
|
|
53
|
+
ipAddress,
|
|
54
|
+
userAgent: body.userAgent,
|
|
55
|
+
timezone: body.timezone,
|
|
56
|
+
language: body.language,
|
|
57
|
+
screenWidth: body.screenWidth,
|
|
58
|
+
screenHeight: body.screenHeight,
|
|
59
|
+
platform: body.platform,
|
|
60
|
+
platformVersion: body.platformVersion,
|
|
61
|
+
};
|
|
62
|
+
try {
|
|
63
|
+
const result = await (0, fingerprint_js_1.recordInstallEvent)(fingerprintData, body.deviceId, body.attributionWindowHours);
|
|
64
|
+
return reply.status(200).send({
|
|
65
|
+
installId: result.installId,
|
|
66
|
+
attributed: result.match !== null,
|
|
67
|
+
confidenceScore: result.match?.confidenceScore || 0,
|
|
68
|
+
matchedFactors: result.match?.matchedFactors || [],
|
|
69
|
+
deepLinkData: result.deepLinkData,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
fastify.log.error(`Error recording install event: ${error}`);
|
|
74
|
+
return reply.status(500).send({
|
|
75
|
+
error: 'Failed to record install event',
|
|
76
|
+
message: error.message,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
/**
|
|
81
|
+
* GET /api/sdk/v1/attribution/:fingerprint
|
|
82
|
+
* Retrieve attribution data for a specific device fingerprint
|
|
83
|
+
* Used for debugging or delayed attribution lookups
|
|
84
|
+
*
|
|
85
|
+
* Response:
|
|
86
|
+
* - fingerprint: The fingerprint hash
|
|
87
|
+
* - attributed: Boolean indicating if attributed to a click
|
|
88
|
+
* - installEvent: Install event data if found
|
|
89
|
+
* - clickEvent: Matched click event data if attributed
|
|
90
|
+
* - linkData: Link data if attributed
|
|
91
|
+
*/
|
|
92
|
+
fastify.get('/api/sdk/v1/attribution/:fingerprint', async (request, reply) => {
|
|
93
|
+
const { fingerprint } = request.params;
|
|
94
|
+
try {
|
|
95
|
+
// Look up install event by fingerprint
|
|
96
|
+
const installResult = await database_js_1.db.query(`SELECT
|
|
97
|
+
ie.*,
|
|
98
|
+
l.short_code,
|
|
99
|
+
l.original_url,
|
|
100
|
+
l.ios_url,
|
|
101
|
+
l.android_url,
|
|
102
|
+
l.web_fallback_url,
|
|
103
|
+
l.utm_parameters
|
|
104
|
+
FROM install_events ie
|
|
105
|
+
LEFT JOIN links l ON ie.link_id = l.id
|
|
106
|
+
WHERE ie.fingerprint_hash = $1
|
|
107
|
+
ORDER BY ie.installed_at DESC
|
|
108
|
+
LIMIT 1`, [fingerprint]);
|
|
109
|
+
if (installResult.rows.length === 0) {
|
|
110
|
+
return reply.status(404).send({
|
|
111
|
+
error: 'No install event found for this fingerprint',
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
const install = installResult.rows[0];
|
|
115
|
+
const attributed = install.link_id !== null;
|
|
116
|
+
let clickData = null;
|
|
117
|
+
if (install.click_id) {
|
|
118
|
+
const clickResult = await database_js_1.db.query(`SELECT * FROM click_events WHERE id = $1`, [install.click_id]);
|
|
119
|
+
if (clickResult.rows.length > 0) {
|
|
120
|
+
clickData = clickResult.rows[0];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return reply.status(200).send({
|
|
124
|
+
fingerprint,
|
|
125
|
+
attributed,
|
|
126
|
+
installEvent: {
|
|
127
|
+
id: install.id,
|
|
128
|
+
installedAt: install.installed_at,
|
|
129
|
+
firstOpenAt: install.first_open_at,
|
|
130
|
+
confidenceScore: parseFloat(install.confidence_score || '0'),
|
|
131
|
+
deepLinkRetrieved: install.deep_link_retrieved,
|
|
132
|
+
},
|
|
133
|
+
clickEvent: clickData
|
|
134
|
+
? {
|
|
135
|
+
id: clickData.id,
|
|
136
|
+
clickedAt: clickData.clicked_at,
|
|
137
|
+
deviceType: clickData.device_type,
|
|
138
|
+
platform: clickData.platform,
|
|
139
|
+
countryCode: clickData.country_code,
|
|
140
|
+
city: clickData.city,
|
|
141
|
+
}
|
|
142
|
+
: null,
|
|
143
|
+
linkData: attributed
|
|
144
|
+
? {
|
|
145
|
+
shortCode: install.short_code,
|
|
146
|
+
originalUrl: install.original_url,
|
|
147
|
+
iosUrl: install.ios_url,
|
|
148
|
+
androidUrl: install.android_url,
|
|
149
|
+
webFallbackUrl: install.web_fallback_url,
|
|
150
|
+
utmParameters: install.utm_parameters,
|
|
151
|
+
}
|
|
152
|
+
: null,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
fastify.log.error(`Error retrieving attribution: ${error}`);
|
|
157
|
+
return reply.status(500).send({
|
|
158
|
+
error: 'Failed to retrieve attribution data',
|
|
159
|
+
message: error.message,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
/**
|
|
164
|
+
* POST /api/sdk/v1/event
|
|
165
|
+
* Track in-app events (purchases, signups, etc.)
|
|
166
|
+
* Used for conversion tracking and webhook triggers
|
|
167
|
+
*
|
|
168
|
+
* Request body:
|
|
169
|
+
* - installId: UUID of the install event
|
|
170
|
+
* - eventName: Name of the event (e.g., "purchase", "signup", "level_complete")
|
|
171
|
+
* - eventData: Optional JSON data associated with the event
|
|
172
|
+
* - timestamp: Optional event timestamp (defaults to now)
|
|
173
|
+
*
|
|
174
|
+
* Response:
|
|
175
|
+
* - eventId: UUID of the tracked event
|
|
176
|
+
* - acknowledged: Boolean confirmation
|
|
177
|
+
*/
|
|
178
|
+
fastify.post('/api/sdk/v1/event', async (request, reply) => {
|
|
179
|
+
const schema = zod_1.z.object({
|
|
180
|
+
installId: zod_1.z.string().uuid(),
|
|
181
|
+
eventName: zod_1.z.string(),
|
|
182
|
+
eventData: zod_1.z.record(zod_1.z.any()).optional(),
|
|
183
|
+
timestamp: zod_1.z.string().datetime().optional(),
|
|
184
|
+
});
|
|
185
|
+
const body = schema.parse(request.body);
|
|
186
|
+
try {
|
|
187
|
+
// Verify install exists and get link_id for webhook lookup
|
|
188
|
+
const installCheck = await database_js_1.db.query(`SELECT id, link_id FROM install_events WHERE id = $1`, [body.installId]);
|
|
189
|
+
if (installCheck.rows.length === 0) {
|
|
190
|
+
return reply.status(404).send({
|
|
191
|
+
error: 'Install event not found',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
const install = installCheck.rows[0];
|
|
195
|
+
const eventTimestamp = body.timestamp || new Date().toISOString();
|
|
196
|
+
// Insert event into in_app_events table
|
|
197
|
+
const eventResult = await database_js_1.db.query(`INSERT INTO in_app_events (install_id, event_name, event_data, event_timestamp)
|
|
198
|
+
VALUES ($1, $2, $3, $4)
|
|
199
|
+
RETURNING id`, [
|
|
200
|
+
body.installId,
|
|
201
|
+
body.eventName,
|
|
202
|
+
JSON.stringify(body.eventData || {}),
|
|
203
|
+
eventTimestamp,
|
|
204
|
+
]);
|
|
205
|
+
const eventId = eventResult.rows[0].id;
|
|
206
|
+
fastify.log.info({
|
|
207
|
+
eventId,
|
|
208
|
+
installId: body.installId,
|
|
209
|
+
linkId: install.link_id,
|
|
210
|
+
eventName: body.eventName,
|
|
211
|
+
eventData: body.eventData,
|
|
212
|
+
timestamp: eventTimestamp,
|
|
213
|
+
});
|
|
214
|
+
// Trigger conversion_event webhooks if install was attributed to a link
|
|
215
|
+
if (install.link_id) {
|
|
216
|
+
// Query webhooks for the user who owns the link
|
|
217
|
+
const webhooksResult = await database_js_1.db.query(`SELECT w.*
|
|
218
|
+
FROM webhooks w
|
|
219
|
+
INNER JOIN links l ON l.user_id = w.user_id
|
|
220
|
+
WHERE l.id = $1 AND w.is_active = true`, [install.link_id]);
|
|
221
|
+
if (webhooksResult.rows.length > 0) {
|
|
222
|
+
const eventData = {
|
|
223
|
+
eventId,
|
|
224
|
+
installId: body.installId,
|
|
225
|
+
linkId: install.link_id,
|
|
226
|
+
eventName: body.eventName,
|
|
227
|
+
eventData: body.eventData || {},
|
|
228
|
+
timestamp: eventTimestamp,
|
|
229
|
+
};
|
|
230
|
+
// Trigger webhooks asynchronously (fire and forget)
|
|
231
|
+
setImmediate(async () => {
|
|
232
|
+
// Trigger webhooks without delivery logging (basic version)
|
|
233
|
+
// For delivery logging, use @linkforty/cloud premium features
|
|
234
|
+
(0, webhook_js_1.triggerWebhooks)(webhooksResult.rows, 'conversion_event', eventId, eventData).catch((error) => {
|
|
235
|
+
fastify.log.error('Failed to trigger conversion webhooks:', error);
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return reply.status(200).send({
|
|
241
|
+
eventId,
|
|
242
|
+
acknowledged: true,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
fastify.log.error(`Error tracking event: ${error}`);
|
|
247
|
+
return reply.status(500).send({
|
|
248
|
+
error: 'Failed to track event',
|
|
249
|
+
message: error.message,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
});
|
|
253
|
+
/**
|
|
254
|
+
* GET /api/sdk/v1/health
|
|
255
|
+
* Health check endpoint for SDK connectivity testing
|
|
256
|
+
*/
|
|
257
|
+
fastify.get('/api/sdk/v1/health', async (request, reply) => {
|
|
258
|
+
return reply.status(200).send({
|
|
259
|
+
status: 'healthy',
|
|
260
|
+
version: 'v1',
|
|
261
|
+
timestamp: new Date().toISOString(),
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/routes/sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/routes/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAC;AA4B1D,wBAAsB,aAAa,CAAC,OAAO,EAAE,eAAe,iBA0N3D"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.webhookRoutes = webhookRoutes;
|
|
37
|
+
const zod_1 = require("zod");
|
|
38
|
+
const database_js_1 = require("../lib/database.js");
|
|
39
|
+
const webhook_js_1 = require("../lib/webhook.js");
|
|
40
|
+
const webhookEventSchema = zod_1.z.enum(['click_event', 'install_event', 'conversion_event']);
|
|
41
|
+
const createWebhookSchema = zod_1.z.object({
|
|
42
|
+
userId: zod_1.z.string().uuid(),
|
|
43
|
+
name: zod_1.z.string().min(1).max(255),
|
|
44
|
+
url: zod_1.z.string().url(),
|
|
45
|
+
events: zod_1.z.array(webhookEventSchema).min(1),
|
|
46
|
+
headers: zod_1.z.record(zod_1.z.string()).optional(),
|
|
47
|
+
retryCount: zod_1.z.number().int().min(1).max(10).optional(),
|
|
48
|
+
timeoutMs: zod_1.z.number().int().min(1000).max(60000).optional(),
|
|
49
|
+
});
|
|
50
|
+
const updateWebhookSchema = zod_1.z.object({
|
|
51
|
+
name: zod_1.z.string().min(1).max(255).optional(),
|
|
52
|
+
url: zod_1.z.string().url().optional(),
|
|
53
|
+
events: zod_1.z.array(webhookEventSchema).min(1).optional(),
|
|
54
|
+
isActive: zod_1.z.boolean().optional(),
|
|
55
|
+
headers: zod_1.z.record(zod_1.z.string()).optional(),
|
|
56
|
+
retryCount: zod_1.z.number().int().min(1).max(10).optional(),
|
|
57
|
+
timeoutMs: zod_1.z.number().int().min(1000).max(60000).optional(),
|
|
58
|
+
});
|
|
59
|
+
async function webhookRoutes(fastify) {
|
|
60
|
+
// Get all webhooks for a user
|
|
61
|
+
fastify.get('/api/webhooks', async (request) => {
|
|
62
|
+
const { userId } = request.query;
|
|
63
|
+
if (!userId) {
|
|
64
|
+
throw new Error('userId query parameter is required');
|
|
65
|
+
}
|
|
66
|
+
const result = await database_js_1.db.query(`SELECT id, user_id, name, url, events, is_active, retry_count, timeout_ms, headers, created_at, updated_at
|
|
67
|
+
FROM webhooks
|
|
68
|
+
WHERE user_id = $1
|
|
69
|
+
ORDER BY created_at DESC`, [userId]);
|
|
70
|
+
// Don't expose secrets in list view
|
|
71
|
+
return result.rows;
|
|
72
|
+
});
|
|
73
|
+
// Get a single webhook with secret
|
|
74
|
+
fastify.get('/api/webhooks/:id', async (request) => {
|
|
75
|
+
const { id } = request.params;
|
|
76
|
+
const { userId } = request.query;
|
|
77
|
+
if (!userId) {
|
|
78
|
+
throw new Error('userId query parameter is required');
|
|
79
|
+
}
|
|
80
|
+
const result = await database_js_1.db.query('SELECT * FROM webhooks WHERE id = $1 AND user_id = $2', [id, userId]);
|
|
81
|
+
if (result.rows.length === 0) {
|
|
82
|
+
throw new Error('Webhook not found');
|
|
83
|
+
}
|
|
84
|
+
return result.rows[0];
|
|
85
|
+
});
|
|
86
|
+
// Create a new webhook
|
|
87
|
+
fastify.post('/api/webhooks', async (request) => {
|
|
88
|
+
const data = createWebhookSchema.parse(request.body);
|
|
89
|
+
// Generate secure random secret
|
|
90
|
+
const secret = (0, webhook_js_1.generateWebhookSecret)();
|
|
91
|
+
const result = await database_js_1.db.query(`INSERT INTO webhooks (user_id, name, url, secret, events, retry_count, timeout_ms, headers)
|
|
92
|
+
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
|
93
|
+
RETURNING *`, [
|
|
94
|
+
data.userId,
|
|
95
|
+
data.name,
|
|
96
|
+
data.url,
|
|
97
|
+
secret,
|
|
98
|
+
data.events,
|
|
99
|
+
data.retryCount || 3,
|
|
100
|
+
data.timeoutMs || 10000,
|
|
101
|
+
JSON.stringify(data.headers || {}),
|
|
102
|
+
]);
|
|
103
|
+
return result.rows[0];
|
|
104
|
+
});
|
|
105
|
+
// Update a webhook
|
|
106
|
+
fastify.put('/api/webhooks/:id', async (request) => {
|
|
107
|
+
const { id } = request.params;
|
|
108
|
+
const { userId } = request.query;
|
|
109
|
+
const data = updateWebhookSchema.parse(request.body);
|
|
110
|
+
if (!userId) {
|
|
111
|
+
throw new Error('userId query parameter is required');
|
|
112
|
+
}
|
|
113
|
+
// Build dynamic update query
|
|
114
|
+
const updates = [];
|
|
115
|
+
const values = [];
|
|
116
|
+
let paramCount = 1;
|
|
117
|
+
if (data.name !== undefined) {
|
|
118
|
+
updates.push(`name = $${paramCount++}`);
|
|
119
|
+
values.push(data.name);
|
|
120
|
+
}
|
|
121
|
+
if (data.url !== undefined) {
|
|
122
|
+
updates.push(`url = $${paramCount++}`);
|
|
123
|
+
values.push(data.url);
|
|
124
|
+
}
|
|
125
|
+
if (data.events !== undefined) {
|
|
126
|
+
updates.push(`events = $${paramCount++}`);
|
|
127
|
+
values.push(data.events);
|
|
128
|
+
}
|
|
129
|
+
if (data.isActive !== undefined) {
|
|
130
|
+
updates.push(`is_active = $${paramCount++}`);
|
|
131
|
+
values.push(data.isActive);
|
|
132
|
+
}
|
|
133
|
+
if (data.headers !== undefined) {
|
|
134
|
+
updates.push(`headers = $${paramCount++}`);
|
|
135
|
+
values.push(JSON.stringify(data.headers));
|
|
136
|
+
}
|
|
137
|
+
if (data.retryCount !== undefined) {
|
|
138
|
+
updates.push(`retry_count = $${paramCount++}`);
|
|
139
|
+
values.push(data.retryCount);
|
|
140
|
+
}
|
|
141
|
+
if (data.timeoutMs !== undefined) {
|
|
142
|
+
updates.push(`timeout_ms = $${paramCount++}`);
|
|
143
|
+
values.push(data.timeoutMs);
|
|
144
|
+
}
|
|
145
|
+
if (updates.length === 0) {
|
|
146
|
+
throw new Error('No fields to update');
|
|
147
|
+
}
|
|
148
|
+
updates.push(`updated_at = NOW()`);
|
|
149
|
+
values.push(id, userId);
|
|
150
|
+
const result = await database_js_1.db.query(`UPDATE webhooks
|
|
151
|
+
SET ${updates.join(', ')}
|
|
152
|
+
WHERE id = $${paramCount++} AND user_id = $${paramCount}
|
|
153
|
+
RETURNING *`, values);
|
|
154
|
+
if (result.rows.length === 0) {
|
|
155
|
+
throw new Error('Webhook not found');
|
|
156
|
+
}
|
|
157
|
+
return result.rows[0];
|
|
158
|
+
});
|
|
159
|
+
// Delete a webhook
|
|
160
|
+
fastify.delete('/api/webhooks/:id', async (request) => {
|
|
161
|
+
const { id } = request.params;
|
|
162
|
+
const { userId } = request.query;
|
|
163
|
+
if (!userId) {
|
|
164
|
+
throw new Error('userId query parameter is required');
|
|
165
|
+
}
|
|
166
|
+
const result = await database_js_1.db.query('DELETE FROM webhooks WHERE id = $1 AND user_id = $2 RETURNING id', [id, userId]);
|
|
167
|
+
if (result.rows.length === 0) {
|
|
168
|
+
throw new Error('Webhook not found');
|
|
169
|
+
}
|
|
170
|
+
return { success: true };
|
|
171
|
+
});
|
|
172
|
+
// Test a webhook
|
|
173
|
+
fastify.post('/api/webhooks/:id/test', async (request) => {
|
|
174
|
+
const { id } = request.params;
|
|
175
|
+
const { userId } = request.query;
|
|
176
|
+
if (!userId) {
|
|
177
|
+
throw new Error('userId query parameter is required');
|
|
178
|
+
}
|
|
179
|
+
// Get webhook
|
|
180
|
+
const webhookResult = await database_js_1.db.query('SELECT * FROM webhooks WHERE id = $1 AND user_id = $2', [id, userId]);
|
|
181
|
+
if (webhookResult.rows.length === 0) {
|
|
182
|
+
throw new Error('Webhook not found');
|
|
183
|
+
}
|
|
184
|
+
const webhook = webhookResult.rows[0];
|
|
185
|
+
// Create test payload
|
|
186
|
+
const testPayload = {
|
|
187
|
+
event: 'click_event',
|
|
188
|
+
event_id: '00000000-0000-0000-0000-000000000000',
|
|
189
|
+
timestamp: new Date().toISOString(),
|
|
190
|
+
data: {
|
|
191
|
+
id: '00000000-0000-0000-0000-000000000000',
|
|
192
|
+
linkId: '00000000-0000-0000-0000-000000000000',
|
|
193
|
+
clickedAt: new Date().toISOString(),
|
|
194
|
+
ipAddress: '127.0.0.1',
|
|
195
|
+
userAgent: 'LinkForty-Test/1.0',
|
|
196
|
+
deviceType: 'web',
|
|
197
|
+
platform: 'test',
|
|
198
|
+
countryCode: 'US',
|
|
199
|
+
},
|
|
200
|
+
};
|
|
201
|
+
// Deliver webhook synchronously for testing
|
|
202
|
+
const { deliverWebhook } = await Promise.resolve().then(() => __importStar(require('../lib/webhook.js')));
|
|
203
|
+
const result = await deliverWebhook(webhook, testPayload);
|
|
204
|
+
return {
|
|
205
|
+
success: result.success,
|
|
206
|
+
statusCode: result.responseStatus,
|
|
207
|
+
responseBody: result.responseBody,
|
|
208
|
+
error: result.errorMessage,
|
|
209
|
+
};
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/routes/webhooks.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -11,11 +11,17 @@ export interface Link {
|
|
|
11
11
|
short_code: string;
|
|
12
12
|
original_url: string;
|
|
13
13
|
title?: string;
|
|
14
|
+
description?: string;
|
|
14
15
|
ios_url?: string;
|
|
15
16
|
android_url?: string;
|
|
16
17
|
web_fallback_url?: string;
|
|
17
18
|
utmParameters?: UTMParameters;
|
|
18
19
|
targeting_rules?: TargetingRules;
|
|
20
|
+
og_title?: string;
|
|
21
|
+
og_description?: string;
|
|
22
|
+
og_image_url?: string;
|
|
23
|
+
og_type?: string;
|
|
24
|
+
attribution_window_hours?: number;
|
|
19
25
|
is_active: boolean;
|
|
20
26
|
expires_at?: string;
|
|
21
27
|
created_at: string;
|
|
@@ -57,11 +63,17 @@ export interface ClickEvent {
|
|
|
57
63
|
export interface CreateLinkRequest {
|
|
58
64
|
originalUrl: string;
|
|
59
65
|
title?: string;
|
|
66
|
+
description?: string;
|
|
60
67
|
iosUrl?: string;
|
|
61
68
|
androidUrl?: string;
|
|
62
69
|
webFallbackUrl?: string;
|
|
63
70
|
utmParameters?: UTMParameters;
|
|
64
71
|
targetingRules?: TargetingRules;
|
|
72
|
+
ogTitle?: string;
|
|
73
|
+
ogDescription?: string;
|
|
74
|
+
ogImageUrl?: string;
|
|
75
|
+
ogType?: string;
|
|
76
|
+
attributionWindowHours?: number;
|
|
65
77
|
customCode?: string;
|
|
66
78
|
expiresAt?: string;
|
|
67
79
|
}
|
|
@@ -136,4 +148,73 @@ export interface AnalyticsData {
|
|
|
136
148
|
uniqueClicks: number;
|
|
137
149
|
}>;
|
|
138
150
|
}
|
|
151
|
+
export type WebhookEvent = 'click_event' | 'install_event' | 'conversion_event';
|
|
152
|
+
export interface Webhook {
|
|
153
|
+
id: string;
|
|
154
|
+
user_id: string;
|
|
155
|
+
name: string;
|
|
156
|
+
url: string;
|
|
157
|
+
secret: string;
|
|
158
|
+
events: WebhookEvent[];
|
|
159
|
+
is_active: boolean;
|
|
160
|
+
retry_count: number;
|
|
161
|
+
timeout_ms: number;
|
|
162
|
+
headers: Record<string, string>;
|
|
163
|
+
created_at: string;
|
|
164
|
+
updated_at: string;
|
|
165
|
+
}
|
|
166
|
+
export interface CreateWebhookRequest {
|
|
167
|
+
name: string;
|
|
168
|
+
url: string;
|
|
169
|
+
events: WebhookEvent[];
|
|
170
|
+
headers?: Record<string, string>;
|
|
171
|
+
retryCount?: number;
|
|
172
|
+
timeoutMs?: number;
|
|
173
|
+
}
|
|
174
|
+
export interface UpdateWebhookRequest {
|
|
175
|
+
name?: string;
|
|
176
|
+
url?: string;
|
|
177
|
+
events?: WebhookEvent[];
|
|
178
|
+
isActive?: boolean;
|
|
179
|
+
headers?: Record<string, string>;
|
|
180
|
+
retryCount?: number;
|
|
181
|
+
timeoutMs?: number;
|
|
182
|
+
}
|
|
183
|
+
export interface WebhookPayload {
|
|
184
|
+
event: WebhookEvent;
|
|
185
|
+
event_id: string;
|
|
186
|
+
timestamp: string;
|
|
187
|
+
data: ClickEvent | InstallEvent | ConversionEvent;
|
|
188
|
+
}
|
|
189
|
+
export interface WebhookDeliveryResult {
|
|
190
|
+
success: boolean;
|
|
191
|
+
webhookId: string;
|
|
192
|
+
eventType: WebhookEvent;
|
|
193
|
+
eventId: string;
|
|
194
|
+
responseStatus?: number;
|
|
195
|
+
responseBody?: string;
|
|
196
|
+
attemptNumber: number;
|
|
197
|
+
deliveredAt?: string;
|
|
198
|
+
errorMessage?: string;
|
|
199
|
+
}
|
|
200
|
+
export interface InstallEvent {
|
|
201
|
+
id: string;
|
|
202
|
+
linkId?: string;
|
|
203
|
+
fingerprintHash: string;
|
|
204
|
+
confidenceScore?: number;
|
|
205
|
+
installedAt: string;
|
|
206
|
+
deepLinkData?: any;
|
|
207
|
+
ipAddress?: string;
|
|
208
|
+
userAgent?: string;
|
|
209
|
+
platform?: string;
|
|
210
|
+
}
|
|
211
|
+
export interface ConversionEvent {
|
|
212
|
+
id: string;
|
|
213
|
+
installId: string;
|
|
214
|
+
eventName: string;
|
|
215
|
+
eventProperties: Record<string, any>;
|
|
216
|
+
revenue?: number;
|
|
217
|
+
currency?: string;
|
|
218
|
+
timestamp: string;
|
|
219
|
+
}
|
|
139
220
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|