forked from NuroDev/lemonsqueezy.ts
-
Notifications
You must be signed in to change notification settings - Fork 0
/
product.action.ts
56 lines (51 loc) · 1.35 KB
/
product.action.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import { requestLemonSqueeze } from "~/shared";
import type {
ListAllProductsOptions,
ListAllProductsResult,
RetrieveProductOptions,
RetrieveProductResult,
} from "./product.types";
import type { SharedModuleOptions } from "~/shared";
/**
* List all products
*
* @description Returns a paginated list of products
*
* @docs https://docs.lemonsqueezy.com/api/products#list-all-products
*
* @param {Object} [options]
*
* @returns Returns a paginated list of product objects ordered by `name`
*/
export async function listAllProducts(
options: ListAllProductsOptions & SharedModuleOptions
): Promise<ListAllProductsResult> {
const { storeId, ...rest } = options;
return requestLemonSqueeze<ListAllProductsResult>({
params: {
...(storeId ? { store_id: storeId } : {}),
},
path: "/products",
...rest,
});
}
/**
* Retrieve product
*
* @description Retrieves the product with the given ID
*
* @docs https://docs.lemonsqueezy.com/api/products#retrieve-a-product
*
* @param {String} options.id - The ID of the product to retrieve
*
* @returns A product object
*/
export async function retrieveProduct(
options: RetrieveProductOptions & SharedModuleOptions
): Promise<RetrieveProductResult> {
const { id, ...rest } = options;
return requestLemonSqueeze<RetrieveProductResult>({
path: `/products/${id}`,
...rest,
});
}