@dodopayments/better-auth 1.6.1 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/{chunk-65YIVTFE.js → chunk-6VDYFSNJ.js} +6 -6
  2. package/dist/chunk-6VDYFSNJ.js.map +1 -0
  3. package/dist/{chunk-TOPOAYYO.js → chunk-EGRIWRWP.js} +6 -3
  4. package/dist/chunk-EGRIWRWP.js.map +1 -0
  5. package/dist/{chunk-HHIXOUFD.js → chunk-XXIDSJPK.js} +4 -4
  6. package/dist/chunk-XXIDSJPK.js.map +1 -0
  7. package/dist/{chunk-DTOB4IQZ.js → chunk-YCUWFLKK.js} +15 -12
  8. package/dist/chunk-YCUWFLKK.js.map +1 -0
  9. package/dist/{chunk-ARA27DRZ.js → chunk-ZA3TNX5K.js} +11 -9
  10. package/dist/chunk-ZA3TNX5K.js.map +1 -0
  11. package/dist/client.d.cts +1 -2
  12. package/dist/client.d.ts +1 -2
  13. package/dist/hooks/customer.d.cts +1 -2
  14. package/dist/hooks/customer.d.ts +1 -2
  15. package/dist/index.cjs +36 -28
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +2 -3
  18. package/dist/index.d.ts +2 -3
  19. package/dist/index.js +6 -6
  20. package/dist/index.js.map +1 -1
  21. package/dist/plugins/checkout.cjs +5 -5
  22. package/dist/plugins/checkout.cjs.map +1 -1
  23. package/dist/plugins/checkout.d.cts +2 -3
  24. package/dist/plugins/checkout.d.ts +2 -3
  25. package/dist/plugins/checkout.js +1 -1
  26. package/dist/plugins/portal.cjs +18 -12
  27. package/dist/plugins/portal.cjs.map +1 -1
  28. package/dist/plugins/portal.d.cts +2 -3
  29. package/dist/plugins/portal.d.ts +2 -3
  30. package/dist/plugins/portal.js +2 -2
  31. package/dist/plugins/usage.cjs +14 -9
  32. package/dist/plugins/usage.cjs.map +1 -1
  33. package/dist/plugins/usage.d.cts +6 -107
  34. package/dist/plugins/usage.d.ts +6 -107
  35. package/dist/plugins/usage.js +2 -2
  36. package/dist/plugins/webhooks.cjs +3 -3
  37. package/dist/plugins/webhooks.cjs.map +1 -1
  38. package/dist/plugins/webhooks.d.cts +2 -3
  39. package/dist/plugins/webhooks.d.ts +2 -3
  40. package/dist/plugins/webhooks.js +1 -1
  41. package/dist/{types-3pb2RGTM.d.cts → types-D0tVSLaf.d.cts} +110 -9
  42. package/dist/{types-DygjjcRn.d.ts → types-D0tVSLaf.d.ts} +110 -9
  43. package/dist/types.d.cts +1 -2
  44. package/dist/types.d.ts +1 -2
  45. package/dist/utils.cjs +5 -2
  46. package/dist/utils.cjs.map +1 -1
  47. package/dist/utils.d.cts +8 -1
  48. package/dist/utils.d.ts +8 -1
  49. package/dist/utils.js +1 -1
  50. package/package.json +1 -1
  51. package/dist/chunk-65YIVTFE.js.map +0 -1
  52. package/dist/chunk-ARA27DRZ.js.map +0 -1
  53. package/dist/chunk-DTOB4IQZ.js.map +0 -1
  54. package/dist/chunk-HHIXOUFD.js.map +0 -1
  55. package/dist/chunk-TOPOAYYO.js.map +0 -1
@@ -27,7 +27,7 @@ var import_api = require("better-auth/api");
27
27
  var import_v3 = require("zod/v3");
28
28
 
29
29
  // src/utils.ts
