@nexo-labs/payload-stripe-inventory 1.6.11 → 1.6.13

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.
@@ -0,0 +1,103 @@
1
+ import Stripe from "stripe";
2
+
3
+ //#region src/types/customer.types.d.ts
4
+ interface Customer {
5
+ stripeId: string;
6
+ email: string;
7
+ inventory: CustomerInventory;
8
+ }
9
+ interface CustomerInventory {
10
+ subscriptions: {
11
+ [key: string]: Stripe.Subscription & {
12
+ permissions: string[];
13
+ };
14
+ };
15
+ products: {
16
+ [key: string]: Stripe.Product & {
17
+ permissions: string[];
18
+ };
19
+ };
20
+ payments: {
21
+ [key: string]: Stripe.PaymentIntent;
22
+ };
23
+ invoices: {
24
+ [key: string]: Stripe.Invoice;
25
+ };
26
+ }
27
+ //#endregion
28
+ //#region src/types/permission.types.d.ts
29
+ interface Subscription {
30
+ status?: string;
31
+ }
32
+ interface BaseUser<T = any> {
33
+ id: string | number;
34
+ name?: string;
35
+ email?: string;
36
+ customer?: Customer | null;
37
+ roles?: string[];
38
+ inventory?: T;
39
+ [key: string]: any;
40
+ }
41
+ interface User extends BaseUser {}
42
+ //#endregion
43
+ //#region src/types/user-inventory.types.d.ts
44
+ interface UnlockItem {
45
+ collection: string;
46
+ id: number;
47
+ dateUnlocked: Date;
48
+ payload?: any;
49
+ }
50
+ interface FavoriteItem {
51
+ collection: string;
52
+ id: number;
53
+ dateUnlocked: Date;
54
+ payload?: any;
55
+ }
56
+ interface UserInventory {
57
+ unlocks: UnlockItem[];
58
+ favorites: FavoriteItem[];
59
+ }
60
+ //#endregion
61
+ //#region src/types/result.types.d.ts
62
+ /**
63
+ * A discriminated union type for representing operation results.
64
+ * Inspired by Rust's Result type.
65
+ *
66
+ * @template T - The type of the success data
67
+ * @template E - The type of the error (defaults to string)
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * function divide(a: number, b: number): Result<number> {
72
+ * if (b === 0) {
73
+ * return { error: "Cannot divide by zero" };
74
+ * }
75
+ * return { data: a / b };
76
+ * }
77
+ *
78
+ * const result = divide(10, 2);
79
+ * if (result.error) {
80
+ * console.error(result.error);
81
+ * } else {
82
+ * console.log(result.data); // 5
83
+ * }
84
+ * ```
85
+ */
86
+ type Result<T, E = string> = {
87
+ data: T;
88
+ error?: never;
89
+ } | {
90
+ data?: never;
91
+ error: E;
92
+ };
93
+ /**
94
+ * Helper to create a success result
95
+ */
96
+ declare const ok: <T>(data: T) => Result<T, never>;
97
+ /**
98
+ * Helper to create an error result
99
+ */
100
+ declare const err: <E = string>(error: E) => Result<never, E>;
101
+ //#endregion
102
+ export { UnlockItem as a, Subscription as c, CustomerInventory as d, FavoriteItem as i, User as l, err as n, UserInventory as o, ok as r, BaseUser as s, Result as t, Customer as u };
103
+ //# sourceMappingURL=index-DYkUVDtk.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DYkUVDtk.d.mts","names":[],"sources":["../src/types/customer.types.ts","../src/types/permission.types.ts","../src/types/user-inventory.types.ts","../src/types/result.types.ts"],"sourcesContent":[],"mappings":";;;UAEiB,QAAA;;EAAA,KAAA,EAAA,MAAQ;EAMR,SAAA,EAHJ,iBAGqB;;AAEL,UAFZ,iBAAA,CAEmB;EACP,aAAO,EAAA;IACA,CAAA,GAAA,EAAA,MAAA,CAAA,EAHF,MAAA,CAAO,YAGL,GAAA;MAAO,WAAA,EAAA,MAAA,EAAA;;;;ICV1B,CAAA,GAAA,EAAA,MAAY,CAAA,EDQA,MAAA,CAAO,OCRP,GAAA;MAIZ,WAAQ,EAAA,MAIZ,EAAA;IAMI,CAAA;;;mBDLY,MAAA,CAAO;EEXnB,CAAA;EAOE,QAAA,EAAA;IAOA,CAAA,GAAA,EAAA,MAAa,CAAA,EFFH,MAAA,CAAO,OEGvB;;;;;UDbI,YAAA;;ADAjB;AAMiB,UCFA,QDEiB,CAAA,IAAA,GAAA,CAAA,CAAA;EACA,EAAA,EAAO,MAAA,GAAA,MAAA;EACZ,IAAO,CAAA,EAAA,MAAA;EACP,KAAO,CAAA,EAAA,MAAA;EACP,QAAO,CAAA,ECFvB,QDEuB,GAAA,IAAA;EAAO,KAAA,CAAA,EAAA,MAAA,EAAA;cCA7B;;;AAVG,UAcA,IAAA,SAAa,QAdD,CAAA,CAI7B;;;UCNiB,UAAA;;;EFEA,YAAQ,EECP,IFDO;EAMR,OAAA,CAAA,EAAA,GAAA;;AAEY,UEHV,YAAA,CFGiB;EACP,UAAO,EAAA,MAAA;EACP,EAAA,EAAO,MAAA;EAAO,YAAA,EEFzB,IFEyB;;;UEExB,aAAA;EDZF,OAAA,ECaJ,UDbgB,EAAA;EAIZ,SAAA,ECUF,YDVU,EAIZ;AAMb;;;;;;ADdA;AAMA;;;;;;;;;ACNA;AAIA;AAUA;;;;AChBA;AAOE;AAOA;;;KCUU;EAAA,IAAA,EACA,CADA;EAOC,KAAiD,CAAA,EAAA,KAAA;CAAlC,GAAA;EAAW,IAAA,CAAA,EAAA,KAAA;EAAP,KAAA,EALL,CAKK;CAAM;AAKtC;;;AAA2C,cAL9B,EAK8B,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EALf,CAKe,EAAA,GALX,MAKW,CALJ,CAKI,EAAA,KAAA,CAAA;;;;cAA9B,yBAA0B,MAAI,cAAc"}
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as Permission, c as WithPermissions, d as RouteHandlers, f as StripeHandlers, i as BaseUser, l as Customer, n as UnlockItem, o as Subscription, r as UserInventory, s as User, t as FavoriteItem, u as CustomerInventory } from "./index-D-NQPUJO.mjs";
1
+ import { a as UnlockItem, c as Subscription, d as CustomerInventory, i as FavoriteItem, l as User, n as err, o as UserInventory, r as ok, s as BaseUser, t as Result, u as Customer } from "./index-DYkUVDtk.mjs";
2
2
 
