@linkforty/core 1.5.1 → 1.13.6
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 +75 -11
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/client-ip.d.ts +10 -0
- package/dist/lib/client-ip.d.ts.map +1 -0
- package/dist/lib/client-ip.js +18 -0
- package/dist/lib/client-ip.js.map +1 -0
- package/dist/lib/client-ip.test.d.ts +7 -0
- package/dist/lib/client-ip.test.d.ts.map +1 -0
- package/dist/lib/client-ip.test.js +76 -0
- package/dist/lib/client-ip.test.js.map +1 -0
- package/dist/lib/database.d.ts.map +1 -1
- package/dist/lib/database.js +30 -0
- package/dist/lib/database.js.map +1 -1
- package/dist/lib/event-emitter.test.d.ts +2 -0
- package/dist/lib/event-emitter.test.d.ts.map +1 -0
- package/dist/lib/event-emitter.test.js +162 -0
- package/dist/lib/event-emitter.test.js.map +1 -0
- package/dist/lib/fingerprint.js +4 -4
- package/dist/lib/fingerprint.js.map +1 -1
- package/dist/lib/fingerprint.test.d.ts +2 -0
- package/dist/lib/fingerprint.test.d.ts.map +1 -0
- package/dist/lib/fingerprint.test.js +227 -0
- package/dist/lib/fingerprint.test.js.map +1 -0
- package/dist/lib/webhook.js +1 -1
- package/dist/lib/webhook.test.d.ts +2 -0
- package/dist/lib/webhook.test.d.ts.map +1 -0
- package/dist/lib/webhook.test.js +289 -0
- package/dist/lib/webhook.test.js.map +1 -0
- package/dist/routes/debug.js +6 -6
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +1 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/links.d.ts.map +1 -1
- package/dist/routes/links.js +19 -10
- package/dist/routes/links.js.map +1 -1
- package/dist/routes/redirect.d.ts.map +1 -1
- package/dist/routes/redirect.js +3 -2
- package/dist/routes/redirect.js.map +1 -1
- package/dist/routes/sdk.d.ts.map +1 -1
- package/dist/routes/sdk.js +20 -11
- package/dist/routes/sdk.js.map +1 -1
- package/dist/routes/templates.d.ts +3 -0
- package/dist/routes/templates.d.ts.map +1 -0
- package/dist/routes/templates.js +261 -0
- package/dist/routes/templates.js.map +1 -0
- package/dist/types/index.d.ts +32 -1
- package/dist/types/index.d.ts.map +1 -1
- package/llms.txt +763 -0
- package/package.json +19 -6
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { db } from '../lib/database.js';
|
|
3
|
+
import { customAlphabet } from 'nanoid';
|
|
4
|
+
const generateSlug = customAlphabet('abcdefghijklmnopqrstuvwxyz0123456789', 8);
|
|
5
|
+
const createTemplateSchema = z.object({
|
|
6
|
+
userId: z.string().uuid().optional(),
|
|
7
|
+
name: z.string().min(1, 'Template name is required').max(255, 'Name must be less than 255 characters'),
|
|
8
|
+
description: z.string().optional(),
|
|
9
|
+
settings: z.object({
|
|
10
|
+
defaultIosUrl: z.string().url('iOS URL must be a valid URL').optional(),
|
|
11
|
+
defaultAndroidUrl: z.string().url('Android URL must be a valid URL').optional(),
|
|
12
|
+
defaultWebFallbackUrl: z.string().url('Web Fallback URL must be a valid URL').optional(),
|
|
13
|
+
defaultAttributionWindowHours: z.number()
|
|
14
|
+
.min(1, 'Attribution window must be at least 1 hour')
|
|
15
|
+
.max(2160, 'Attribution window cannot exceed 2160 hours (90 days)')
|
|
16
|
+
.optional(),
|
|
17
|
+
utmParameters: z.object({
|
|
18
|
+
source: z.string().optional(),
|
|
19
|
+
medium: z.string().optional(),
|
|
20
|
+
campaign: z.string().optional(),
|
|
21
|
+
term: z.string().optional(),
|
|
22
|
+
content: z.string().optional(),
|
|
23
|
+
}).optional(),
|
|
24
|
+
targetingRules: z.object({
|
|
25
|
+
countries: z.array(z.string()).optional(),
|
|
26
|
+
devices: z.array(z.enum(['ios', 'android', 'web'])).optional(),
|
|
27
|
+
languages: z.array(z.string()).optional(),
|
|
28
|
+
}).optional(),
|
|
29
|
+
expiresAfterDays: z.number().optional(),
|
|
30
|
+
}).optional(),
|
|
31
|
+
isDefault: z.boolean().default(false),
|
|
32
|
+
});
|
|
33
|
+
const updateTemplateSchema = z.object({
|
|
34
|
+
name: z.string().min(1, 'Template name is required').max(255, 'Name must be less than 255 characters').optional(),
|
|
35
|
+
description: z.string().optional(),
|
|
36
|
+
settings: z.object({
|
|
37
|
+
defaultIosUrl: z.string().url('iOS URL must be a valid URL').optional(),
|
|
38
|
+
defaultAndroidUrl: z.string().url('Android URL must be a valid URL').optional(),
|
|
39
|
+
defaultWebFallbackUrl: z.string().url('Web Fallback URL must be a valid URL').optional(),
|
|
40
|
+
defaultAttributionWindowHours: z.number()
|
|
41
|
+
.min(1, 'Attribution window must be at least 1 hour')
|
|
42
|
+
.max(2160, 'Attribution window cannot exceed 2160 hours (90 days)')
|
|
43
|
+
.optional(),
|
|
44
|
+
utmParameters: z.object({
|
|
45
|
+
source: z.string().optional(),
|
|
46
|
+
medium: z.string().optional(),
|
|
47
|
+
campaign: z.string().optional(),
|
|
48
|
+
term: z.string().optional(),
|
|
49
|
+
content: z.string().optional(),
|
|
50
|
+
}).optional(),
|
|
51
|
+
targetingRules: z.object({
|
|
52
|
+
countries: z.array(z.string()).optional(),
|
|
53
|
+
devices: z.array(z.enum(['ios', 'android', 'web'])).optional(),
|
|
54
|
+
languages: z.array(z.string()).optional(),
|
|
55
|
+
}).optional(),
|
|
56
|
+
expiresAfterDays: z.number().optional(),
|
|
57
|
+
}).optional(),
|
|
58
|
+
isDefault: z.boolean().optional(),
|
|
59
|
+
});
|
|
60
|
+
export async function templateRoutes(fastify) {
|
|
61
|
+
// Get all templates (optionally filtered by userId)
|
|
62
|
+
fastify.get('/api/templates', async (request) => {
|
|
63
|
+
const { userId } = request.query;
|
|
64
|
+
let query;
|
|
65
|
+
let params;
|
|
66
|
+
if (userId) {
|
|
67
|
+
query = `
|
|
68
|
+
SELECT id, user_id, name, slug, description, settings, is_default, created_at, updated_at
|
|
69
|
+
FROM link_templates
|
|
70
|
+
WHERE user_id = $1
|
|
71
|
+
ORDER BY is_default DESC, name ASC
|
|
72
|
+
`;
|
|
73
|
+
params = [userId];
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
query = `
|
|
77
|
+
SELECT id, user_id, name, slug, description, settings, is_default, created_at, updated_at
|
|
78
|
+
FROM link_templates
|
|
79
|
+
ORDER BY is_default DESC, name ASC
|
|
80
|
+
`;
|
|
81
|
+
params = [];
|
|
82
|
+
}
|
|
83
|
+
const result = await db.query(query, params);
|
|
84
|
+
return result.rows;
|
|
85
|
+
});
|
|
86
|
+
// Get single template
|
|
87
|
+
fastify.get('/api/templates/:id', async (request) => {
|
|
88
|
+
const { id } = request.params;
|
|
89
|
+
const { userId } = request.query;
|
|
90
|
+
let result;
|
|
91
|
+
if (userId) {
|
|
92
|
+
result = await db.query(`SELECT id, user_id, name, slug, description, settings, is_default, created_at, updated_at
|
|
93
|
+
FROM link_templates
|
|
94
|
+
WHERE id = $1 AND user_id = $2`, [id, userId]);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
result = await db.query(`SELECT id, user_id, name, slug, description, settings, is_default, created_at, updated_at
|
|
98
|
+
FROM link_templates
|
|
99
|
+
WHERE id = $1`, [id]);
|
|
100
|
+
}
|
|
101
|
+
if (result.rows.length === 0) {
|
|
102
|
+
throw new Error('Template not found');
|
|
103
|
+
}
|
|
104
|
+
return result.rows[0];
|
|
105
|
+
});
|
|
106
|
+
// Create template
|
|
107
|
+
fastify.post('/api/templates', async (request) => {
|
|
108
|
+
const data = createTemplateSchema.parse(request.body);
|
|
109
|
+
// Generate unique slug
|
|
110
|
+
let slug = generateSlug();
|
|
111
|
+
let attempts = 0;
|
|
112
|
+
while (attempts < 10) {
|
|
113
|
+
const existing = await db.query('SELECT id FROM link_templates WHERE slug = $1', [slug]);
|
|
114
|
+
if (existing.rows.length === 0) {
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
slug = generateSlug();
|
|
118
|
+
attempts++;
|
|
119
|
+
}
|
|
120
|
+
if (attempts >= 10) {
|
|
121
|
+
throw new Error('Unable to generate unique template slug. Please try again.');
|
|
122
|
+
}
|
|
123
|
+
// If setting as default, unset other defaults
|
|
124
|
+
if (data.isDefault) {
|
|
125
|
+
if (data.userId) {
|
|
126
|
+
await db.query('UPDATE link_templates SET is_default = false WHERE user_id = $1', [data.userId]);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
await db.query('UPDATE link_templates SET is_default = false WHERE user_id IS NULL');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const result = await db.query(`INSERT INTO link_templates (
|
|
133
|
+
user_id, name, slug, description, settings, is_default
|
|
134
|
+
) VALUES ($1, $2, $3, $4, $5, $6)
|
|
135
|
+
RETURNING id, user_id, name, slug, description, settings, is_default, created_at, updated_at`, [
|
|
136
|
+
data.userId || null,
|
|
137
|
+
data.name,
|
|
138
|
+
slug,
|
|
139
|
+
data.description || null,
|
|
140
|
+
JSON.stringify(data.settings || {}),
|
|
141
|
+
data.isDefault,
|
|
142
|
+
]);
|
|
143
|
+
return result.rows[0];
|
|
144
|
+
});
|
|
145
|
+
// Update template
|
|
146
|
+
fastify.put('/api/templates/:id', async (request) => {
|
|
147
|
+
const { id } = request.params;
|
|
148
|
+
const { userId } = request.query;
|
|
149
|
+
const data = updateTemplateSchema.parse(request.body);
|
|
150
|
+
// Verify template exists
|
|
151
|
+
let existingResult;
|
|
152
|
+
if (userId) {
|
|
153
|
+
existingResult = await db.query('SELECT id FROM link_templates WHERE id = $1 AND user_id = $2', [id, userId]);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
existingResult = await db.query('SELECT id FROM link_templates WHERE id = $1', [id]);
|
|
157
|
+
}
|
|
158
|
+
if (existingResult.rows.length === 0) {
|
|
159
|
+
throw new Error('Template not found');
|
|
160
|
+
}
|
|
161
|
+
// If setting as default, unset other defaults
|
|
162
|
+
if (data.isDefault) {
|
|
163
|
+
if (userId) {
|
|
164
|
+
await db.query('UPDATE link_templates SET is_default = false WHERE user_id = $1 AND id != $2', [userId, id]);
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
await db.query('UPDATE link_templates SET is_default = false WHERE id != $1', [id]);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Build update query dynamically
|
|
171
|
+
const updates = [];
|
|
172
|
+
const values = [];
|
|
173
|
+
let paramIndex = 1;
|
|
174
|
+
if (data.name !== undefined) {
|
|
175
|
+
updates.push(`name = $${paramIndex}`);
|
|
176
|
+
values.push(data.name);
|
|
177
|
+
paramIndex++;
|
|
178
|
+
}
|
|
179
|
+
if (data.description !== undefined) {
|
|
180
|
+
updates.push(`description = $${paramIndex}`);
|
|
181
|
+
values.push(data.description);
|
|
182
|
+
paramIndex++;
|
|
183
|
+
}
|
|
184
|
+
if (data.settings !== undefined) {
|
|
185
|
+
updates.push(`settings = $${paramIndex}`);
|
|
186
|
+
values.push(JSON.stringify(data.settings));
|
|
187
|
+
paramIndex++;
|
|
188
|
+
}
|
|
189
|
+
if (data.isDefault !== undefined) {
|
|
190
|
+
updates.push(`is_default = $${paramIndex}`);
|
|
191
|
+
values.push(data.isDefault);
|
|
192
|
+
paramIndex++;
|
|
193
|
+
}
|
|
194
|
+
if (updates.length === 0) {
|
|
195
|
+
throw new Error('No updates provided');
|
|
196
|
+
}
|
|
197
|
+
updates.push('updated_at = NOW()');
|
|
198
|
+
values.push(id);
|
|
199
|
+
let whereClause = `WHERE id = $${paramIndex}`;
|
|
200
|
+
if (userId) {
|
|
201
|
+
values.push(userId);
|
|
202
|
+
whereClause += ` AND user_id = $${paramIndex + 1}`;
|
|
203
|
+
}
|
|
204
|
+
const result = await db.query(`UPDATE link_templates
|
|
205
|
+
SET ${updates.join(', ')}
|
|
206
|
+
${whereClause}
|
|
207
|
+
RETURNING id, user_id, name, slug, description, settings, is_default, created_at, updated_at`, values);
|
|
208
|
+
return result.rows[0];
|
|
209
|
+
});
|
|
210
|
+
// Delete template
|
|
211
|
+
fastify.delete('/api/templates/:id', async (request) => {
|
|
212
|
+
const { id } = request.params;
|
|
213
|
+
const { userId } = request.query;
|
|
214
|
+
// Check if template has any links
|
|
215
|
+
const linksCount = await db.query('SELECT COUNT(*) as count FROM links WHERE template_id = $1', [id]);
|
|
216
|
+
if (parseInt(linksCount.rows[0].count) > 0) {
|
|
217
|
+
throw new Error('Cannot delete template that has links assigned to it. Please reassign or delete the links first.');
|
|
218
|
+
}
|
|
219
|
+
let result;
|
|
220
|
+
if (userId) {
|
|
221
|
+
result = await db.query('DELETE FROM link_templates WHERE id = $1 AND user_id = $2 RETURNING id', [id, userId]);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
result = await db.query('DELETE FROM link_templates WHERE id = $1 RETURNING id', [id]);
|
|
225
|
+
}
|
|
226
|
+
if (result.rows.length === 0) {
|
|
227
|
+
throw new Error('Template not found');
|
|
228
|
+
}
|
|
229
|
+
return { success: true };
|
|
230
|
+
});
|
|
231
|
+
// Set template as default
|
|
232
|
+
fastify.put('/api/templates/:id/set-default', async (request) => {
|
|
233
|
+
const { id } = request.params;
|
|
234
|
+
const { userId } = request.query;
|
|
235
|
+
// Verify template exists
|
|
236
|
+
let existingResult;
|
|
237
|
+
if (userId) {
|
|
238
|
+
existingResult = await db.query('SELECT id FROM link_templates WHERE id = $1 AND user_id = $2', [id, userId]);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
existingResult = await db.query('SELECT id FROM link_templates WHERE id = $1', [id]);
|
|
242
|
+
}
|
|
243
|
+
if (existingResult.rows.length === 0) {
|
|
244
|
+
throw new Error('Template not found');
|
|
245
|
+
}
|
|
246
|
+
// Unset all defaults (scoped by userId if provided)
|
|
247
|
+
if (userId) {
|
|
248
|
+
await db.query('UPDATE link_templates SET is_default = false WHERE user_id = $1', [userId]);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
await db.query('UPDATE link_templates SET is_default = false');
|
|
252
|
+
}
|
|
253
|
+
// Set new default
|
|
254
|
+
const result = await db.query(`UPDATE link_templates
|
|
255
|
+
SET is_default = true, updated_at = NOW()
|
|
256
|
+
WHERE id = $1
|
|
257
|
+
RETURNING id, user_id, name, slug, description, settings, is_default, created_at, updated_at`, [id]);
|
|
258
|
+
return result.rows[0];
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/routes/templates.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,36 @@
|
|
|
1
|
+
export interface LinkTemplateSettings {
|
|
2
|
+
defaultIosUrl?: string;
|
|
3
|
+
defaultAndroidUrl?: string;
|
|
4
|
+
defaultWebFallbackUrl?: string;
|
|
5
|
+
defaultAttributionWindowHours?: number;
|
|
6
|
+
utmParameters?: UTMParameters;
|
|
7
|
+
targetingRules?: TargetingRules;
|
|
8
|
+
expiresAfterDays?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface LinkTemplate {
|
|
11
|
+
id: string;
|
|
12
|
+
userId?: string;
|
|
13
|
+
name: string;
|
|
14
|
+
slug: string;
|
|
15
|
+
description?: string;
|
|
16
|
+
settings: LinkTemplateSettings;
|
|
17
|
+
is_default: boolean;
|
|
18
|
+
created_at: string;
|
|
19
|
+
updated_at: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CreateTemplateRequest {
|
|
22
|
+
name: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
settings?: LinkTemplateSettings;
|
|
25
|
+
isDefault?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface UpdateTemplateRequest extends Partial<CreateTemplateRequest> {
|
|
28
|
+
}
|
|
1
29
|
export interface Link {
|
|
2
30
|
id: string;
|
|
3
31
|
userId?: string;
|
|
32
|
+
template_id?: string;
|
|
33
|
+
template_slug?: string;
|
|
4
34
|
short_code: string;
|
|
5
35
|
original_url: string;
|
|
6
36
|
title?: string;
|
|
@@ -59,6 +89,7 @@ export interface ClickEvent {
|
|
|
59
89
|
referrer?: string;
|
|
60
90
|
}
|
|
61
91
|
export interface CreateLinkRequest {
|
|
92
|
+
templateId?: string;
|
|
62
93
|
originalUrl: string;
|
|
63
94
|
title?: string;
|
|
64
95
|
description?: string;
|
|
@@ -151,7 +182,7 @@ export interface AnalyticsData {
|
|
|
151
182
|
uniqueClicks: number;
|
|
152
183
|
}>;
|
|
153
184
|
}
|
|
154
|
-
export type WebhookEvent = 'click_event' | 'install_event' | 'conversion_event';
|
|
185
|
+
export type WebhookEvent = 'click_event' | 'install_event' | 'conversion_event' | 'sdk_event';
|
|
155
186
|
export interface Webhook {
|
|
156
187
|
id: string;
|
|
157
188
|
user_id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|