30
- async function getOrCreateCustomerId(dodopayments, session, internalAdapter) {
30
+ async function getOrCreateCustomerId(dodopayments, session, internalAdapter, getCustomerParams) {
31
31
  const dodoCustomerId = session.user["dodoCustomerId"];
32
32
  if (dodoCustomerId) return dodoCustomerId;
33
33
  const customers = await dodopayments.customers.list({
@@ -35,9 +35,12 @@ async function getOrCreateCustomerId(dodopayments, session, internalAdapter) {
35
35
  });
36
36
  let customer = customers.items[0];
37
37
  if (!customer) {
38
+ const additionalParams = getCustomerParams ? await getCustomerParams(session.user) : void 0;
38
39
  customer = await dodopayments.customers.create({
39
40
  email: session.user.email,
40
- name: session.user.name
41
+ name: session.user.name,
42
+ metadata: additionalParams?.metadata,
43
+ phone_number: additionalParams?.phone_number
41
44
  }, { idempotencyKey: session.user.id });
42
45
  }
43
46
  internalAdapter.updateUser(session.user.id, { dodoCustomerId: customer.customer_id }).catch(() => {
@@ -54,7 +57,7 @@ var EventInputSchema = import_v3.z.object({
54
57
  "Custom Timestamp. Defaults to current timestamp in UTC. Timestamps that are older that 1 hour or after 5 mins from current timestamp will be rejected."
55
58
  )
56
59
  });
57
- var usage = () => (dodopayments) => {
60
+ var usage = () => (options) => {
58
61
  return {
59
62
  // Ingest usage data
60
63
  dodoUsageIngest: (0, import_api.createAuthEndpoint)(
@@ -77,11 +80,12 @@ var usage = () => (dodopayments) => {
77
80
  }
78
81
  try {
79
82
  const customerId = await getOrCreateCustomerId(
80
- dodopayments,
83
+ options.client,
81
84
  ctx.context.session,
82
- ctx.context.internalAdapter
85
+ ctx.context.internalAdapter,
86
+ options.getCustomerParams
83
87
  );
84
- const result = await dodopayments.usageEvents.ingest({
88
+ const result = await options.client.usageEvents.ingest({
85
89
  events: [
86
90
  {
87
91
  event_id: ctx.body.event_id,
@@ -133,11 +137,12 @@ var usage = () => (dodopayments) => {
133
137
  }
134
138
  try {
135
139
  const customerId = await getOrCreateCustomerId(
136
- dodopayments,
140
+ options.client,
137
141
  ctx.context.session,
138
- ctx.context.internalAdapter
142
+ ctx.context.internalAdapter,
143
+ options.getCustomerParams
139
144
  );
140
- const meters = await dodopayments.usageEvents.list({
145
+ const meters = await options.client.usageEvents.list({
141
146
  customer_id: customerId,
142
147
  ...ctx.query
143
148
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/usage.ts","../../src/utils.ts"],"sourcesContent":["import {\n APIError,\n createAuthEndpoint,\n sessionMiddleware,\n} from \"better-auth/api\";\nimport type { DodoPayments } from \"dodopayments\";\nimport { Event } from \"dodopayments/resources/usage-events.mjs\";\nimport { z } from \"zod/v3\";\nimport { getOrCreateCustomerId } from \"../utils\";\n\nconst EventInputSchema = z.object({\n event_id: z.string(),\n event_name: z.string(),\n metadata: z\n .record(z.union([z.string(), z.number(), z.boolean()]))\n .nullable()\n .optional(),\n timestamp: z\n // NOTE: coerce because the date object gets converted to a string over network requests\n // but we still want to enforce that it's a Date type\n .date({ coerce: true })\n .transform((d) => d.toISOString())\n .optional()\n .describe(\n \"Custom Timestamp. Defaults to current timestamp in UTC.\\\n Timestamps that are older that 1 hour or after 5 mins from\\\n current timestamp will be rejected.\",\n ),\n});\n\nexport const usage = () => (dodopayments: DodoPayments) => {\n return {\n // Ingest usage data\n dodoUsageIngest: createAuthEndpoint(\n \"/dodopayments/usage/ingest\",\n {\n method: \"POST\",\n body: EventInputSchema,\n use: [sessionMiddleware],\n },\n async (ctx): Promise<{ ingested_count: number }> => {\n if (!ctx.context.session?.user?.id) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"User not found\",\n });\n }\n\n if (!ctx.context.session?.user.emailVerified) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"User email not verified\",\n });\n }\n\n try {\n const customerId = await getOrCreateCustomerId(\n dodopayments,\n ctx.context.session,\n ctx.context.internalAdapter,\n );\n\n const result = await dodopayments.usageEvents.ingest({\n events: [\n {\n event_id: ctx.body.event_id,\n customer_id: customerId,\n event_name: ctx.body.event_name,\n timestamp: ctx.body.timestamp,\n metadata: ctx.body.metadata,\n },\n ],\n });\n\n return ctx.json({ ingested_count: result.ingested_count });\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `User usage ingestion error: ${e.message}`,\n );\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Failed to record the user usage\",\n });\n }\n },\n ),\n\n // List usage meters\n dodoUsageMetersList: createAuthEndpoint(\n \"/dodopayments/usage/meters/list\",\n {\n method: \"GET\",\n query: z\n .object({\n page_number: z.coerce.number().optional(),\n page_size: z.coerce.number().optional(),\n event_name: z.string().optional(),\n meter_id: z.string().optional(),\n start: z.string().optional(),\n end: z.string().optional(),\n })\n .optional(),\n use: [sessionMiddleware],\n },\n async (ctx): Promise<{ items: Event[] }> => {\n if (!ctx.context.session?.user?.id) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"User not found\",\n });\n }\n\n if (!ctx.context.session?.user.emailVerified) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"User email not verified\",\n });\n }\n\n try {\n const customerId = await getOrCreateCustomerId(\n dodopayments,\n ctx.context.session,\n ctx.context.internalAdapter,\n );\n\n const meters = await dodopayments.usageEvents.list({\n customer_id: customerId,\n ...ctx.query,\n });\n\n return ctx.json({ items: meters.items });\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `User usage meter list error: ${e.message}`,\n );\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Failed to fetch the user usage\",\n });\n }\n },\n ),\n };\n};\n\n","import type { DodoPayments } from \"dodopayments\";\n\nexport async function getOrCreateCustomerId(\n dodopayments: DodoPayments,\n session: { user: { id: string; email: string; name: string } & Record<string, unknown> },\n internalAdapter: { updateUser: (id: string, data: Record<string, unknown>) => Promise<unknown> },\n): Promise<string> {\n const dodoCustomerId = session.user[\"dodoCustomerId\"] as string | undefined;\n if (dodoCustomerId) return dodoCustomerId;\n\n // Fallback to get customer from email if dodoCustomerId doesn't exist\n const customers = await dodopayments.customers.list({\n email: session.user.email,\n });\n let customer = customers.items[0];\n\n if (!customer) {\n customer = await dodopayments.customers.create({\n email: session.user.email,\n name: session.user.name,\n }, { idempotencyKey: session.user.id });\n }\n\n internalAdapter\n .updateUser(session.user.id, { dodoCustomerId: customer.customer_id })\n .catch(() => {});\n\n return customer.customer_id;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/plugins/usage.ts","../../src/utils.ts"],"sourcesContent":["import {\n APIError,\n createAuthEndpoint,\n sessionMiddleware,\n} from \"better-auth/api\";\nimport type { DodoPaymentsOptions } from \"../types\";\nimport { Event } from \"dodopayments/resources/usage-events.mjs\";\nimport { z } from \"zod/v3\";\nimport { getOrCreateCustomerId } from \"../utils\";\n\nconst EventInputSchema = z.object({\n event_id: z.string(),\n event_name: z.string(),\n metadata: z\n .record(z.union([z.string(), z.number(), z.boolean()]))\n .nullable()\n .optional(),\n timestamp: z\n // NOTE: coerce because the date object gets converted to a string over network requests\n // but we still want to enforce that it's a Date type\n .date({ coerce: true })\n .transform((d) => d.toISOString())\n .optional()\n .describe(\n \"Custom Timestamp. Defaults to current timestamp in UTC.\\\n Timestamps that are older that 1 hour or after 5 mins from\\\n current timestamp will be rejected.\",\n ),\n});\n\nexport const usage = () => (options: DodoPaymentsOptions) => {\n return {\n // Ingest usage data\n dodoUsageIngest: createAuthEndpoint(\n \"/dodopayments/usage/ingest\",\n {\n method: \"POST\",\n body: EventInputSchema,\n use: [sessionMiddleware],\n },\n async (ctx): Promise<{ ingested_count: number }> => {\n if (!ctx.context.session?.user?.id) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"User not found\",\n });\n }\n\n if (!ctx.context.session?.user.emailVerified) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"User email not verified\",\n });\n }\n\n try {\n const customerId = await getOrCreateCustomerId(\n options.client,\n ctx.context.session,\n ctx.context.internalAdapter,\n options.getCustomerParams,\n );\n\n const result = await options.client.usageEvents.ingest({\n events: [\n {\n event_id: ctx.body.event_id,\n customer_id: customerId,\n event_name: ctx.body.event_name,\n timestamp: ctx.body.timestamp,\n metadata: ctx.body.metadata,\n },\n ],\n });\n\n return ctx.json({ ingested_count: result.ingested_count });\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `User usage ingestion error: ${e.message}`,\n );\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Failed to record the user usage\",\n });\n }\n },\n ),\n\n // List usage meters\n dodoUsageMetersList: createAuthEndpoint(\n \"/dodopayments/usage/meters/list\",\n {\n method: \"GET\",\n query: z\n .object({\n page_number: z.coerce.number().optional(),\n page_size: z.coerce.number().optional(),\n event_name: z.string().optional(),\n meter_id: z.string().optional(),\n start: z.string().optional(),\n end: z.string().optional(),\n })\n .optional(),\n use: [sessionMiddleware],\n },\n async (ctx): Promise<{ items: Event[] }> => {\n if (!ctx.context.session?.user?.id) {\n throw new APIError(\"BAD_REQUEST\", {\n message: \"User not found\",\n });\n }\n\n if (!ctx.context.session?.user.emailVerified) {\n throw new APIError(\"UNAUTHORIZED\", {\n message: \"User email not verified\",\n });\n }\n\n try {\n const customerId = await getOrCreateCustomerId(\n options.client,\n ctx.context.session,\n ctx.context.internalAdapter,\n options.getCustomerParams,\n );\n\n const meters = await options.client.usageEvents.list({\n customer_id: customerId,\n ...ctx.query,\n });\n\n return ctx.json({ items: meters.items });\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `User usage meter list error: ${e.message}`,\n );\n }\n\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Failed to fetch the user usage\",\n });\n }\n },\n ),\n };\n};\n\n","import type { DodoPayments } from \"dodopayments\";\nimport type { User } from \"better-auth\";\n\nexport async function getOrCreateCustomerId(\n dodopayments: DodoPayments,\n session: { user: { id: string; email: string; name: string } & Record<string, unknown> },\n internalAdapter: { updateUser: (id: string, data: Record<string, unknown>) => Promise<unknown> },\n getCustomerParams?: (user: User) => { metadata?: Record<string, string>; phone_number?: string | null } | Promise<{ metadata?: Record<string, string>; phone_number?: string | null }>,\n): Promise<string> {\n const dodoCustomerId = session.user[\"dodoCustomerId\"] as string | undefined;\n if (dodoCustomerId) return dodoCustomerId;\n\n // Fallback to get customer from email if dodoCustomerId doesn't exist\n const customers = await dodopayments.customers.list({\n email: session.user.email,\n });\n let customer = customers.items[0];\n\n if (!customer) {\n const additionalParams = getCustomerParams\n ? await getCustomerParams(session.user as User)\n : undefined;\n\n customer = await dodopayments.customers.create({\n email: session.user.email,\n name: session.user.name,\n metadata: additionalParams?.metadata,\n phone_number: additionalParams?.phone_number,\n }, { idempotencyKey: session.user.id });\n }\n\n internalAdapter\n .updateUser(session.user.id, { dodoCustomerId: customer.customer_id })\n .catch(() => {});\n\n return customer.customer_id;\n}\n"],"mappings":"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","names":[]}
@@ -1,107 +1,6 @@
1
- import * as better_auth from 'better-auth';
2
- import { DodoPayments } from 'dodopayments';
3
- import { Event } from 'dodopayments/resources/usage-events.mjs';
4
- import { z } from 'zod/v3';
5
-
6
- declare const usage: () => (dodopayments: DodoPayments) => {
7
- dodoUsageIngest: better_auth.StrictEndpoint<"/dodopayments/usage/ingest", {
8
- method: "POST";
9
- body: z.ZodObject<{
10
- event_id: z.ZodString;
11
- event_name: z.ZodString;
12
- metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>>;
13
- timestamp: z.ZodOptional<z.ZodEffects<z.ZodDate, string, Date>>;
14
- }, "strip", z.ZodTypeAny, {
15
- event_id: string;
16
- event_name: string;
17
- metadata?: Record<string, string | number | boolean> | null | undefined;
18
- timestamp?: string | undefined;
19
- }, {
20
- event_id: string;
21
- event_name: string;
22
- metadata?: Record<string, string | number | boolean> | null | undefined;
23
- timestamp?: Date | undefined;
24
- }>;
25
- use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
26
- session: {
27
- session: Record<string, any> & {
28
- id: string;
29
- createdAt: Date;
30
- updatedAt: Date;
31
- userId: string;
32
- expiresAt: Date;
33
- token: string;
34
- ipAddress?: string | null | undefined;
35
- userAgent?: string | null | undefined;
36
- };
37
- user: Record<string, any> & {
38
- id: string;
39
- createdAt: Date;
40
- updatedAt: Date;
41
- email: string;
42
- emailVerified: boolean;
43
- name: string;
44
- image?: string | null | undefined;
45
- };
46
- };
47
- }>)[];
48
- } & {
49
- use: any[];
50
- }, {
51
- ingested_count: number;
52
- }>;
53
- dodoUsageMetersList: better_auth.StrictEndpoint<"/dodopayments/usage/meters/list", {
54
- method: "GET";
55
- query: z.ZodOptional<z.ZodObject<{
56
- page_number: z.ZodOptional<z.ZodNumber>;
57
- page_size: z.ZodOptional<z.ZodNumber>;
58
- event_name: z.ZodOptional<z.ZodString>;
59
- meter_id: z.ZodOptional<z.ZodString>;
60
- start: z.ZodOptional<z.ZodString>;
61
- end: z.ZodOptional<z.ZodString>;
62
- }, "strip", z.ZodTypeAny, {
63
- event_name?: string | undefined;
64
- page_number?: number | undefined;
65
- page_size?: number | undefined;
66
- meter_id?: string | undefined;
67
- start?: string | undefined;
68
- end?: string | undefined;
69
- }, {
70
- event_name?: string | undefined;
71
- page_number?: number | undefined;
72
- page_size?: number | undefined;
73
- meter_id?: string | undefined;
74
- start?: string | undefined;
75
- end?: string | undefined;
76
- }>>;
77
- use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
78
- session: {
79
- session: Record<string, any> & {
80
- id: string;
81
- createdAt: Date;
82
- updatedAt: Date;
83
- userId: string;
84
- expiresAt: Date;
85
- token: string;
86
- ipAddress?: string | null | undefined;
87
- userAgent?: string | null | undefined;
88
- };
89
- user: Record<string, any> & {
90
- id: string;
91
- createdAt: Date;
92
- updatedAt: Date;
93
- email: string;
94
- emailVerified: boolean;
95
- name: string;
96
- image?: string | null | undefined;
97
- };
98
- };
99
- }>)[];
100
- } & {
101
- use: any[];
102
- }, {
103
- items: Event[];
104
- }>;
105
- };
106
-
107
- export { usage };
1
+ import 'better-auth';
2
+ export { u as usage } from '../types-D0tVSLaf.cjs';
3
+ import 'dodopayments/resources/usage-events.mjs';
4
+ import 'zod/v3';
5
+ import 'dodopayments';
6
+ import '@dodopayments/core/webhook';
@@ -1,107 +1,6 @@
1
- import * as better_auth from 'better-auth';
2
- import { DodoPayments } from 'dodopayments';
3
- import { Event } from 'dodopayments/resources/usage-events.mjs';
4
- import { z } from 'zod/v3';
5
-
6
- declare const usage: () => (dodopayments: DodoPayments) => {
7
- dodoUsageIngest: better_auth.StrictEndpoint<"/dodopayments/usage/ingest", {
8
- method: "POST";
9
- body: z.ZodObject<{
10
- event_id: z.ZodString;
11
- event_name: z.ZodString;
12
- metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>>;
13
- timestamp: z.ZodOptional<z.ZodEffects<z.ZodDate, string, Date>>;
14
- }, "strip", z.ZodTypeAny, {
15
- event_id: string;
16
- event_name: string;
17
- metadata?: Record<string, string | number | boolean> | null | undefined;
18
- timestamp?: string | undefined;
19
- }, {
20
- event_id: string;
21
- event_name: string;
22
- metadata?: Record<string, string | number | boolean> | null | undefined;
23
- timestamp?: Date | undefined;
24
- }>;
25
- use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
26
- session: {
27
- session: Record<string, any> & {
28
- id: string;
29
- createdAt: Date;
30
- updatedAt: Date;
31
- userId: string;
32
- expiresAt: Date;
33
- token: string;
34
- ipAddress?: string | null | undefined;
35
- userAgent?: string | null | undefined;
36
- };
37
- user: Record<string, any> & {
38
- id: string;
39
- createdAt: Date;
40
- updatedAt: Date;
41
- email: string;
42
- emailVerified: boolean;
43
- name: string;
44
- image?: string | null | undefined;
45
- };
46
- };
47
- }>)[];
48
- } & {
49
- use: any[];
50
- }, {
51
- ingested_count: number;
52
- }>;
53
- dodoUsageMetersList: better_auth.StrictEndpoint<"/dodopayments/usage/meters/list", {
54
- method: "GET";
55
- query: z.ZodOptional<z.ZodObject<{
56
- page_number: z.ZodOptional<z.ZodNumber>;
57
- page_size: z.ZodOptional<z.ZodNumber>;
58
- event_name: z.ZodOptional<z.ZodString>;
59
- meter_id: z.ZodOptional<z.ZodString>;
60
- start: z.ZodOptional<z.ZodString>;
61
- end: z.ZodOptional<z.ZodString>;
62
- }, "strip", z.ZodTypeAny, {
63
- event_name?: string | undefined;
64
- page_number?: number | undefined;
65
- page_size?: number | undefined;
66
- meter_id?: string | undefined;
67
- start?: string | undefined;
68
- end?: string | undefined;
69
- }, {
70
- event_name?: string | undefined;
71
- page_number?: number | undefined;
72
- page_size?: number | undefined;
73
- meter_id?: string | undefined;
74
- start?: string | undefined;
75
- end?: string | undefined;
76
- }>>;
77
- use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
78
- session: {
79
- session: Record<string, any> & {
80
- id: string;
81
- createdAt: Date;
82
- updatedAt: Date;
83
- userId: string;
84
- expiresAt: Date;
85
- token: string;
86
- ipAddress?: string | null | undefined;
87
- userAgent?: string | null | undefined;
88
- };
89
- user: Record<string, any> & {
90
- id: string;
91
- createdAt: Date;
92
- updatedAt: Date;
93
- email: string;
94
- emailVerified: boolean;
95
- name: string;
96
- image?: string | null | undefined;
97
- };
98
- };
99
- }>)[];
100
- } & {
101
- use: any[];
102
- }, {
103
- items: Event[];
104
- }>;
105
- };
106
-
107
- export { usage };
1
+ import 'better-auth';
2
+ export { u as usage } from '../types-D0tVSLaf.js';
3
+ import 'dodopayments/resources/usage-events.mjs';
4
+ import 'zod/v3';
5
+ import 'dodopayments';
6
+ import '@dodopayments/core/webhook';
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  usage
3
- } from "../chunk-ARA27DRZ.js";
4
- import "../chunk-TOPOAYYO.js";
3
+ } from "../chunk-ZA3TNX5K.js";
4
+ import "../chunk-EGRIWRWP.js";
5
5
  export {
6
6
  usage
7
7
  };
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(webhooks_exports);
26
26
  var import_webhook = require("@dodopayments/core/webhook");
27
27
  var import_api = require("better-auth/api");
28
28
  var import_webhook2 = require("@dodopayments/core/webhook");
29
- var webhooks = (options) => (_dodopayments) => {
29
+ var webhooks = (webhookOptions) => (_options) => {
30
30
  return {
31
31
  dodopaymentsWebhooks: (0, import_api.createAuthEndpoint)(
32
32
  "/dodopayments/webhooks",
@@ -38,7 +38,7 @@ var webhooks = (options) => (_dodopayments) => {
38
38
  cloneRequest: true
39
39
  },
40
40
  async (ctx) => {
41
- const { webhookKey } = options;
41
+ const { webhookKey } = webhookOptions;
42
42
  if (!ctx.request?.body) {
43
43
  throw new import_api.APIError("INTERNAL_SERVER_ERROR");
44
44
  }
@@ -76,7 +76,7 @@ var webhooks = (options) => (_dodopayments) => {
76
76
  });
77
77
  }
78
78
  try {
79
- await (0, import_webhook.handleWebhookPayload)(event, options);
79
+ await (0, import_webhook.handleWebhookPayload)(event, webhookOptions);
80
80
  } catch (e) {
81
81
  if (e instanceof Error) {
82
82
  ctx.context.logger.error(
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/plugins/webhooks.ts"],"sourcesContent":["import type { DodoPayments } from \"dodopayments\";\nimport {\n handleWebhookPayload,\n WebhookHandlerConfig,\n} from \"@dodopayments/core/webhook\";\nimport { APIError, createAuthEndpoint } from \"better-auth/api\";\nimport { WebhookPayload } from \"@dodopayments/core/schemas\";\nimport { verifyWebhookPayload } from \"@dodopayments/core/webhook\";\nimport type { WebhookResponse } from \"../types\";\n\nexport const webhooks =\n (options: WebhookHandlerConfig) => (_dodopayments: DodoPayments) => {\n return {\n dodopaymentsWebhooks: createAuthEndpoint(\n \"/dodopayments/webhooks\",\n {\n method: \"POST\",\n metadata: {\n isAction: false,\n },\n cloneRequest: true,\n },\n async (ctx): Promise<WebhookResponse> => {\n const { webhookKey } = options;\n\n if (!ctx.request?.body) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\");\n }\n const buf = await ctx.request.text();\n let event: WebhookPayload;\n try {\n if (!webhookKey) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"DodoPayments webhook webhookKey not found\",\n });\n }\n\n const headers = {\n \"webhook-id\": ctx.request.headers.get(\"webhook-id\") as string,\n \"webhook-timestamp\": ctx.request.headers.get(\n \"webhook-timestamp\",\n ) as string,\n \"webhook-signature\": ctx.request.headers.get(\n \"webhook-signature\",\n ) as string,\n };\n\n event = await verifyWebhookPayload({\n webhookKey,\n headers,\n body: buf,\n });\n } catch (err: unknown) {\n if (err instanceof Error) {\n ctx.context.logger.error(`Webhook Error: ${err.message}`);\n throw new APIError(\"BAD_REQUEST\", {\n message: `Webhook Error: ${err.message}`,\n });\n }\n\n throw new APIError(\"BAD_REQUEST\", {\n message: `Webhook Error: ${err}`,\n });\n }\n\n try {\n await handleWebhookPayload(event, options);\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `DodoPayments webhook failed. Error: ${e.message}`,\n );\n }\n\n ctx.context.logger.error(\n `DodoPayments webhook failed. Error: ${e}`,\n );\n\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Webhook error: See server logs for more information.\",\n });\n }\n\n return ctx.json({ received: true });\n },\n ),\n };\n };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAGO;AACP,iBAA6C;AAE7C,IAAAA,kBAAqC;AAG9B,IAAM,WACX,CAAC,YAAkC,CAAC,kBAAgC;AAClE,SAAO;AAAA,IACL,0BAAsB;AAAA,MACpB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,UAAU;AAAA,UACR,UAAU;AAAA,QACZ;AAAA,QACA,cAAc;AAAA,MAChB;AAAA,MACA,OAAO,QAAkC;AACvC,cAAM,EAAE,WAAW,IAAI;AAEvB,YAAI,CAAC,IAAI,SAAS,MAAM;AACtB,gBAAM,IAAI,oBAAS,uBAAuB;AAAA,QAC5C;AACA,cAAM,MAAM,MAAM,IAAI,QAAQ,KAAK;AACnC,YAAI;AACJ,YAAI;AACF,cAAI,CAAC,YAAY;AACf,kBAAM,IAAI,oBAAS,yBAAyB;AAAA,cAC1C,SAAS;AAAA,YACX,CAAC;AAAA,UACH;AAEA,gBAAM,UAAU;AAAA,YACd,cAAc,IAAI,QAAQ,QAAQ,IAAI,YAAY;AAAA,YAClD,qBAAqB,IAAI,QAAQ,QAAQ;AAAA,cACvC;AAAA,YACF;AAAA,YACA,qBAAqB,IAAI,QAAQ,QAAQ;AAAA,cACvC;AAAA,YACF;AAAA,UACF;AAEA,kBAAQ,UAAM,sCAAqB;AAAA,YACjC;AAAA,YACA;AAAA,YACA,MAAM;AAAA,UACR,CAAC;AAAA,QACH,SAAS,KAAc;AACrB,cAAI,eAAe,OAAO;AACxB,gBAAI,QAAQ,OAAO,MAAM,kBAAkB,IAAI,OAAO,EAAE;AACxD,kBAAM,IAAI,oBAAS,eAAe;AAAA,cAChC,SAAS,kBAAkB,IAAI,OAAO;AAAA,YACxC,CAAC;AAAA,UACH;AAEA,gBAAM,IAAI,oBAAS,eAAe;AAAA,YAChC,SAAS,kBAAkB,GAAG;AAAA,UAChC,CAAC;AAAA,QACH;AAEA,YAAI;AACF,oBAAM,qCAAqB,OAAO,OAAO;AAAA,QAC3C,SAAS,GAAY;AACnB,cAAI,aAAa,OAAO;AACtB,gBAAI,QAAQ,OAAO;AAAA,cACjB,uCAAuC,EAAE,OAAO;AAAA,YAClD;AAAA,UACF;AAEA,cAAI,QAAQ,OAAO;AAAA,YACjB,uCAAuC,CAAC;AAAA,UAC1C;AAEA,gBAAM,IAAI,oBAAS,eAAe;AAAA,YAChC,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAEA,eAAO,IAAI,KAAK,EAAE,UAAU,KAAK,CAAC;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACF;","names":["import_webhook"]}
1
+ {"version":3,"sources":["../../src/plugins/webhooks.ts"],"sourcesContent":["import type { DodoPaymentsOptions } from \"../types\";\nimport {\n handleWebhookPayload,\n WebhookHandlerConfig,\n} from \"@dodopayments/core/webhook\";\nimport { APIError, createAuthEndpoint } from \"better-auth/api\";\nimport { WebhookPayload } from \"@dodopayments/core/schemas\";\nimport { verifyWebhookPayload } from \"@dodopayments/core/webhook\";\nimport type { WebhookResponse } from \"../types\";\n\nexport const webhooks =\n (webhookOptions: WebhookHandlerConfig) => (_options: DodoPaymentsOptions) => {\n return {\n dodopaymentsWebhooks: createAuthEndpoint(\n \"/dodopayments/webhooks\",\n {\n method: \"POST\",\n metadata: {\n isAction: false,\n },\n cloneRequest: true,\n },\n async (ctx): Promise<WebhookResponse> => {\n const { webhookKey } = webhookOptions;\n\n if (!ctx.request?.body) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\");\n }\n const buf = await ctx.request.text();\n let event: WebhookPayload;\n try {\n if (!webhookKey) {\n throw new APIError(\"INTERNAL_SERVER_ERROR\", {\n message: \"DodoPayments webhook webhookKey not found\",\n });\n }\n\n const headers = {\n \"webhook-id\": ctx.request.headers.get(\"webhook-id\") as string,\n \"webhook-timestamp\": ctx.request.headers.get(\n \"webhook-timestamp\",\n ) as string,\n \"webhook-signature\": ctx.request.headers.get(\n \"webhook-signature\",\n ) as string,\n };\n\n event = await verifyWebhookPayload({\n webhookKey,\n headers,\n body: buf,\n });\n } catch (err: unknown) {\n if (err instanceof Error) {\n ctx.context.logger.error(`Webhook Error: ${err.message}`);\n throw new APIError(\"BAD_REQUEST\", {\n message: `Webhook Error: ${err.message}`,\n });\n }\n\n throw new APIError(\"BAD_REQUEST\", {\n message: `Webhook Error: ${err}`,\n });\n }\n\n try {\n await handleWebhookPayload(event, webhookOptions);\n } catch (e: unknown) {\n if (e instanceof Error) {\n ctx.context.logger.error(\n `DodoPayments webhook failed. Error: ${e.message}`,\n );\n }\n\n ctx.context.logger.error(\n `DodoPayments webhook failed. Error: ${e}`,\n );\n\n throw new APIError(\"BAD_REQUEST\", {\n message: \"Webhook error: See server logs for more information.\",\n });\n }\n\n return ctx.json({ received: true });\n },\n ),\n };\n };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAGO;AACP,iBAA6C;AAE7C,IAAAA,kBAAqC;AAG9B,IAAM,WACX,CAAC,mBAAyC,CAAC,aAAkC;AAC3E,SAAO;AAAA,IACL,0BAAsB;AAAA,MACpB;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,UAAU;AAAA,UACR,UAAU;AAAA,QACZ;AAAA,QACA,cAAc;AAAA,MAChB;AAAA,MACA,OAAO,QAAkC;AACvC,cAAM,EAAE,WAAW,IAAI;AAEvB,YAAI,CAAC,IAAI,SAAS,MAAM;AACtB,gBAAM,IAAI,oBAAS,uBAAuB;AAAA,QAC5C;AACA,cAAM,MAAM,MAAM,IAAI,QAAQ,KAAK;AACnC,YAAI;AACJ,YAAI;AACF,cAAI,CAAC,YAAY;AACf,kBAAM,IAAI,oBAAS,yBAAyB;AAAA,cAC1C,SAAS;AAAA,YACX,CAAC;AAAA,UACH;AAEA,gBAAM,UAAU;AAAA,YACd,cAAc,IAAI,QAAQ,QAAQ,IAAI,YAAY;AAAA,YAClD,qBAAqB,IAAI,QAAQ,QAAQ;AAAA,cACvC;AAAA,YACF;AAAA,YACA,qBAAqB,IAAI,QAAQ,QAAQ;AAAA,cACvC;AAAA,YACF;AAAA,UACF;AAEA,kBAAQ,UAAM,sCAAqB;AAAA,YACjC;AAAA,YACA;AAAA,YACA,MAAM;AAAA,UACR,CAAC;AAAA,QACH,SAAS,KAAc;AACrB,cAAI,eAAe,OAAO;AACxB,gBAAI,QAAQ,OAAO,MAAM,kBAAkB,IAAI,OAAO,EAAE;AACxD,kBAAM,IAAI,oBAAS,eAAe;AAAA,cAChC,SAAS,kBAAkB,IAAI,OAAO;AAAA,YACxC,CAAC;AAAA,UACH;AAEA,gBAAM,IAAI,oBAAS,eAAe;AAAA,YAChC,SAAS,kBAAkB,GAAG;AAAA,UAChC,CAAC;AAAA,QACH;AAEA,YAAI;AACF,oBAAM,qCAAqB,OAAO,cAAc;AAAA,QAClD,SAAS,GAAY;AACnB,cAAI,aAAa,OAAO;AACtB,gBAAI,QAAQ,OAAO;AAAA,cACjB,uCAAuC,EAAE,OAAO;AAAA,YAClD;AAAA,UACF;AAEA,cAAI,QAAQ,OAAO;AAAA,YACjB,uCAAuC,CAAC;AAAA,UAC1C;AAEA,gBAAM,IAAI,oBAAS,eAAe;AAAA,YAChC,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AAEA,eAAO,IAAI,KAAK,EAAE,UAAU,KAAK,CAAC;AAAA,MACpC;AAAA,IACF;AAAA,EACF;AACF;","names":["import_webhook"]}
@@ -1,7 +1,6 @@
1
1
  import 'better-auth';
2
- import 'dodopayments';
2
+ export { w as webhooks } from '../types-D0tVSLaf.cjs';
3
3
  import '@dodopayments/core/webhook';
4
- export { w as webhooks } from '../types-3pb2RGTM.cjs';
4
+ import 'dodopayments';
5
5
  import 'zod/v3';
6
- import './usage.cjs';
7
6
  import 'dodopayments/resources/usage-events.mjs';
@@ -1,7 +1,6 @@
1
1
  import 'better-auth';
2
- import 'dodopayments';
2
+ export { w as webhooks } from '../types-D0tVSLaf.js';
3
3
  import '@dodopayments/core/webhook';
4
- export { w as webhooks } from '../types-DygjjcRn.js';
4
+ import 'dodopayments';
5
5
  import 'zod/v3';
6
- import './usage.js';
7
6
  import 'dodopayments/resources/usage-events.mjs';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  webhooks
3
- } from "../chunk-HHIXOUFD.js";
3
+ } from "../chunk-XXIDSJPK.js";
4
4
  export {
5
5
  webhooks
6
6
  };
@@ -1,9 +1,9 @@
1
- import DodoPayments, { DodoPayments as DodoPayments$1 } from 'dodopayments';
1
+ import { DodoPayments } from 'dodopayments';
2
2
  import * as better_auth from 'better-auth';
3
3
  import { User, UnionToIntersection } from 'better-auth';
4
4
  import { z } from 'zod/v3';
5
5
  import { WebhookHandlerConfig } from '@dodopayments/core/webhook';
6
- import { usage } from './plugins/usage.cjs';
6
+ import { Event } from 'dodopayments/resources/usage-events.mjs';
7
7
 
8
8
  interface CheckoutOptions {
9
9
  /**
@@ -19,7 +19,7 @@ interface CheckoutOptions {
19
19
  */
20
20
  authenticatedUsersOnly?: boolean;
21
21
  }
22
- declare const checkout: (checkoutOptions?: CheckoutOptions) => (dodopayments: DodoPayments) => {
22
+ declare const checkout: (checkoutOptions?: CheckoutOptions) => (options: DodoPaymentsOptions) => {
23
23
  /**
24
24
  * @deprecated
25
25
  */
@@ -526,7 +526,7 @@ declare const checkout: (checkoutOptions?: CheckoutOptions) => (dodopayments: Do
526
526
  }, CreateCheckoutResponse>;
527
527
  };
528
528
 
529
- declare const portal: () => (dodopayments: DodoPayments$1) => {
529
+ declare const portal: () => (options: DodoPaymentsOptions) => {
530
530
  dodoPortal: better_auth.StrictEndpoint<"/dodopayments/customer/portal", {
531
531
  method: "GET";
532
532
  use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
@@ -639,7 +639,7 @@ declare const portal: () => (dodopayments: DodoPayments$1) => {
639
639
  }, PaymentItems>;
640
640
  };
641
641
 
642
- declare const webhooks: (options: WebhookHandlerConfig) => (_dodopayments: DodoPayments$1) => {
642
+ declare const webhooks: (webhookOptions: WebhookHandlerConfig) => (_options: DodoPaymentsOptions) => {
643
643
  dodopaymentsWebhooks: better_auth.StrictEndpoint<"/dodopayments/webhooks", {
644
644
  method: "POST";
645
645
  metadata: {
@@ -651,6 +651,107 @@ declare const webhooks: (options: WebhookHandlerConfig) => (_dodopayments: DodoP
651
651
  }, WebhookResponse>;
652
652
  };
653
653
 
654
+ declare const usage: () => (options: DodoPaymentsOptions) => {
655
+ dodoUsageIngest: better_auth.StrictEndpoint<"/dodopayments/usage/ingest", {
656
+ method: "POST";
657
+ body: z.ZodObject<{
658
+ event_id: z.ZodString;
659
+ event_name: z.ZodString;
660
+ metadata: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>>;
661
+ timestamp: z.ZodOptional<z.ZodEffects<z.ZodDate, string, Date>>;
662
+ }, "strip", z.ZodTypeAny, {
663
+ event_id: string;
664
+ event_name: string;
665
+ metadata?: Record<string, string | number | boolean> | null | undefined;
666
+ timestamp?: string | undefined;
667
+ }, {
668
+ event_id: string;
669
+ event_name: string;
670
+ metadata?: Record<string, string | number | boolean> | null | undefined;
671
+ timestamp?: Date | undefined;
672
+ }>;
673
+ use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
674
+ session: {
675
+ session: Record<string, any> & {
676
+ id: string;
677
+ createdAt: Date;
678
+ updatedAt: Date;
679
+ userId: string;
680
+ expiresAt: Date;
681
+ token: string;
682
+ ipAddress?: string | null | undefined;
683
+ userAgent?: string | null | undefined;
684
+ };
685
+ user: Record<string, any> & {
686
+ id: string;
687
+ createdAt: Date;
688
+ updatedAt: Date;
689
+ email: string;
690
+ emailVerified: boolean;
691
+ name: string;
692
+ image?: string | null | undefined;
693
+ };
694
+ };
695
+ }>)[];
696
+ } & {
697
+ use: any[];
698
+ }, {
699
+ ingested_count: number;
700
+ }>;
701
+ dodoUsageMetersList: better_auth.StrictEndpoint<"/dodopayments/usage/meters/list", {
702
+ method: "GET";
703
+ query: z.ZodOptional<z.ZodObject<{
704
+ page_number: z.ZodOptional<z.ZodNumber>;
705
+ page_size: z.ZodOptional<z.ZodNumber>;
706
+ event_name: z.ZodOptional<z.ZodString>;
707
+ meter_id: z.ZodOptional<z.ZodString>;
708
+ start: z.ZodOptional<z.ZodString>;
709
+ end: z.ZodOptional<z.ZodString>;
710
+ }, "strip", z.ZodTypeAny, {
711
+ event_name?: string | undefined;
712
+ page_number?: number | undefined;
713
+ page_size?: number | undefined;
714
+ meter_id?: string | undefined;
715
+ start?: string | undefined;
716
+ end?: string | undefined;
717
+ }, {
718
+ event_name?: string | undefined;
719
+ page_number?: number | undefined;
720
+ page_size?: number | undefined;
721
+ meter_id?: string | undefined;
722
+ start?: string | undefined;
723
+ end?: string | undefined;
724
+ }>>;
725
+ use: ((inputContext: better_auth.MiddlewareInputContext<better_auth.MiddlewareOptions>) => Promise<{
726
+ session: {
727
+ session: Record<string, any> & {
728
+ id: string;
729
+ createdAt: Date;
730
+ updatedAt: Date;
731
+ userId: string;
732
+ expiresAt: Date;
733
+ token: string;
734
+ ipAddress?: string | null | undefined;
735
+ userAgent?: string | null | undefined;
736
+ };
737
+ user: Record<string, any> & {
738
+ id: string;
739
+ createdAt: Date;
740
+ updatedAt: Date;
741
+ email: string;
742
+ emailVerified: boolean;
743
+ name: string;
744
+ image?: string | null | undefined;
745
+ };
746
+ };
747
+ }>)[];
748
+ } & {
749
+ use: any[];
750
+ }, {
751
+ items: Event[];
752
+ }>;
753
+ };
754
+
654
755
  type Product = {
655
756
  /**
656
757
  * Product Id from DodoPayments Product
@@ -668,7 +769,7 @@ interface DodoPaymentsOptions {
668
769
  /**
669
770
  * DodoPayments Client
670
771
  */
671
- client: DodoPayments$1;
772
+ client: DodoPayments;
672
773
  /**
673
774
  * Enable customer creation when a user signs up
674
775
  */
@@ -689,8 +790,8 @@ interface DodoPaymentsOptions {
689
790
  phone_number?: string | null;
690
791
  }>;
691
792
  }
692
- type PaymentsList = Awaited<ReturnType<DodoPayments$1["payments"]["list"]>>;
693
- type SubscriptionsList = Awaited<ReturnType<DodoPayments$1["subscriptions"]["list"]>>;
793
+ type PaymentsList = Awaited<ReturnType<DodoPayments["payments"]["list"]>>;
794
+ type SubscriptionsList = Awaited<ReturnType<DodoPayments["subscriptions"]["list"]>>;
694
795
  type PaymentItems = {
695
796
  items: PaymentsList["items"];
696
797
  };
@@ -709,4 +810,4 @@ type WebhookResponse = {
709
810
  received: boolean;
710
811
  };
711
812
 
712
- export { type CreateCheckoutResponse as C, type DodoPaymentsOptions as D, type PaymentItems as P, type SubscriptionItems as S, type WebhookResponse as W, type CustomerPortalResponse as a, type Product as b, type DodoPaymentsPlugin as c, type DodoPaymentsPlugins as d, type DodoPaymentsEndpoints as e, checkout as f, type CheckoutOptions as g, portal as p, webhooks as w };
813
+ export { type CreateCheckoutResponse as C, type DodoPaymentsOptions as D, type PaymentItems as P, type SubscriptionItems as S, type WebhookResponse as W, type CustomerPortalResponse as a, type Product as b, type DodoPaymentsPlugin as c, type DodoPaymentsPlugins as d, type DodoPaymentsEndpoints as e, checkout as f, type CheckoutOptions as g, portal as p, usage as u, webhooks as w };