3
3
  //#region src/model/builders.d.ts
4
4
  declare const generateUserInventory: () => UserInventory;
@@ -77,25 +77,12 @@ declare const evalPermissionByRoleQuery: <T extends BaseUser>({
77
77
  content
78
78
  }: Props<T>) => boolean;
79
79
  //#endregion
80
- //#region src/model/fetch-permitted-content-query.d.ts
81
- /**
82
- * Filtra contenido basado en los permisos del usuario
83
- */
84
- declare const fetchPermittedContentQuery: <T extends BaseUser, C>(user: T | null | undefined, permissions: (Permission | number)[] | null | undefined, content: C, freeContent?: C | null) => C | null;
85
- //#endregion
86
80
  //#region src/model/get-user-permissions.d.ts
87
81
  /**
88
82
  * Obtiene los permisos de un usuario basados en su inventario y suscripciones activas
89
83
  */
90
84
  declare const getUserPermissions: (user?: BaseUser | null) => string[];
91
85
  //#endregion
92
- //#region src/model/permissions.d.ts
93
- declare const getPermissionsSlugs: ({
94
- permissions
95
- }: {
96
- permissions?: (number | Permission)[] | null | undefined;
97
- }) => any;
98
- //#endregion
99
86
  //#region src/model/check-if-user-can-unlock-query.d.ts
