convex-affiliates 1.1.4 → 2.0.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/README.md CHANGED
@@ -255,14 +255,22 @@ If you're not using `@convex-dev/stripe`, use the standalone handler with built-
255
255
  // convex/http.ts
256
256
  import { httpRouter } from "convex/server";
257
257
  import { components } from "./_generated/api";
258
- import { createStripeWebhookHandler } from "convex-affiliates";
258
+ import { createAffiliateApi } from "convex-affiliates";
259
259
 
260
260
  const http = httpRouter();
261
261
 
262
+ const affiliates = createAffiliateApi(components.affiliates, {
263
+ auth: async (ctx) => {
264
+ const identity = await ctx.auth.getUserIdentity();
265
+ if (!identity) throw new Error("Not authenticated");
266
+ return identity.subject;
267
+ },
268
+ });
269
+
262
270
  http.route({
263
271
  path: "/webhooks/stripe",
264
272
  method: "POST",
265
- handler: createStripeWebhookHandler(components.affiliates, {
273
+ handler: affiliates.createStripeWebhookHandler({
266
274
  webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
267
275
  }),
268
276
  });
@@ -168,19 +168,14 @@ export interface CreateAffiliateApiConfig extends AffiliateConfig {
168
168
  * import { createAffiliateApi } from "convex-affiliates";
169
169
  * import { components } from "./_generated/api";
170
170
  *
171
- * export const {
172
- * trackClick,
173
- * register,
174
- * getPortalData,
175
- * adminDashboard,
176
- * } = createAffiliateApi(components.affiliates, {
177
- * defaultCommissionValue: 25,
178
- * auth: async (ctx) => {
179
- * const identity = await ctx.auth.getUserIdentity();
180
- * if (!identity) throw new Error("Not authenticated");
181
- * return identity.subject;
182
- * },
183
- * });
171
+ * export const { trackClick, register, getPortalData } =
172
+ * createAffiliateApi(components.affiliates, {
173
+ * auth: async (ctx) => {
174
+ * const identity = await ctx.auth.getUserIdentity();
175
+ * if (!identity) throw new Error("Not authenticated");
176
+ * return identity.subject;
177
+ * },
178
+ * });
184
179
  * ```
185
180
  */
186
181
  export declare function createAffiliateApi(component: ComponentApi, config: CreateAffiliateApiConfig): {
@@ -950,14 +945,44 @@ export declare function createAffiliateApi(component: ComponentApi, config: Crea
950
945
  slug: string;
951
946
  commissionValue: number;
952
947
  }, Promise<import("../component/_generated/dataModel.js").Id<"campaigns">>>;
948
+ /**
949
+ * Register HTTP routes for affiliate functionality.
950
+ * The component reference is already available from the closure.
951
+ *
952
+ * @param http - The Convex HTTP router
953
+ * @param options - Optional configuration (e.g., pathPrefix)
954
+ *
955
+ * @example
956
+ * ```typescript
957
+ * const affiliates = createAffiliateApi(components.affiliates, { ... });
958
+ * affiliates.registerRoutes(http, { pathPrefix: "/affiliates" });
959
+ * ```
960
+ */
961
+ registerRoutes(http: HttpRouter, options?: {
962
+ pathPrefix?: string;
963
+ }): void;
964
+ /**
965
+ * Create a Stripe webhook handler that processes affiliate-related events.
966
+ * The component reference is already available from the closure.
967
+ *
968
+ * @param webhookConfig - Configuration with webhookSecret
969
+ * @returns An HTTP action handler for Stripe webhooks
970
+ *
971
+ * @example
972
+ * ```typescript
973
+ * const affiliates = createAffiliateApi(components.affiliates, { ... });
974
+ *
975
+ * http.route({
976
+ * path: "/webhooks/stripe",
977
+ * method: "POST",
978
+ * handler: affiliates.createStripeWebhookHandler({
979
+ * webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
980
+ * }),
981
+ * });
982
+ * ```
983
+ */
984
+ createStripeWebhookHandler(webhookConfig: StripeWebhookConfig): import("convex/server").PublicHttpAction;
953
985
  };
954
- /**
955
- * Register HTTP routes for affiliate functionality.
956
- * Useful for public API endpoints and webhook handling.
957
- */
958
- export declare function registerRoutes(http: HttpRouter, component: ComponentApi, options?: {
959
- pathPrefix?: string;
960
- }): void;
961
986
  export interface StripeWebhookConfig {
962
987
  /**
963
988
  * Stripe webhook signing secret (whsec_...).
@@ -966,30 +991,6 @@ export interface StripeWebhookConfig {
966
991
  */
967
992
  webhookSecret: string;
968
993
  }
969
- /**
970
- * Create a Stripe webhook handler that processes affiliate-related events.
971
- * Handles invoice.paid, charge.refunded, and checkout.session.completed events.
972
- *
973
- * @example
974
- * ```typescript
975
- * import { httpRouter } from "convex/server";
976
- * import { createStripeWebhookHandler } from "convex-affiliates";
977
- * import { components } from "./_generated/api";
978
- *
979
- * const http = httpRouter();
980
- *
981
- * http.route({
982
- * path: "/webhooks/stripe",
983
- * method: "POST",
984
- * handler: createStripeWebhookHandler(components.affiliates, {
985
- * webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
986
- * }),
987
- * });
988
- *
989
- * export default http;
990
- * ```
991
- */
992
- export declare function createStripeWebhookHandler(component: ComponentApi, config: StripeWebhookConfig): import("convex/server").PublicHttpAction;
993
994
  /**
994
995
  * Options for Stripe event handlers.
995
996
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -14,22 +14,20 @@ import { affiliateStatusValidator, payoutTermValidator, commissionTypeValidator,
14
14
  * import { createAffiliateApi } from "convex-affiliates";
15
15
  * import { components } from "./_generated/api";
16
16
  *
17
- * export const {
18
- * trackClick,
19
- * register,
20
- * getPortalData,
21
- * adminDashboard,
22
- * } = createAffiliateApi(components.affiliates, {
23
- * defaultCommissionValue: 25,
24
- * auth: async (ctx) => {
25
- * const identity = await ctx.auth.getUserIdentity();
26
- * if (!identity) throw new Error("Not authenticated");
27
- * return identity.subject;
28
- * },
29
- * });
17
+ * export const { trackClick, register, getPortalData } =
18
+ * createAffiliateApi(components.affiliates, {
19
+ * auth: async (ctx) => {
20
+ * const identity = await ctx.auth.getUserIdentity();
21
+ * if (!identity) throw new Error("Not authenticated");
22
+ * return identity.subject;
23
+ * },
24
+ * });
30
25
  * ```
31
26
  */
32
27
  export function createAffiliateApi(component, config) {
28
+ const auth = config.auth;
29
+ const isAdmin = config.isAdmin;
30
+ const hooks = config.hooks;
33
31
  const defaults = {
34
32
  defaultCommissionType: config.defaultCommissionType ?? "percentage",
35
33
  defaultCommissionValue: config.defaultCommissionValue ?? 20,
@@ -57,14 +55,14 @@ export function createAffiliateApi(component, config) {
57
55
  };
58
56
  // Helper to check admin access
59
57
  const requireAdmin = async (ctx) => {
60
- if (config.isAdmin) {
61
- const isAdmin = await config.isAdmin(ctx);
62
- if (!isAdmin)
58
+ if (isAdmin) {
59
+ const isAdminResult = await isAdmin(ctx);
60
+ if (!isAdminResult)
63
61
  throw new Error("Not authorized - admin access required");
64
62
  }
65
63
  else {
66
64
  // Fall back to just requiring auth
67
- await config.auth(ctx);
65
+ await auth(ctx);
68
66
  }
69
67
  };
70
68
  // Helper to get affiliate by userId
@@ -73,7 +71,7 @@ export function createAffiliateApi(component, config) {
73
71
  };
74
72
  // Helper to call lifecycle hooks safely (errors are logged, not thrown)
75
73
  async function callHook(hookName, data) {
76
- const hook = config.hooks?.[hookName];
74
+ const hook = hooks?.[hookName];
77
75
  if (hook) {
78
76
  try {
79
77
  await hook(data);
@@ -201,7 +199,7 @@ export function createAffiliateApi(component, config) {
201
199
  customCode: v.optional(v.string()),
202
200
  },
203
201
  handler: async (ctx, args) => {
204
- const userId = await config.auth(ctx);
202
+ const userId = await auth(ctx);
205
203
  const campaign = await ensureDefaultCampaign(ctx);
206
204
  const result = await ctx.runMutation(component.affiliates.register, {
207
205
  userId,
@@ -243,7 +241,7 @@ export function createAffiliateApi(component, config) {
243
241
  getAffiliate: queryGeneric({
244
242
  args: {},
245
243
  handler: async (ctx) => {
246
- const userId = await config.auth(ctx);
244
+ const userId = await auth(ctx);
247
245
  return ctx.runQuery(component.affiliates.getByUserId, { userId });
248
246
  },
249
247
  }),
@@ -280,7 +278,7 @@ export function createAffiliateApi(component, config) {
280
278
  payoutEmail: v.optional(v.string()),
281
279
  },
282
280
  handler: async (ctx, args) => {
283
- const userId = await config.auth(ctx);
281
+ const userId = await auth(ctx);
284
282
  const affiliate = await ctx.runQuery(component.affiliates.getByUserId, {
285
283
  userId,
286
284
  });
@@ -313,7 +311,7 @@ export function createAffiliateApi(component, config) {
313
311
  getPortalData: queryGeneric({
314
312
  args: {},
315
313
  handler: async (ctx) => {
316
- const userId = await config.auth(ctx);
314
+ const userId = await auth(ctx);
317
315
  return ctx.runQuery(component.analytics.getPortalData, { userId });
318
316
  },
319
317
  }),
@@ -345,7 +343,7 @@ export function createAffiliateApi(component, config) {
345
343
  paginationOpts: paginationOptsValidator,
346
344
  },
347
345
  handler: async (ctx, args) => {
348
- const userId = await config.auth(ctx);
346
+ const userId = await auth(ctx);
349
347
  const affiliate = await getAffiliateByUserId(ctx, userId);
350
348
  if (!affiliate) {
351
349
  return { page: [], isDone: true, continueCursor: "" };
@@ -384,7 +382,7 @@ export function createAffiliateApi(component, config) {
384
382
  paginationOpts: paginationOptsValidator,
385
383
  },
386
384
  handler: async (ctx, args) => {
387
- const userId = await config.auth(ctx);
385
+ const userId = await auth(ctx);
388
386
  const affiliate = await getAffiliateByUserId(ctx, userId);
389
387
  if (!affiliate) {
390
388
  return { page: [], isDone: true, continueCursor: "" };
@@ -421,7 +419,7 @@ export function createAffiliateApi(component, config) {
421
419
  limit: v.optional(v.number()),
422
420
  },
423
421
  handler: async (ctx, args) => {
424
- const userId = await config.auth(ctx);
422
+ const userId = await auth(ctx);
425
423
  const affiliate = await getAffiliateByUserId(ctx, userId);
426
424
  if (!affiliate) {
427
425
  return [];
@@ -465,7 +463,7 @@ export function createAffiliateApi(component, config) {
465
463
  subId: v.optional(v.string()),
466
464
  },
467
465
  handler: async (ctx, args) => {
468
- const userId = await config.auth(ctx);
466
+ const userId = await auth(ctx);
469
467
  const affiliate = await ctx.runQuery(component.affiliates.getByUserId, {
470
468
  userId,
471
469
  });
@@ -857,52 +855,149 @@ export function createAffiliateApi(component, config) {
857
855
  });
858
856
  },
859
857
  }),
860
- };
861
- }
862
- // =============================================================================
863
- // HTTP Routes Helper
864
- // =============================================================================
865
- /**
866
- * Register HTTP routes for affiliate functionality.
867
- * Useful for public API endpoints and webhook handling.
868
- */
869
- export function registerRoutes(http, component, options = {}) {
870
- const prefix = options.pathPrefix ?? "/affiliates";
871
- // Get affiliate by code (public endpoint for link validation)
872
- http.route({
873
- path: `${prefix}/affiliate/:code`,
874
- method: "GET",
875
- handler: httpActionGeneric(async (ctx, request) => {
876
- const url = new URL(request.url);
877
- const code = url.pathname.split("/").pop();
878
- if (!code) {
879
- return new Response(JSON.stringify({ error: "Code required" }), {
880
- status: 400,
881
- headers: { "Content-Type": "application/json" },
882
- });
883
- }
884
- const affiliate = await ctx.runQuery(component.affiliates.getByCode, {
885
- code: code.toUpperCase(),
858
+ // =========================================================================
859
+ // HTTP Routes
860
+ // =========================================================================
861
+ /**
862
+ * Register HTTP routes for affiliate functionality.
863
+ * The component reference is already available from the closure.
864
+ *
865
+ * @param http - The Convex HTTP router
866
+ * @param options - Optional configuration (e.g., pathPrefix)
867
+ *
868
+ * @example
869
+ * ```typescript
870
+ * const affiliates = createAffiliateApi(components.affiliates, { ... });
871
+ * affiliates.registerRoutes(http, { pathPrefix: "/affiliates" });
872
+ * ```
873
+ */
874
+ registerRoutes(http, options = {}) {
875
+ const prefix = options.pathPrefix ?? "/affiliates";
876
+ http.route({
877
+ path: `${prefix}/affiliate/:code`,
878
+ method: "GET",
879
+ handler: httpActionGeneric(async (ctx, request) => {
880
+ const url = new URL(request.url);
881
+ const code = url.pathname.split("/").pop();
882
+ if (!code) {
883
+ return new Response(JSON.stringify({ error: "Code required" }), {
884
+ status: 400,
885
+ headers: { "Content-Type": "application/json" },
886
+ });
887
+ }
888
+ const affiliate = await ctx.runQuery(component.affiliates.getByCode, {
889
+ code: code.toUpperCase(),
890
+ });
891
+ if (!affiliate) {
892
+ return new Response(JSON.stringify({ error: "Affiliate not found" }), {
893
+ status: 404,
894
+ headers: { "Content-Type": "application/json" },
895
+ });
896
+ }
897
+ return new Response(JSON.stringify({
898
+ code: affiliate.code,
899
+ displayName: affiliate.displayName,
900
+ valid: affiliate.status === "approved",
901
+ }), {
902
+ status: 200,
903
+ headers: { "Content-Type": "application/json" },
904
+ });
905
+ }),
886
906
  });
887
- if (!affiliate) {
888
- return new Response(JSON.stringify({ error: "Affiliate not found" }), {
889
- status: 404,
890
- headers: { "Content-Type": "application/json" },
891
- });
907
+ },
908
+ // =========================================================================
909
+ // Stripe Webhook Handler
910
+ // =========================================================================
911
+ /**
912
+ * Create a Stripe webhook handler that processes affiliate-related events.
913
+ * The component reference is already available from the closure.
914
+ *
915
+ * @param webhookConfig - Configuration with webhookSecret
916
+ * @returns An HTTP action handler for Stripe webhooks
917
+ *
918
+ * @example
919
+ * ```typescript
920
+ * const affiliates = createAffiliateApi(components.affiliates, { ... });
921
+ *
922
+ * http.route({
923
+ * path: "/webhooks/stripe",
924
+ * method: "POST",
925
+ * handler: affiliates.createStripeWebhookHandler({
926
+ * webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
927
+ * }),
928
+ * });
929
+ * ```
930
+ */
931
+ createStripeWebhookHandler(webhookConfig) {
932
+ if (!webhookConfig.webhookSecret) {
933
+ throw new Error("webhookSecret is required for Stripe webhook handler. " +
934
+ "Set STRIPE_WEBHOOK_SECRET in your Convex environment variables.");
892
935
  }
893
- return new Response(JSON.stringify({
894
- code: affiliate.code,
895
- displayName: affiliate.displayName,
896
- valid: affiliate.status === "approved",
897
- }), {
898
- status: 200,
899
- headers: { "Content-Type": "application/json" },
936
+ return httpActionGeneric(async (ctx, request) => {
937
+ const rawBody = await request.text();
938
+ const signature = request.headers.get("stripe-signature");
939
+ if (!signature) {
940
+ return new Response(JSON.stringify({ error: "Missing stripe-signature header" }), { status: 400, headers: { "Content-Type": "application/json" } });
941
+ }
942
+ const isValid = await verifyStripeSignature(rawBody, signature, webhookConfig.webhookSecret);
943
+ if (!isValid) {
944
+ return new Response(JSON.stringify({ error: "Invalid signature" }), {
945
+ status: 401,
946
+ headers: { "Content-Type": "application/json" },
947
+ });
948
+ }
949
+ const event = JSON.parse(rawBody);
950
+ try {
951
+ switch (event.type) {
952
+ case "invoice.paid": {
953
+ const invoice = event.data.object;
954
+ await ctx.runMutation(component.commissions.createFromInvoice, {
955
+ stripeInvoiceId: invoice.id,
956
+ stripeCustomerId: invoice.customer,
957
+ stripeChargeId: invoice.charge,
958
+ stripeSubscriptionId: invoice.subscription,
959
+ stripeProductId: invoice.lines?.data?.[0]?.price?.product,
960
+ amountPaidCents: invoice.amount_paid,
961
+ currency: invoice.currency,
962
+ affiliateCode: invoice.metadata?.affiliate_code,
963
+ });
964
+ break;
965
+ }
966
+ case "charge.refunded": {
967
+ const charge = event.data.object;
968
+ await ctx.runMutation(component.commissions.reverseByCharge, {
969
+ stripeChargeId: charge.id,
970
+ reason: charge.refunds?.data?.[0]?.reason ?? "Charge refunded",
971
+ });
972
+ break;
973
+ }
974
+ case "checkout.session.completed": {
975
+ const session = event.data.object;
976
+ await ctx.runMutation(component.referrals.linkStripeCustomer, {
977
+ stripeCustomerId: session.customer,
978
+ userId: session.client_reference_id,
979
+ affiliateCode: session.metadata?.affiliate_code,
980
+ });
981
+ break;
982
+ }
983
+ }
984
+ return new Response(JSON.stringify({ received: true }), {
985
+ status: 200,
986
+ headers: { "Content-Type": "application/json" },
987
+ });
988
+ }
989
+ catch (error) {
990
+ console.error("Stripe webhook error:", error);
991
+ return new Response(JSON.stringify({
992
+ error: error instanceof Error ? error.message : "Unknown error",
993
+ }), { status: 500, headers: { "Content-Type": "application/json" } });
994
+ }
900
995
  });
901
- }),
902
- });
996
+ },
997
+ };
903
998
  }
904
999
  // =============================================================================
905
- // Stripe Webhook Handler
1000
+ // Stripe Webhook Signature Verification
906
1001
  // =============================================================================
907
1002
  /**
908
1003
  * Verify Stripe webhook signature without the Stripe SDK.
@@ -930,98 +1025,6 @@ async function verifyStripeSignature(payload, signature, secret) {
930
1025
  // Constant-time comparison
931
1026
  return sig === expectedSig;
932
1027
  }
933
- /**
934
- * Create a Stripe webhook handler that processes affiliate-related events.
935
- * Handles invoice.paid, charge.refunded, and checkout.session.completed events.
936
- *
937
- * @example
938
- * ```typescript
939
- * import { httpRouter } from "convex/server";
940
- * import { createStripeWebhookHandler } from "convex-affiliates";
941
- * import { components } from "./_generated/api";
942
- *
943
- * const http = httpRouter();
944
- *
945
- * http.route({
946
- * path: "/webhooks/stripe",
947
- * method: "POST",
948
- * handler: createStripeWebhookHandler(components.affiliates, {
949
- * webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
950
- * }),
951
- * });
952
- *
953
- * export default http;
954
- * ```
955
- */
956
- export function createStripeWebhookHandler(component, config) {
957
- // Validate webhook secret at creation time for helpful error messages
958
- if (!config.webhookSecret) {
959
- throw new Error("webhookSecret is required for Stripe webhook handler. " +
960
- "Set STRIPE_WEBHOOK_SECRET in your Convex environment variables.");
961
- }
962
- return httpActionGeneric(async (ctx, request) => {
963
- // Get raw body for signature verification
964
- const rawBody = await request.text();
965
- // Verify signature (required)
966
- const signature = request.headers.get("stripe-signature");
967
- if (!signature) {
968
- return new Response(JSON.stringify({ error: "Missing stripe-signature header" }), { status: 400, headers: { "Content-Type": "application/json" } });
969
- }
970
- const isValid = await verifyStripeSignature(rawBody, signature, config.webhookSecret);
971
- if (!isValid) {
972
- return new Response(JSON.stringify({ error: "Invalid signature" }), {
973
- status: 401,
974
- headers: { "Content-Type": "application/json" },
975
- });
976
- }
977
- const event = JSON.parse(rawBody);
978
- try {
979
- switch (event.type) {
980
- case "invoice.paid": {
981
- const invoice = event.data.object;
982
- await ctx.runMutation(component.commissions.createFromInvoice, {
983
- stripeInvoiceId: invoice.id,
984
- stripeCustomerId: invoice.customer,
985
- stripeChargeId: invoice.charge,
986
- stripeSubscriptionId: invoice.subscription,
987
- stripeProductId: invoice.lines?.data?.[0]?.price?.product,
988
- amountPaidCents: invoice.amount_paid,
989
- currency: invoice.currency,
990
- affiliateCode: invoice.metadata?.affiliate_code,
991
- });
992
- break;
993
- }
994
- case "charge.refunded": {
995
- const charge = event.data.object;
996
- await ctx.runMutation(component.commissions.reverseByCharge, {
997
- stripeChargeId: charge.id,
998
- reason: charge.refunds?.data?.[0]?.reason ?? "Charge refunded",
999
- });
1000
- break;
1001
- }
1002
- case "checkout.session.completed": {
1003
- const session = event.data.object;
1004
- await ctx.runMutation(component.referrals.linkStripeCustomer, {
1005
- stripeCustomerId: session.customer,
1006
- userId: session.client_reference_id,
1007
- affiliateCode: session.metadata?.affiliate_code,
1008
- });
1009
- break;
1010
- }
1011
- }
1012
- return new Response(JSON.stringify({ received: true }), {
1013
- status: 200,
1014
- headers: { "Content-Type": "application/json" },
1015
- });
1016
- }
1017
- catch (error) {
1018
- console.error("Stripe webhook error:", error);
1019
- return new Response(JSON.stringify({
1020
- error: error instanceof Error ? error.message : "Unknown error",
1021
- }), { status: 500, headers: { "Content-Type": "application/json" } });
1022
- }
1023
- });
1024
- }
1025
1028
  /**
1026
1029
  * Get Stripe event handlers for affiliate tracking.
1027
1030
  * Optionally merge with your own handlers (affiliate runs first).
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "bugs": {
7
7
  "url": "https://github.com/chiemerieokorie/convex-affiliates/issues"
8
8
  },
9
- "version": "1.1.4",
9
+ "version": "2.0.0",
10
10
  "license": "Apache-2.0",
11
11
  "keywords": [
12
12
  "convex",
@@ -221,25 +221,23 @@ type _ActionCtx = { runQuery: any; runMutation: any; runAction: any; auth: Auth
221
221
  * import { createAffiliateApi } from "convex-affiliates";
222
222
  * import { components } from "./_generated/api";
223
223
  *
224
- * export const {
225
- * trackClick,
226
- * register,
227
- * getPortalData,
228
- * adminDashboard,
229
- * } = createAffiliateApi(components.affiliates, {
230
- * defaultCommissionValue: 25,
231
- * auth: async (ctx) => {
232
- * const identity = await ctx.auth.getUserIdentity();
233
- * if (!identity) throw new Error("Not authenticated");
234
- * return identity.subject;
235
- * },
236
- * });
224
+ * export const { trackClick, register, getPortalData } =
225
+ * createAffiliateApi(components.affiliates, {
226
+ * auth: async (ctx) => {
227
+ * const identity = await ctx.auth.getUserIdentity();
228
+ * if (!identity) throw new Error("Not authenticated");
229
+ * return identity.subject;
230
+ * },
231
+ * });
237
232
  * ```
238
233
  */
239
234
  export function createAffiliateApi(
240
235
  component: ComponentApi,
241
236
  config: CreateAffiliateApiConfig
242
237
  ) {
238
+ const auth = config.auth;
239
+ const isAdmin = config.isAdmin;
240
+ const hooks = config.hooks;
243
241
  const defaults = {
244
242
  defaultCommissionType: config.defaultCommissionType ?? "percentage",
245
243
  defaultCommissionValue: config.defaultCommissionValue ?? 20,
@@ -269,12 +267,12 @@ export function createAffiliateApi(
269
267
 
270
268
  // Helper to check admin access
271
269
  const requireAdmin = async (ctx: { auth: Auth }) => {
272
- if (config.isAdmin) {
273
- const isAdmin = await config.isAdmin(ctx);
274
- if (!isAdmin) throw new Error("Not authorized - admin access required");
270
+ if (isAdmin) {
271
+ const isAdminResult = await isAdmin(ctx);
272
+ if (!isAdminResult) throw new Error("Not authorized - admin access required");
275
273
  } else {
276
274
  // Fall back to just requiring auth
277
- await config.auth(ctx);
275
+ await auth(ctx);
278
276
  }
279
277
  };
280
278
 
@@ -288,7 +286,7 @@ export function createAffiliateApi(
288
286
  hookName: K,
289
287
  data: Parameters<NonNullable<AffiliateHooks[K]>>[0]
290
288
  ): Promise<void> {
291
- const hook = config.hooks?.[hookName];
289
+ const hook = hooks?.[hookName];
292
290
  if (hook) {
293
291
  try {
294
292
  await hook(data as never);
@@ -419,7 +417,7 @@ export function createAffiliateApi(
419
417
  customCode: v.optional(v.string()),
420
418
  },
421
419
  handler: async (ctx, args) => {
422
- const userId = await config.auth(ctx);
420
+ const userId = await auth(ctx);
423
421
  const campaign = await ensureDefaultCampaign(ctx);
424
422
  const result = await ctx.runMutation(component.affiliates.register, {
425
423
  userId,
@@ -464,7 +462,7 @@ export function createAffiliateApi(
464
462
  getAffiliate: queryGeneric({
465
463
  args: {},
466
464
  handler: async (ctx) => {
467
- const userId = await config.auth(ctx);
465
+ const userId = await auth(ctx);
468
466
  return ctx.runQuery(component.affiliates.getByUserId, { userId });
469
467
  },
470
468
  }),
@@ -502,7 +500,7 @@ export function createAffiliateApi(
502
500
  payoutEmail: v.optional(v.string()),
503
501
  },
504
502
  handler: async (ctx, args) => {
505
- const userId = await config.auth(ctx);
503
+ const userId = await auth(ctx);
506
504
  const affiliate = await ctx.runQuery(component.affiliates.getByUserId, {
507
505
  userId,
508
506
  });
@@ -536,7 +534,7 @@ export function createAffiliateApi(
536
534
  getPortalData: queryGeneric({
537
535
  args: {},
538
536
  handler: async (ctx) => {
539
- const userId = await config.auth(ctx);
537
+ const userId = await auth(ctx);
540
538
  return ctx.runQuery(component.analytics.getPortalData, { userId });
541
539
  },
542
540
  }),
@@ -569,7 +567,7 @@ export function createAffiliateApi(
569
567
  paginationOpts: paginationOptsValidator,
570
568
  },
571
569
  handler: async (ctx, args) => {
572
- const userId = await config.auth(ctx);
570
+ const userId = await auth(ctx);
573
571
  const affiliate = await getAffiliateByUserId(ctx, userId);
574
572
  if (!affiliate) {
575
573
  return { page: [], isDone: true, continueCursor: "" };
@@ -609,7 +607,7 @@ export function createAffiliateApi(
609
607
  paginationOpts: paginationOptsValidator,
610
608
  },
611
609
  handler: async (ctx, args) => {
612
- const userId = await config.auth(ctx);
610
+ const userId = await auth(ctx);
613
611
  const affiliate = await getAffiliateByUserId(ctx, userId);
614
612
  if (!affiliate) {
615
613
  return { page: [], isDone: true, continueCursor: "" };
@@ -654,7 +652,7 @@ export function createAffiliateApi(
654
652
  limit: v.optional(v.number()),
655
653
  },
656
654
  handler: async (ctx, args) => {
657
- const userId = await config.auth(ctx);
655
+ const userId = await auth(ctx);
658
656
  const affiliate = await getAffiliateByUserId(ctx, userId);
659
657
  if (!affiliate) {
660
658
  return [];
@@ -700,7 +698,7 @@ export function createAffiliateApi(
700
698
  subId: v.optional(v.string()),
701
699
  },
702
700
  handler: async (ctx, args) => {
703
- const userId = await config.auth(ctx);
701
+ const userId = await auth(ctx);
704
702
  const affiliate = await ctx.runQuery(component.affiliates.getByUserId, {
705
703
  userId,
706
704
  });
@@ -1133,69 +1131,184 @@ export function createAffiliateApi(
1133
1131
  });
1134
1132
  },
1135
1133
  }),
1136
- };
1137
- }
1138
1134
 
1139
- // =============================================================================
1140
- // HTTP Routes Helper
1141
- // =============================================================================
1135
+ // =========================================================================
1136
+ // HTTP Routes
1137
+ // =========================================================================
1142
1138
 
1143
- /**
1144
- * Register HTTP routes for affiliate functionality.
1145
- * Useful for public API endpoints and webhook handling.
1146
- */
1147
- export function registerRoutes(
1148
- http: HttpRouter,
1149
- component: ComponentApi,
1150
- options: {
1151
- pathPrefix?: string;
1152
- } = {}
1153
- ) {
1154
- const prefix = options.pathPrefix ?? "/affiliates";
1155
-
1156
- // Get affiliate by code (public endpoint for link validation)
1157
- http.route({
1158
- path: `${prefix}/affiliate/:code`,
1159
- method: "GET",
1160
- handler: httpActionGeneric(async (ctx, request) => {
1161
- const url = new URL(request.url);
1162
- const code = url.pathname.split("/").pop();
1163
-
1164
- if (!code) {
1165
- return new Response(JSON.stringify({ error: "Code required" }), {
1166
- status: 400,
1167
- headers: { "Content-Type": "application/json" },
1168
- });
1169
- }
1139
+ /**
1140
+ * Register HTTP routes for affiliate functionality.
1141
+ * The component reference is already available from the closure.
1142
+ *
1143
+ * @param http - The Convex HTTP router
1144
+ * @param options - Optional configuration (e.g., pathPrefix)
1145
+ *
1146
+ * @example
1147
+ * ```typescript
1148
+ * const affiliates = createAffiliateApi(components.affiliates, { ... });
1149
+ * affiliates.registerRoutes(http, { pathPrefix: "/affiliates" });
1150
+ * ```
1151
+ */
1152
+ registerRoutes(
1153
+ http: HttpRouter,
1154
+ options: { pathPrefix?: string } = {}
1155
+ ): void {
1156
+ const prefix = options.pathPrefix ?? "/affiliates";
1157
+
1158
+ http.route({
1159
+ path: `${prefix}/affiliate/:code`,
1160
+ method: "GET",
1161
+ handler: httpActionGeneric(async (ctx, request) => {
1162
+ const url = new URL(request.url);
1163
+ const code = url.pathname.split("/").pop();
1164
+
1165
+ if (!code) {
1166
+ return new Response(JSON.stringify({ error: "Code required" }), {
1167
+ status: 400,
1168
+ headers: { "Content-Type": "application/json" },
1169
+ });
1170
+ }
1171
+
1172
+ const affiliate = await ctx.runQuery(component.affiliates.getByCode, {
1173
+ code: code.toUpperCase(),
1174
+ });
1175
+
1176
+ if (!affiliate) {
1177
+ return new Response(JSON.stringify({ error: "Affiliate not found" }), {
1178
+ status: 404,
1179
+ headers: { "Content-Type": "application/json" },
1180
+ });
1181
+ }
1170
1182
 
1171
- const affiliate = await ctx.runQuery(component.affiliates.getByCode, {
1172
- code: code.toUpperCase(),
1183
+ return new Response(
1184
+ JSON.stringify({
1185
+ code: affiliate.code,
1186
+ displayName: affiliate.displayName,
1187
+ valid: affiliate.status === "approved",
1188
+ }),
1189
+ {
1190
+ status: 200,
1191
+ headers: { "Content-Type": "application/json" },
1192
+ }
1193
+ );
1194
+ }),
1173
1195
  });
1196
+ },
1174
1197
 
1175
- if (!affiliate) {
1176
- return new Response(JSON.stringify({ error: "Affiliate not found" }), {
1177
- status: 404,
1178
- headers: { "Content-Type": "application/json" },
1179
- });
1198
+ // =========================================================================
1199
+ // Stripe Webhook Handler
1200
+ // =========================================================================
1201
+
1202
+ /**
1203
+ * Create a Stripe webhook handler that processes affiliate-related events.
1204
+ * The component reference is already available from the closure.
1205
+ *
1206
+ * @param webhookConfig - Configuration with webhookSecret
1207
+ * @returns An HTTP action handler for Stripe webhooks
1208
+ *
1209
+ * @example
1210
+ * ```typescript
1211
+ * const affiliates = createAffiliateApi(components.affiliates, { ... });
1212
+ *
1213
+ * http.route({
1214
+ * path: "/webhooks/stripe",
1215
+ * method: "POST",
1216
+ * handler: affiliates.createStripeWebhookHandler({
1217
+ * webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
1218
+ * }),
1219
+ * });
1220
+ * ```
1221
+ */
1222
+ createStripeWebhookHandler(webhookConfig: StripeWebhookConfig) {
1223
+ if (!webhookConfig.webhookSecret) {
1224
+ throw new Error(
1225
+ "webhookSecret is required for Stripe webhook handler. " +
1226
+ "Set STRIPE_WEBHOOK_SECRET in your Convex environment variables."
1227
+ );
1180
1228
  }
1181
1229
 
1182
- return new Response(
1183
- JSON.stringify({
1184
- code: affiliate.code,
1185
- displayName: affiliate.displayName,
1186
- valid: affiliate.status === "approved",
1187
- }),
1188
- {
1189
- status: 200,
1190
- headers: { "Content-Type": "application/json" },
1230
+ return httpActionGeneric(async (ctx, request) => {
1231
+ const rawBody = await request.text();
1232
+
1233
+ const signature = request.headers.get("stripe-signature");
1234
+ if (!signature) {
1235
+ return new Response(
1236
+ JSON.stringify({ error: "Missing stripe-signature header" }),
1237
+ { status: 400, headers: { "Content-Type": "application/json" } }
1238
+ );
1191
1239
  }
1192
- );
1193
- }),
1194
- });
1240
+
1241
+ const isValid = await verifyStripeSignature(
1242
+ rawBody,
1243
+ signature,
1244
+ webhookConfig.webhookSecret
1245
+ );
1246
+ if (!isValid) {
1247
+ return new Response(JSON.stringify({ error: "Invalid signature" }), {
1248
+ status: 401,
1249
+ headers: { "Content-Type": "application/json" },
1250
+ });
1251
+ }
1252
+
1253
+ const event = JSON.parse(rawBody) as { type: string; data: { object: any } };
1254
+
1255
+ try {
1256
+ switch (event.type) {
1257
+ case "invoice.paid": {
1258
+ const invoice = event.data.object;
1259
+ await ctx.runMutation(component.commissions.createFromInvoice, {
1260
+ stripeInvoiceId: invoice.id,
1261
+ stripeCustomerId: invoice.customer,
1262
+ stripeChargeId: invoice.charge,
1263
+ stripeSubscriptionId: invoice.subscription,
1264
+ stripeProductId: invoice.lines?.data?.[0]?.price?.product,
1265
+ amountPaidCents: invoice.amount_paid,
1266
+ currency: invoice.currency,
1267
+ affiliateCode: invoice.metadata?.affiliate_code,
1268
+ });
1269
+ break;
1270
+ }
1271
+
1272
+ case "charge.refunded": {
1273
+ const charge = event.data.object;
1274
+ await ctx.runMutation(component.commissions.reverseByCharge, {
1275
+ stripeChargeId: charge.id,
1276
+ reason: charge.refunds?.data?.[0]?.reason ?? "Charge refunded",
1277
+ });
1278
+ break;
1279
+ }
1280
+
1281
+ case "checkout.session.completed": {
1282
+ const session = event.data.object;
1283
+ await ctx.runMutation(component.referrals.linkStripeCustomer, {
1284
+ stripeCustomerId: session.customer,
1285
+ userId: session.client_reference_id,
1286
+ affiliateCode: session.metadata?.affiliate_code,
1287
+ });
1288
+ break;
1289
+ }
1290
+ }
1291
+
1292
+ return new Response(JSON.stringify({ received: true }), {
1293
+ status: 200,
1294
+ headers: { "Content-Type": "application/json" },
1295
+ });
1296
+ } catch (error) {
1297
+ console.error("Stripe webhook error:", error);
1298
+ return new Response(
1299
+ JSON.stringify({
1300
+ error: error instanceof Error ? error.message : "Unknown error",
1301
+ }),
1302
+ { status: 500, headers: { "Content-Type": "application/json" } }
1303
+ );
1304
+ }
1305
+ });
1306
+ },
1307
+ };
1195
1308
  }
1196
1309
 
1197
1310
  // =============================================================================
1198
- // Stripe Webhook Handler
1311
+ // Stripe Webhook Signature Verification
1199
1312
  // =============================================================================
1200
1313
 
1201
1314
  /**
@@ -1250,121 +1363,6 @@ export interface StripeWebhookConfig {
1250
1363
  webhookSecret: string;
1251
1364
  }
1252
1365
 
1253
- /**
1254
- * Create a Stripe webhook handler that processes affiliate-related events.
1255
- * Handles invoice.paid, charge.refunded, and checkout.session.completed events.
1256
- *
1257
- * @example
1258
- * ```typescript
1259
- * import { httpRouter } from "convex/server";
1260
- * import { createStripeWebhookHandler } from "convex-affiliates";
1261
- * import { components } from "./_generated/api";
1262
- *
1263
- * const http = httpRouter();
1264
- *
1265
- * http.route({
1266
- * path: "/webhooks/stripe",
1267
- * method: "POST",
1268
- * handler: createStripeWebhookHandler(components.affiliates, {
1269
- * webhookSecret: process.env.STRIPE_WEBHOOK_SECRET!,
1270
- * }),
1271
- * });
1272
- *
1273
- * export default http;
1274
- * ```
1275
- */
1276
- export function createStripeWebhookHandler(
1277
- component: ComponentApi,
1278
- config: StripeWebhookConfig
1279
- ) {
1280
- // Validate webhook secret at creation time for helpful error messages
1281
- if (!config.webhookSecret) {
1282
- throw new Error(
1283
- "webhookSecret is required for Stripe webhook handler. " +
1284
- "Set STRIPE_WEBHOOK_SECRET in your Convex environment variables."
1285
- );
1286
- }
1287
-
1288
- return httpActionGeneric(async (ctx, request) => {
1289
- // Get raw body for signature verification
1290
- const rawBody = await request.text();
1291
-
1292
- // Verify signature (required)
1293
- const signature = request.headers.get("stripe-signature");
1294
- if (!signature) {
1295
- return new Response(
1296
- JSON.stringify({ error: "Missing stripe-signature header" }),
1297
- { status: 400, headers: { "Content-Type": "application/json" } }
1298
- );
1299
- }
1300
-
1301
- const isValid = await verifyStripeSignature(
1302
- rawBody,
1303
- signature,
1304
- config.webhookSecret
1305
- );
1306
- if (!isValid) {
1307
- return new Response(JSON.stringify({ error: "Invalid signature" }), {
1308
- status: 401,
1309
- headers: { "Content-Type": "application/json" },
1310
- });
1311
- }
1312
-
1313
- const event = JSON.parse(rawBody) as { type: string; data: { object: any } };
1314
-
1315
- try {
1316
- switch (event.type) {
1317
- case "invoice.paid": {
1318
- const invoice = event.data.object;
1319
- await ctx.runMutation(component.commissions.createFromInvoice, {
1320
- stripeInvoiceId: invoice.id,
1321
- stripeCustomerId: invoice.customer,
1322
- stripeChargeId: invoice.charge,
1323
- stripeSubscriptionId: invoice.subscription,
1324
- stripeProductId: invoice.lines?.data?.[0]?.price?.product,
1325
- amountPaidCents: invoice.amount_paid,
1326
- currency: invoice.currency,
1327
- affiliateCode: invoice.metadata?.affiliate_code,
1328
- });
1329
- break;
1330
- }
1331
-
1332
- case "charge.refunded": {
1333
- const charge = event.data.object;
1334
- await ctx.runMutation(component.commissions.reverseByCharge, {
1335
- stripeChargeId: charge.id,
1336
- reason: charge.refunds?.data?.[0]?.reason ?? "Charge refunded",
1337
- });
1338
- break;
1339
- }
1340
-
1341
- case "checkout.session.completed": {
1342
- const session = event.data.object;
1343
- await ctx.runMutation(component.referrals.linkStripeCustomer, {
1344
- stripeCustomerId: session.customer,
1345
- userId: session.client_reference_id,
1346
- affiliateCode: session.metadata?.affiliate_code,
1347
- });
1348
- break;
1349
- }
1350
- }
1351
-
1352
- return new Response(JSON.stringify({ received: true }), {
1353
- status: 200,
1354
- headers: { "Content-Type": "application/json" },
1355
- });
1356
- } catch (error) {
1357
- console.error("Stripe webhook error:", error);
1358
- return new Response(
1359
- JSON.stringify({
1360
- error: error instanceof Error ? error.message : "Unknown error",
1361
- }),
1362
- { status: 500, headers: { "Content-Type": "application/json" } }
1363
- );
1364
- }
1365
- });
1366
- }
1367
-
1368
1366
  // =============================================================================
1369
1367
  // @convex-dev/stripe Integration
1370
1368
  // =============================================================================