100
87
  /**
101
88
  * Verifica si un usuario puede desbloquear un elemento basado en sus permisos y límites semanales
@@ -119,5 +106,5 @@ declare const getNextUnlockDateQuery: (user: BaseUser<UserInventory>) => Date;
119
106
  //#region src/model/is-content-unlocked.d.ts
120
107
  declare const isContentUnlocked: (user: BaseUser<UserInventory>, contentId: number, collection: string) => boolean;
121
108
  //#endregion
122
- export { BaseUser, COLLECTION_SLUG_CUSTOMERS, COLLECTION_SLUG_PRICES, COLLECTION_SLUG_PRODUCTS, COLLECTION_SLUG_USER, Customer, CustomerInventory, FavoriteItem, MAX_UNLOCKS_PER_WEEK, PERMISSIONS, Permission, PricingPlanInterval, PricingType, QUERY_PERMISSION_TYPES, RouteHandlers, StripeHandlers, Subscription, UnlockItem, User, UserInventory, WithPermissions, checkIfUserCanUnlockQuery, countWeeklyUnlocksQuery, evalAdvancePermissionQuery, evalPermissionByRoleQuery, fetchPermittedContentQuery, formatOptions, generateCustomerInventory, generateUserInventory, getNextUnlockDateQuery, getPermissionsSlugs, getUserPermissions, isContentUnlocked, permissionSlugs };
109
+ export { BaseUser, COLLECTION_SLUG_CUSTOMERS, COLLECTION_SLUG_PRICES, COLLECTION_SLUG_PRODUCTS, COLLECTION_SLUG_USER, Customer, CustomerInventory, FavoriteItem, MAX_UNLOCKS_PER_WEEK, PERMISSIONS, PricingPlanInterval, PricingType, QUERY_PERMISSION_TYPES, Result, Subscription, UnlockItem, User, UserInventory, checkIfUserCanUnlockQuery, countWeeklyUnlocksQuery, err, evalAdvancePermissionQuery, evalPermissionByRoleQuery, formatOptions, generateCustomerInventory, generateUserInventory, getNextUnlockDateQuery, getUserPermissions, isContentUnlocked, ok, permissionSlugs };
123
110
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/model/builders.ts","../src/model/constants.ts","../src/model/eval-advance-permissionQuery.ts","../src/model/eval-permission-by-role-query.ts","../src/model/fetch-permitted-content-query.ts","../src/model/get-user-permissions.ts","../src/model/permissions.ts","../src/model/check-if-user-can-unlock-query.ts","../src/model/get-count-weekly-unlocks-query.ts","../src/model/get-next-unlock-date-query.ts","../src/model/is-content-unlocked.ts"],"sourcesContent":[],"mappings":";;;cAEa,6BAA4B;cAK5B,iCAAgC;;;cCPhC;cACA;cACA;ADAA,cCCA,yBDD4B,EAAA,WAGvC;AAEW,cCFA,sBDOX,EAL2C;;;;ECPhC,SAAA,UAAA,EAAA,YAA8C;AAC3D,CAAA;AACa,cAiBA,eAjBuC,EAAA;EACvC,QAAA,EAAA,MAAA;EAEA,GAAA,EAAA,MAAA;EAcA,MAAA,EAAA,MAAA;EASA,IAAA,EAAA,MAAA;EAQA,QAAA,EAAA,MAAA;EAEA,KAAA,EAAA,MAAA;AAKb,CAAA;AAOa,cAtBA,WAsBsB,EAAA;;;;ACjDqB,CAAA,EAAA;AAO9B,cD4Bb,oBC5Ba,EAAA,CAAA;AAClB,cD6BK,WC7BL,EAAA;EACyB,SAAA,QAAA,EAAA,UAAA;EAAsB,SAAA,SAAA,EAAA,WAAA;AAIvD,CAAA;AAAqD,cD6BxC,mBC7BwC,EAAA;EAAQ,SAAA,GAAA,EAAA,KAAA;EAAA,SAAA,IAAA,EAAA,MAAA;EAAA,SAAA,KAAA,EAAA,OAAA;EAIpD,SAAA,IAAA,EAAA,MAAA;CAAN;AAAK,cDgCK,aChCL,EAAA,CAAA,GAAA,EDgC2B,MChC3B,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,GAAA;;;;;;;AFhBR;AAKA;UECU,kBAAgB;QAClB;iCACyB;EDVpB,WAAA,CAAA,EAAA,MAAA,EAAA,GAAA,SAA8C;AAC3D;AACa,cCYA,0BDZuC,EAAA,CAAA,UCYC,QDZD,CAAA,CAAA;EAAA,IAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,ECgBjD,ODhBiD,CCgB3C,CDhB2C,CAAA,EAAA,GAAA,OAAA;;;;;ADApD;AAKA,UGAU,KHAG,CAAA,UGAa,QHKxB,CAAA,CAAA;QGJM;;;IFRK,UAAA,EAAA,MAAA;IACA,EAAA,EAAA,MAAA;EACA,CAAA;AACb;AAEa,cEWA,yBFNH,EAAA,CAAA,UEM0C,QFN1C,CAAA,CAAA;EAAA,IAAA;EAAA,WAAA;EAAA;AAAA,CAAA,EEUP,KFVO,CEUD,CFVC,CAAA,EAAA,GAAA,OAAA;;;;;ADRV;AAKa,cICA,0BJDgC,EAAA,CAAA,UICQ,QJInD,EAAA,CAAA,CAAA,CAAA,IAAA,EIHM,CJGN,GAAA,IAAA,GAAA,SAAA,EAAA,WAAA,EAAA,CIFc,UJEd,GAAA,MAAA,CAAA,EAAA,GAAA,IAAA,GAAA,SAAA,EAAA,OAAA,EIDS,CJCT,EAAA,WAAA,CAAA,EIAa,CJAb,GAAA,IAAA,EAAA,GICC,CJDD,GAAA,IAAA;;;;;AAVF;AAKa,cKFA,kBLOX,EAAA,CAAA,IAAA,CAL2C,EKFH,QLEG,GAAA,IAK3C,EAAA,GAAA,MAAA,EAAA;;;cMVW;;ANAb;0BMG0B;ANH1B,CAAA,EAAA,GAAa,GAAA;;;;;AAAb;AAKA;;;cOEa,kCACL;;;;;APRR;AAKA;;cQAa,gCACL,SAAS;;;cCNJ,+BAAgC,SAAS,mBAAiB;;;cCA1D,0BACL,SAAS"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/model/builders.ts","../src/model/constants.ts","../src/model/eval-advance-permissionQuery.ts","../src/model/eval-permission-by-role-query.ts","../src/model/get-user-permissions.ts","../src/model/check-if-user-can-unlock-query.ts","../src/model/get-count-weekly-unlocks-query.ts","../src/model/get-next-unlock-date-query.ts","../src/model/is-content-unlocked.ts"],"sourcesContent":[],"mappings":";;;cAEa,6BAA4B;cAK5B,iCAAgC;;;cCPhC;cACA;cACA;ADAA,cCCA,yBDD4B,EAAA,WAGvC;AAEW,cCFA,sBDOX,EAL2C;;;;ECPhC,SAAA,UAAA,EAAA,YAA8C;AAC3D,CAAA;AACa,cAiBA,eAjBuC,EAAA;EACvC,QAAA,EAAA,MAAA;EAEA,GAAA,EAAA,MAAA;EAcA,MAAA,EAAA,MAAA;EASA,IAAA,EAAA,MAAA;EAQA,QAAA,EAAA,MAAA;EAEA,KAAA,EAAA,MAAA;AAKb,CAAA;AAOa,cAtBA,WAsBsB,EAAA;;;;ACjDqB,CAAA,EAAA;AAO9B,cD4Bb,oBC5Ba,EAAA,CAAA;AAClB,cD6BK,WC7BL,EAAA;EACyB,SAAA,QAAA,EAAA,UAAA;EAAsB,SAAA,SAAA,EAAA,WAAA;AAIvD,CAAA;AAAqD,cD6BxC,mBC7BwC,EAAA;EAAQ,SAAA,GAAA,EAAA,KAAA;EAAA,SAAA,IAAA,EAAA,MAAA;EAAA,SAAA,KAAA,EAAA,OAAA;EAIpD,SAAA,IAAA,EAAA,MAAA;CAAN;AAAK,cDgCK,aChCL,EAAA,CAAA,GAAA,EDgC2B,MChC3B,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,GAAA;;;;;;;AFhBR;AAKA;UECU,kBAAgB;QAClB;iCACyB;EDVpB,WAAA,CAAA,EAAA,MAAA,EAAA,GAAA,SAA8C;AAC3D;AACa,cCYA,0BDZuC,EAAA,CAAA,UCYC,QDZD,CAAA,CAAA;EAAA,IAAA;EAAA,gBAAA;EAAA;AAAA,CAAA,ECgBjD,ODhBiD,CCgB3C,CDhB2C,CAAA,EAAA,GAAA,OAAA;;;;;ADApD;AAKA,UGAU,KHAG,CAAA,UGAa,QHKxB,CAAA,CAAA;QGJM;;;IFRK,UAAA,EAAA,MAAA;IACA,EAAA,EAAA,MAAA;EACA,CAAA;AACb;AAEa,cEWA,yBFNH,EAAA,CAAA,UEM0C,QFN1C,CAAA,CAAA;EAAA,IAAA;EAAA,WAAA;EAAA;AAAA,CAAA,EEUP,KFVO,CEUD,CFVC,CAAA,EAAA,GAAA,OAAA;;;;;ADRV;AAKa,cIFA,kBJOX,EAAA,CAAA,IAAA,CAL2C,EIFH,QJEG,GAAA,IAK3C,EAAA,GAAA,MAAA,EAAA;;;;;AAVF;AAKA;;;cKEa,kCACL;;;;;ALRR;AAKA;;cMAa,gCACL,SAAS;;;cCNJ,+BAAgC,SAAS,mBAAiB;;;cCA1D,0BACL,SAAS"}
package/dist/index.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import { S as generateUserInventory, _ as PricingType, a as getPermissionsSlugs, b as permissionSlugs, c as isContentUnlocked, d as COLLECTION_SLUG_PRICES, f as COLLECTION_SLUG_PRODUCTS, g as PricingPlanInterval, h as PERMISSIONS, i as fetchPermittedContentQuery, l as getUserPermissions, m as MAX_UNLOCKS_PER_WEEK, n as countWeeklyUnlocksQuery, o as evalAdvancePermissionQuery, p as COLLECTION_SLUG_USER, r as checkIfUserCanUnlockQuery, s as evalPermissionByRoleQuery, t as getNextUnlockDateQuery, u as COLLECTION_SLUG_CUSTOMERS, v as QUERY_PERMISSION_TYPES, x as generateCustomerInventory, y as formatOptions } from "./src-BmlQoR4x.mjs";
1
+ import { S as generateUserInventory, _ as PricingType, a as checkIfUserCanUnlockQuery, b as permissionSlugs, c as isContentUnlocked, d as COLLECTION_SLUG_PRICES, f as COLLECTION_SLUG_PRODUCTS, g as PricingPlanInterval, h as PERMISSIONS, i as countWeeklyUnlocksQuery, l as getUserPermissions, m as MAX_UNLOCKS_PER_WEEK, n as ok, o as evalAdvancePermissionQuery, p as COLLECTION_SLUG_USER, r as getNextUnlockDateQuery, s as evalPermissionByRoleQuery, t as err, u as COLLECTION_SLUG_CUSTOMERS, v as QUERY_PERMISSION_TYPES, x as generateCustomerInventory, y as formatOptions } from "./src-I_DPhIL5.mjs";
2
2
 
3
- export { COLLECTION_SLUG_CUSTOMERS, COLLECTION_SLUG_PRICES, COLLECTION_SLUG_PRODUCTS, COLLECTION_SLUG_USER, MAX_UNLOCKS_PER_WEEK, PERMISSIONS, PricingPlanInterval, PricingType, QUERY_PERMISSION_TYPES, checkIfUserCanUnlockQuery, countWeeklyUnlocksQuery, evalAdvancePermissionQuery, evalPermissionByRoleQuery, fetchPermittedContentQuery, formatOptions, generateCustomerInventory, generateUserInventory, getNextUnlockDateQuery, getPermissionsSlugs, getUserPermissions, isContentUnlocked, permissionSlugs };
3
+ export { COLLECTION_SLUG_CUSTOMERS, COLLECTION_SLUG_PRICES, COLLECTION_SLUG_PRODUCTS, COLLECTION_SLUG_USER, MAX_UNLOCKS_PER_WEEK, PERMISSIONS, PricingPlanInterval, PricingType, QUERY_PERMISSION_TYPES, checkIfUserCanUnlockQuery, countWeeklyUnlocksQuery, err, evalAdvancePermissionQuery, evalPermissionByRoleQuery, formatOptions, generateCustomerInventory, generateUserInventory, getNextUnlockDateQuery, getUserPermissions, isContentUnlocked, ok, permissionSlugs };
@@ -1,7 +1,201 @@
1
- import { f as StripeHandlers, p as NextResponse, u as CustomerInventory } from "../index-D-NQPUJO.mjs";
1
+ import { d as CustomerInventory, s as BaseUser, t as Result } from "../index-DYkUVDtk.mjs";
2
2
  import Stripe from "stripe";
3
- import { Access, CollectionConfig, Field, Payload, Plugin } from "payload";
3
+ import { Access, CollectionConfig, Endpoint, Payload, PayloadHandler, PayloadRequest, Plugin } from "payload";
4
4
 
5
+ //#region src/server/plugin/stripe-inventory-types.d.ts
6
+
7
+ /**
8
+ * URL routes configuration for Stripe redirects
9
+ */
10
+ interface StripeInventoryRoutes {
11
+ /** URL to redirect after subscription-related actions */
12
+ subscriptionPageHref: string;
13
+ /** URL to redirect after donation-related actions (optional, defaults to subscriptionPageHref) */
14
+ donationPageHref?: string;
15
+ }
16
+ /**
17
+ * Configuration for the Stripe Inventory plugin
18
+ * @template TProduct - The product type used by the consumer (defaults to unknown)
19
+ * @template TContent - The content type used by the consumer (defaults to unknown)
20
+ */
21
+ interface StripeInventoryPluginConfig<TProduct = unknown, TContent = unknown> {
22
+ /**
23
+ * URL routes for redirects after Stripe operations
24
+ */
25
+ routes: StripeInventoryRoutes;
26
+ /**
27
+ * Base path for all Stripe endpoints (default: '/stripe')
28
+ * Endpoints will be available at /api{basePath}/checkout, /api{basePath}/portal, etc.
29
+ */
30
+ basePath?: string;
31
+ /**
32
+ * Callback invoked when a subscription is created or deleted
33
+ * @param type - The type of subscription event ('create' or 'delete')
34
+ * @param userId - The ID of the user associated with the subscription
35
+ */
36
+ onSubscriptionUpdate?: (type: "create" | "delete", userId: string) => Promise<void>;
37
+ /**
38
+ * Optional permission check for all Stripe endpoints.
39
+ * If not provided, only checks for authenticated user.
40
+ * @param request - The Payload request object
41
+ * @returns true if the user has permission, false otherwise
42
+ */
43
+ checkPermissions?: (request: PayloadRequest) => Promise<boolean>;
44
+ /**
45
+ * Optional custom user resolver.
46
+ * Use this if you need custom logic to resolve the user from the request.
47
+ * If not provided, uses request.user.
48
+ * @param request - The Payload request object
49
+ * @returns The user object or null if not authenticated
50
+ */
51
+ resolveUser?: (request: PayloadRequest) => Promise<BaseUser | null>;
52
+ /**
53
+ * Resolves the permissions granted by a subscription.
54
+ * This callback allows you to define how permissions are extracted from a product.
55
+ * @param subscription - The Stripe subscription object
56
+ * @param product - The product associated with the subscription
57
+ * @param payload - The Payload instance
58
+ * @returns An array of permission slugs
59
+ */
60
+ resolveSubscriptionPermissions: ResolveSubscriptionPermissions<TProduct>;
61
+ /**
62
+ * Resolves the permissions required by content.
63
+ * This callback allows you to define how permissions are extracted from content items.
64
+ * @param content - The content item to check permissions for
65
+ * @param payload - The Payload instance
66
+ * @returns An array of permission slugs required by the content
67
+ */
68
+ resolveContentPermissions: ResolveContentPermissions<TContent>;
69
+ }
70
+ /**
71
+ * Type alias for subscription permissions resolver callback
72
+ * @template TProduct - The product type used by the consumer (defaults to unknown for flexibility)
73
+ */
74
+ type ResolveSubscriptionPermissions<TProduct = unknown> = (subscription: Stripe.Subscription, product: TProduct, payload: Payload) => Promise<string[]>;
75
+ /**
76
+ * Type alias for content permissions resolver callback
77
+ * @template TContent - The content type used by the consumer (defaults to unknown for flexibility)
78
+ */
79
+ type ResolveContentPermissions<TContent = unknown> = (content: TContent, payload: Payload) => Promise<string[]>;
80
+ /**
81
+ * Internal configuration passed to endpoint handlers
82
+ */
83
+ interface StripeEndpointConfig {
84
+ routes: StripeInventoryRoutes;
85
+ checkPermissions?: (request: PayloadRequest) => Promise<boolean>;
86
+ resolveUser?: (request: PayloadRequest) => Promise<BaseUser | null>;
87
+ }
88
+ //#endregion
89
+ //#region src/server/endpoints/handlers/checkout-handler.d.ts
90
+ /**
91
+ * Creates a handler for Stripe checkout sessions (subscriptions)
92
+ *
93
+ * @param config - Endpoint configuration
94
+ * @returns PayloadHandler for checkout endpoint
95
+ */
96
+ declare function createCheckoutHandler(config: StripeEndpointConfig): PayloadHandler;
97
+ //#endregion
98
+ //#region src/server/endpoints/handlers/donation-handler.d.ts
99
+ /**
100
+ * Creates a handler for one-time donation payments
101
+ *
102
+ * @param config - Endpoint configuration
103
+ * @returns PayloadHandler for donation endpoint
104
+ */
105
+ declare function createDonationHandler(config: StripeEndpointConfig): PayloadHandler;
106
+ //#endregion
107
+ //#region src/server/endpoints/handlers/portal-handler.d.ts
108
+ /**
109
+ * Creates a handler for Stripe Billing Portal access
110
+ *
111
+ * @param config - Endpoint configuration
112
+ * @returns PayloadHandler for portal endpoint
113
+ */
114
+ declare function createPortalHandler(config: StripeEndpointConfig): PayloadHandler;
115
+ //#endregion
116
+ //#region src/server/endpoints/handlers/update-handler.d.ts
117
+ /**
118
+ * Creates a handler for updating Stripe subscriptions (cancel at period end)
119
+ *
120
+ * @param config - Endpoint configuration
121
+ * @returns PayloadHandler for update endpoint
122
+ */
123
+ declare function createUpdateHandler(config: StripeEndpointConfig): PayloadHandler;
124
+ //#endregion
125
+ //#region src/server/endpoints/validators/request-validator.d.ts
126
+ /**
127
+ * Creates a JSON response using Web API Response
128
+ */
129
+ declare function jsonResponse(data: unknown, options?: ResponseInit): Response;
130
+ /**
131
+ * Creates a redirect response using Web API Response
132
+ * @param url - The URL to redirect to
133
+ * @param status - HTTP status code (default: 303 See Other)
134
+ */
135
+ declare function redirectResponse(url: string, status?: number): Response;
136
+ /**
137
+ * Creates an error response
138
+ */
139
+ declare function errorResponse(message: string, status?: number): Response;
140
+ /**
141
+ * Result type for validateAuthenticatedRequest
142
+ */
143
+ type AuthenticatedRequestResult = {
144
+ success: false;
145
+ error: Response;
146
+ } | {
147
+ success: true;
148
+ user: BaseUser;
149
+ payload: Payload;
150
+ };
151
+ /**
152
+ * Validates that the request has an authenticated user
153
+ * Uses the config's resolveUser if provided, otherwise uses request.user
154
+ */
155
+ declare function validateAuthenticatedRequest(request: PayloadRequest, config: StripeEndpointConfig): Promise<AuthenticatedRequestResult>;
156
+ //#endregion
157
+ //#region src/server/endpoints/index.d.ts
158
+ /**
159
+ * Creates all Stripe inventory endpoints
160
+ *
161
+ * @param config - Endpoint configuration
162
+ * @param basePath - Base path for endpoints (default: '/stripe')
163
+ * @returns Array of Payload endpoints
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * const endpoints = createStripeEndpoints({
168
+ * routes: { subscriptionPageHref: '/account/subscription' },
169
+ * });
170
+ * // Endpoints:
171
+ * // GET /api/stripe/checkout?priceId={id}
172
+ * // GET /api/stripe/portal
173
+ * // GET /api/stripe/update?subscriptionId={id}&cancelAtPeriodEnd={bool}
174
+ * // GET /api/stripe/donation?amount={cents}
175
+ * ```
176
+ */
177
+ declare function createStripeEndpoints(config: StripeEndpointConfig, basePath?: string): Endpoint[];
178
+ //#endregion
179
+ //#region src/server/plugin/create-stripe-inventory-plugin.d.ts
180
+ /**
181
+ * Creates the Stripe Inventory plugin for Payload CMS
182
+ *
183
+ * This plugin:
184
+ * - Registers REST endpoints for checkout, portal, update, and donation
185
+ * - Sets up Stripe webhook handlers for subscription and payment events
186
+ * - Syncs customer data between Stripe and Payload
187
+ *
188
+ * @param config - Plugin configuration
189
+ * @returns A Payload plugin function
190
+ *
191
+ * Endpoints registered:
192
+ * - GET /api{basePath}/checkout?priceId={id} - Redirect to Stripe Checkout
193
+ * - GET /api{basePath}/portal - Redirect to Stripe Billing Portal
194
+ * - GET /api{basePath}/update?subscriptionId={id}&cancelAtPeriodEnd={bool} - Update subscription
195
+ * - GET /api{basePath}/donation?amount={cents} - Returns JSON with checkout URL
196
+ */
197
+ declare function createStripeInventoryPlugin<TProduct = unknown, TContent = unknown>(config: StripeInventoryPluginConfig<TProduct, TContent>): Plugin;
198
+ //#endregion
5
199
  //#region src/server/actions/price.d.ts
6
200
  declare const updatePrices: (payload: Payload) => Promise<void>;
7
201
  interface PriceUpserted {
@@ -17,7 +211,7 @@ declare const productSync: (object: Stripe.Product, payload: Payload) => Promise
17
211
  declare const productDeleted: (object: Stripe.Product, payload: Payload) => Promise<void>;
18
212
  //#endregion
19
213
  //#region src/server/actions/subscription.d.ts
20
- declare const subscriptionUpsert: (subscription: Stripe.Subscription, payload: Payload, onSubscriptionUpdate: (type: "create" | "delete", userId: string) => Promise<void>) => Promise<void>;
214
+ declare const subscriptionUpsert: <TProduct = unknown>(subscription: Stripe.Subscription, payload: Payload, onSubscriptionUpdate: (type: "create" | "delete", userId: string) => Promise<void>, resolveSubscriptionPermissions: ResolveSubscriptionPermissions<TProduct>) => Promise<void>;
21
215
  declare const subscriptionDeleted: (subscription: Stripe.Subscription, payload: Payload, onSubscriptionUpdate: (type: "create" | "delete", userId: string) => Promise<void>) => Promise<void>;
22
216
  //#endregion
23
217
  //#region src/server/actions/donation.d.ts
@@ -30,56 +224,36 @@ declare const invoiceSucceeded: (invoiceIntent: Stripe.Invoice, payload: Payload
30
224
  declare const customerDeleted: (customer: Stripe.Customer, payload: Payload) => Promise<void>;
31
225
  //#endregion
32
226
  //#region src/server/actions/unlock-item-for-user-action.d.ts
33
- type Result<T, E = string> = {
34
- data: T;
35
- error?: never;
36
- } | {
37
- data?: never;
38
- error: E;
39
- };
40
- declare const unlockItemForUser: (getPayload: () => Promise<Payload>, collection: string, contentId: number) => Promise<Result<boolean>>;
227
+ /**
228
+ * Creates an unlock action with the specified content permissions resolver.
229
+ *
230
+ * @param resolveContentPermissions - Callback to resolve permissions required by content
231
+ * @returns A function that unlocks items for users
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * const unlockItem = createUnlockAction(async (content, payload) => {
236
+ * return content.requiredPermissions || [];
237
+ * });
238
+ *
239
+ * // Use in server actions
240
+ * await unlockItem(payload, user, 'posts', 123);
241
+ * ```
242
+ */
243
+ declare const createUnlockAction: <TContent = unknown>(resolveContentPermissions: ResolveContentPermissions<TContent>) => (payload: Payload, user: BaseUser, collection: string, contentId: number) => Promise<Result<boolean>>;
41
244
  //#endregion
42
245
  //#region src/server/actions/update-products-and-prices-action.d.ts
43
246
  declare function updateProductsAndPrices(payload: Payload): Promise<void>;
44
247
  //#endregion
45
- //#region src/server/utils/stripe/get-customer-from-stripe-or-create.d.ts
46
- declare function getCustomerFromStripeOrCreate(email: string, name?: string): Promise<string>;
47
- //#endregion
48
- //#region src/server/api/index.d.ts
49
- declare function createStripeInventoryHandlers(getPayload: () => Promise<Payload>, getRoutes: () => {
50
- nextJS: {
51
- subscriptionPageHref: string;
52
- };
53
- }): StripeHandlers;
54
- declare function createRouteHandlers(getPayload: () => Promise<Payload>, getRoutes: () => {
55
- nextJS: {
56
- subscriptionPageHref: string;
57
- };
58
- }): {
59
- GET: (request: Request, {
60
- params
61
- }: {
62
- params: Promise<{
63
- stripe: string[];
64
- }>;
65
- }) => Promise<NextResponse<unknown>>;
66
- };
67
- //#endregion
68
248
  //#region src/server/collections/customers.d.ts
69
249
  declare const customers: CollectionConfig;
70
250
  //#endregion
71
- //#region src/server/collections/fields/permission-evaluation-field.d.ts
72
- declare const permissionEvaluationField: Field;
73
- //#endregion
74
251
  //#region src/server/collections/prices.d.ts
75
252
  declare const prices: CollectionConfig;
76
253
  //#endregion
77
254
  //#region src/server/collections/products.d.ts
78
255
  declare const products: CollectionConfig;
79
256
  //#endregion
80
- //#region src/server/plugin.d.ts
81
- declare const plugin: (onSubscriptionUpdate: (type: "create" | "delete", userId: string) => Promise<void>) => Plugin;
82
- //#endregion
83
257
  //#region src/server/utils/payload/sync-customer-by-email.d.ts
84
258
  declare function syncCustomerByEmail({
85
259
  email,
@@ -148,5 +322,15 @@ declare const isAdminOrStripeActive: Access;
148
322
  declare const isAdminOrUserFieldMatchingCurrentUser: Access;
149
323
  declare const loggedInOrPublished: Access;
150
324
  //#endregion
151
- export { Result, createCustomerAtStripe, createRouteHandlers, createStripeInventoryHandlers, customerDeleted, customers, getCustomer, getCustomerFromStripeOrCreate, invoiceSucceeded, isAdmin, isAdminOrCurrentUser, isAdminOrPublished, isAdminOrStripeActive, isAdminOrUserFieldMatchingCurrentUser, isAnyone, loggedInOrPublished, payloadUpsert, paymentSucceeded, permissionEvaluationField, plugin, priceDeleted, priceUpsert, prices, productDeleted, productSync, products, resolveStripeCustomer, stripeBuilder, subscriptionDeleted, subscriptionUpsert, syncCustomerByEmail, unlockItemForUser, updatePrices, updateProducts, updateProductsAndPrices, upsertCustomerInventoryAndSyncWithUser };
325
+ //#region src/server/access/get-user-from-request.d.ts
326
+ /**
327
+ * Gets the current user from a PayloadRequest without depending on next/headers.
328
+ * This is the recommended way to get the user in Payload endpoint handlers.
329
+ *
330
+ * @param request - The PayloadRequest object
331
+ * @returns The user object or null if not authenticated
332
+ */
333
+ declare function getUserFromRequest(request: PayloadRequest): BaseUser | null;
334
+ //#endregion
335
+ export { AuthenticatedRequestResult, type ResolveContentPermissions, type ResolveSubscriptionPermissions, type StripeEndpointConfig, type StripeInventoryPluginConfig, StripeInventoryRoutes, createCheckoutHandler, createCustomerAtStripe, createDonationHandler, createPortalHandler, createStripeEndpoints, createStripeInventoryPlugin, createUnlockAction, createUpdateHandler, customerDeleted, customers, errorResponse, getCustomer, getUserFromRequest, invoiceSucceeded, isAdmin, isAdminOrCurrentUser, isAdminOrPublished, isAdminOrStripeActive, isAdminOrUserFieldMatchingCurrentUser, isAnyone, jsonResponse, loggedInOrPublished, payloadUpsert, paymentSucceeded, priceDeleted, priceUpsert, prices, productDeleted, productSync, products, redirectResponse, resolveStripeCustomer, stripeBuilder, subscriptionDeleted, subscriptionUpsert, syncCustomerByEmail, updatePrices, updateProducts, updateProductsAndPrices, upsertCustomerInventoryAndSyncWithUser, validateAuthenticatedRequest };
152
336
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/server/actions/price.ts","../../src/server/actions/product.ts","../../src/server/actions/subscription.ts","../../src/server/actions/donation.ts","../../src/server/actions/invoice.ts","../../src/server/actions/customer.ts","../../src/server/actions/unlock-item-for-user-action.ts","../../src/server/actions/update-products-and-prices-action.ts","../../src/server/utils/stripe/get-customer-from-stripe-or-create.ts","../../src/server/api/index.ts","../../src/server/collections/customers.ts","../../src/server/collections/fields/permission-evaluation-field.ts","../../src/server/collections/prices.ts","../../src/server/collections/products.ts","../../src/server/plugin.ts","../../src/server/utils/payload/sync-customer-by-email.ts","../../src/server/utils/payload/upsert.ts","../../src/server/utils/payload/upsert-customer-inventory-and-sync-with-user.ts","../../src/server/utils/stripe/create-customer-at-stripe.ts","../../src/server/utils/stripe/get-customer.ts","../../src/server/utils/stripe/stripe-builder.ts","../../src/server/access/access-queries.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/server/plugin/stripe-inventory-types.ts","../../src/server/endpoints/handlers/checkout-handler.ts","../../src/server/endpoints/handlers/donation-handler.ts","../../src/server/endpoints/handlers/portal-handler.ts","../../src/server/endpoints/handlers/update-handler.ts","../../src/server/endpoints/validators/request-validator.ts","../../src/server/endpoints/index.ts","../../src/server/plugin/create-stripe-inventory-plugin.ts","../../src/server/actions/price.ts","../../src/server/actions/product.ts","../../src/server/actions/subscription.ts","../../src/server/actions/donation.ts","../../src/server/actions/invoice.ts","../../src/server/actions/customer.ts","../../src/server/actions/unlock-item-for-user-action.ts","../../src/server/actions/update-products-and-prices-action.ts","../../src/server/collections/customers.ts","../../src/server/collections/prices.ts","../../src/server/collections/products.ts","../../src/server/utils/payload/sync-customer-by-email.ts","../../src/server/utils/payload/upsert.ts","../../src/server/utils/payload/upsert-customer-inventory-and-sync-with-user.ts","../../src/server/utils/stripe/create-customer-at-stripe.ts","../../src/server/utils/stripe/get-customer.ts","../../src/server/utils/stripe/stripe-builder.ts","../../src/server/access/access-queries.ts","../../src/server/access/get-user-from-request.ts"],"sourcesContent":[],"mappings":"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"}