@alphabite/medusa-sdk 0.3.2 → 0.4.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
@@ -1,233 +1,233 @@
1
- # ⚙️ Alphabite Medusa Client
2
-
3
- [![npm version](https://img.shields.io/npm/v/@alphabite/medusa-client)](https://www.npmjs.com/package/@alphabite/medusa-client)
4
- [![npm downloads](https://img.shields.io/npm/dm/@alphabite/medusa-client)](https://www.npmjs.com/package/@alphabite/medusa-client)
5
- ![MIT License](https://img.shields.io/npm/l/@alphabite/medusa-client)
6
- ![Types Included](https://img.shields.io/npm/types/@alphabite/medusa-client)
7
-
8
- > Drop-in replacement for `@medusajs/js-sdk` with plugin support for Wishlists, PayPal, Reviews, and more.
9
-
10
- The **Alphabite Medusa Client** wraps the Medusa JS SDK and adds support for rich frontend integrations via plugin architecture.
11
-
12
- ---
13
-
14
- ## 📚 Table of Contents
15
-
16
- - [📦 Installation](#-installation)
17
- - [🚀 Usage](#-usage)
18
- - [🔁 Drop-in Replacement](#-drop-in-replacement)
19
- - [🔌 Plugin Injection](#-plugin-injection)
20
- - [🔐 Auth Handling](#-auth-handling)
21
- - [✅ Example: Wishlist Usage](#-example-wishlist-usage)
22
- - [🧩 Plugins Included](#-plugins-included)
23
- - [🧪 TypeScript Support](#-typescript-support)
24
- - [📁 Folder Structure Tip](#-folder-structure-tip)
25
- - [🤝 Contributing](#-contributing)
26
- - [📝 License](#-license)
27
-
28
- ---
29
-
30
- ## 📦 Installation
31
-
32
- ```bash
33
- npm install @alphabite/medusa-client
34
- ```
35
-
36
- ---
37
-
38
- ## 🚀 Usage
39
-
40
- ```ts
41
- import {
42
- AlphabiteMedusaClient,
43
- wishlistPlugin,
44
- paypalPlugin,
45
- reviewsPlugin,
46
- } from '@alphabite/medusa-client'
47
-
48
- const sdk = new AlphabiteMedusaClient(
49
- {
50
- baseUrl: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000/api',
51
- debug: process.env.NODE_ENV === 'development',
52
- publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
53
- },
54
- [wishlistPlugin, paypalPlugin, reviewsPlugin],
55
-
56
- // Optional options config to add a global getAuthHeader function for all endpoints
57
- {
58
- // supports async functions, for example a server action that fetches the token from headers
59
- getAuthHeader: async () => {
60
- const token = await getToken(); // your own function that returns the auth token
61
-
62
- return {
63
- authorization: `Bearer ${token}`,
64
- }
65
- },
66
- }
67
- )
68
- ```
69
-
70
- ---
71
-
72
- ## 🔁 Drop-in Replacement
73
-
74
- To migrate from the default Medusa SDK:
75
-
76
- ```ts
77
- // BEFORE
78
- import Medusa from '@medusajs/js-sdk'
79
- const sdk = new Medusa({
80
- baseUrl: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000/api',
81
- debug: process.env.NODE_ENV === 'development',
82
- publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
83
- })
84
-
85
- // AFTER
86
- import { AlphabiteMedusaClient, wishlistPlugin } from '@alphabite/medusa-client'
87
-
88
- const sdk = new AlphabiteMedusaClient({
89
- baseUrl: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000/api',
90
- debug: process.env.NODE_ENV === 'development',
91
- publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
92
- },
93
- [wishlistPlugin], {
94
- // supports async functions, for example a server action that fetches the token from headers
95
- getAuthHeader: async () => {
96
- const token = await getToken(); // your own function that returns the auth token
97
-
98
- return {
99
- authorization: `Bearer ${token}`,
100
- }
101
- },
102
- }
103
- )
104
- ```
105
-
106
- ---
107
-
108
- ## 🔌 Plugin Injection
109
-
110
- Pass an array of plugins as the second argument:
111
-
112
- ```ts
113
- [wishlistPlugin]
114
- ```
115
-
116
- Each plugin registers a namespace like:
117
-
118
- ```ts
119
- sdk.alphabite.wishlist
120
- ```
121
-
122
- ---
123
-
124
- ## 🔐 Auth Handling
125
-
126
- ### 1. Global headers with `getAuthHeader`
127
-
128
- ```ts
129
- const sdk = new AlphabiteMedusaClient(
130
- { baseUrl },
131
- [wishlistPlugin],
132
- {
133
- // supports async function, for example a server action that fetches the token from headers
134
- getAuthHeader: async () => {
135
- const token = await getToken(); // your own function that returns the auth token
136
-
137
- return {
138
- authorization: `Bearer ${token}`,
139
- }
140
- },
141
- }
142
- )
143
- ```
144
-
145
- ### 2. Per-request headers
146
-
147
- ```ts
148
- await sdk.alphabite.wishlist.create({ name: 'Favorites' }, {
149
- 'x-request-id': 'abc',
150
- })
151
- ```
152
-
153
- ---
154
-
155
- ## ✅ Example: Wishlist Usage
156
-
157
- ```ts
158
- await sdk.alphabite.wishlist.create({ name: 'My Sneakers' })
159
-
160
- await sdk.alphabite.wishlist.addItem({
161
- id: 'wishlist_id',
162
- product_id: 'variant_id',
163
- })
164
-
165
- const { data: items } = await sdk.alphabite.wishlist.listItems({
166
- id: 'wishlist_id',
167
- })
168
- ```
169
-
170
- ---
171
-
172
- ## 🧩 Plugins Included
173
-
174
- | Plugin | Namespace | Description |
175
- |---------------|-------------------|-------------------------------------|
176
- | `wishlist` | `sdk.alphabite.wishlist` | Multi-wishlist system |
177
-
178
- ---
179
-
180
- ## 🧪 TypeScript Support
181
-
182
- Includes full types for every plugin endpoint:
183
- - `Wishlist`, `WishlistItem`, `AddItemToWishlistInput`, etc.
184
- - Fully typed SDK, request bodies, and responses
185
-
186
- ---
187
-
188
- ## 📁 Folder Structure Tip
189
-
190
- Create a central instance:
191
-
192
- ```ts
193
- // lib/sdk.ts
194
- import {
195
- AlphabiteMedusaClient,
196
- wishlistPlugin,
197
- } from '@alphabite/medusa-client'
198
-
199
- export const sdk = new AlphabiteMedusaClient(
200
- { baseUrl: process.env.NEXT_PUBLIC_API_URL! },
201
- [wishlistPlugin],
202
- {
203
- // supports async function, for example a server action that fetches the token from headers
204
- getAuthHeader: async () => {
205
- const token = await getToken(); // your own function that returns the auth token
206
-
207
- return {
208
- authorization: `Bearer ${token}`,
209
- }
210
- },
211
- }
212
- )
213
- ```
214
-
215
- Use across your app:
216
-
217
- ```ts
218
- import { sdk } from '@/lib/sdk'
219
-
220
- await sdk.alphabite.wishlist.list({ limit: 10 })
221
- ```
222
-
223
- ---
224
-
225
- ## 🤝 Contributing
226
-
227
- Want to build plugins or extend core support? PRs are welcome!
228
-
229
- ---
230
-
231
- ## 📝 License
232
-
233
- MIT © Alphabite — extend and use freely.
1
+ # ⚙️ Alphabite Medusa Client
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@alphabite/medusa-client)](https://www.npmjs.com/package/@alphabite/medusa-client)
4
+ [![npm downloads](https://img.shields.io/npm/dm/@alphabite/medusa-client)](https://www.npmjs.com/package/@alphabite/medusa-client)
5
+ ![MIT License](https://img.shields.io/npm/l/@alphabite/medusa-client)
6
+ ![Types Included](https://img.shields.io/npm/types/@alphabite/medusa-client)
7
+
8
+ > Drop-in replacement for `@medusajs/js-sdk` with plugin support for Wishlists, PayPal, Reviews, and more.
9
+
10
+ The **Alphabite Medusa Client** wraps the Medusa JS SDK and adds support for rich frontend integrations via plugin architecture.
11
+
12
+ ---
13
+
14
+ ## 📚 Table of Contents
15
+
16
+ - [📦 Installation](#-installation)
17
+ - [🚀 Usage](#-usage)
18
+ - [🔁 Drop-in Replacement](#-drop-in-replacement)
19
+ - [🔌 Plugin Injection](#-plugin-injection)
20
+ - [🔐 Auth Handling](#-auth-handling)
21
+ - [✅ Example: Wishlist Usage](#-example-wishlist-usage)
22
+ - [🧩 Plugins Included](#-plugins-included)
23
+ - [🧪 TypeScript Support](#-typescript-support)
24
+ - [📁 Folder Structure Tip](#-folder-structure-tip)
25
+ - [🤝 Contributing](#-contributing)
26
+ - [📝 License](#-license)
27
+
28
+ ---
29
+
30
+ ## 📦 Installation
31
+
32
+ ```bash
33
+ npm install @alphabite/medusa-client
34
+ ```
35
+
36
+ ---
37
+
38
+ ## 🚀 Usage
39
+
40
+ ```ts
41
+ import {
42
+ AlphabiteMedusaClient,
43
+ wishlistPlugin,
44
+ paypalPlugin,
45
+ reviewsPlugin,
46
+ } from '@alphabite/medusa-client'
47
+
48
+ const sdk = new AlphabiteMedusaClient(
49
+ {
50
+ baseUrl: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000/api',
51
+ debug: process.env.NODE_ENV === 'development',
52
+ publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
53
+ },
54
+ [wishlistPlugin, paypalPlugin, reviewsPlugin],
55
+
56
+ // Optional options config to add a global getAuthHeader function for all endpoints
57
+ {
58
+ // supports async functions, for example a server action that fetches the token from headers
59
+ getAuthHeader: async () => {
60
+ const token = await getToken(); // your own function that returns the auth token
61
+
62
+ return {
63
+ authorization: `Bearer ${token}`,
64
+ }
65
+ },
66
+ }
67
+ )
68
+ ```
69
+
70
+ ---
71
+
72
+ ## 🔁 Drop-in Replacement
73
+
74
+ To migrate from the default Medusa SDK:
75
+
76
+ ```ts
77
+ // BEFORE
78
+ import Medusa from '@medusajs/js-sdk'
79
+ const sdk = new Medusa({
80
+ baseUrl: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000/api',
81
+ debug: process.env.NODE_ENV === 'development',
82
+ publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
83
+ })
84
+
85
+ // AFTER
86
+ import { AlphabiteMedusaClient, wishlistPlugin } from '@alphabite/medusa-client'
87
+
88
+ const sdk = new AlphabiteMedusaClient({
89
+ baseUrl: process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8000/api',
90
+ debug: process.env.NODE_ENV === 'development',
91
+ publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
92
+ },
93
+ [wishlistPlugin], {
94
+ // supports async functions, for example a server action that fetches the token from headers
95
+ getAuthHeader: async () => {
96
+ const token = await getToken(); // your own function that returns the auth token
97
+
98
+ return {
99
+ authorization: `Bearer ${token}`,
100
+ }
101
+ },
102
+ }
103
+ )
104
+ ```
105
+
106
+ ---
107
+
108
+ ## 🔌 Plugin Injection
109
+
110
+ Pass an array of plugins as the second argument:
111
+
112
+ ```ts
113
+ [wishlistPlugin]
114
+ ```
115
+
116
+ Each plugin registers a namespace like:
117
+
118
+ ```ts
119
+ sdk.alphabite.wishlist
120
+ ```
121
+
122
+ ---
123
+
124
+ ## 🔐 Auth Handling
125
+
126
+ ### 1. Global headers with `getAuthHeader`
127
+
128
+ ```ts
129
+ const sdk = new AlphabiteMedusaClient(
130
+ { baseUrl },
131
+ [wishlistPlugin],
132
+ {
133
+ // supports async function, for example a server action that fetches the token from headers
134
+ getAuthHeader: async () => {
135
+ const token = await getToken(); // your own function that returns the auth token
136
+
137
+ return {
138
+ authorization: `Bearer ${token}`,
139
+ }
140
+ },
141
+ }
142
+ )
143
+ ```
144
+
145
+ ### 2. Per-request headers
146
+
147
+ ```ts
148
+ await sdk.alphabite.wishlist.create({ name: 'Favorites' }, {
149
+ 'x-request-id': 'abc',
150
+ })
151
+ ```
152
+
153
+ ---
154
+
155
+ ## ✅ Example: Wishlist Usage
156
+
157
+ ```ts
158
+ await sdk.alphabite.wishlist.create({ name: 'My Sneakers' })
159
+
160
+ await sdk.alphabite.wishlist.addItem({
161
+ id: 'wishlist_id',
162
+ product_id: 'variant_id',
163
+ })
164
+
165
+ const { data: items } = await sdk.alphabite.wishlist.listItems({
166
+ id: 'wishlist_id',
167
+ })
168
+ ```
169
+
170
+ ---
171
+
172
+ ## 🧩 Plugins Included
173
+
174
+ | Plugin | Namespace | Description |
175
+ |---------------|-------------------|-------------------------------------|
176
+ | `wishlist` | `sdk.alphabite.wishlist` | Multi-wishlist system |
177
+
178
+ ---
179
+
180
+ ## 🧪 TypeScript Support
181
+
182
+ Includes full types for every plugin endpoint:
183
+ - `Wishlist`, `WishlistItem`, `AddItemToWishlistInput`, etc.
184
+ - Fully typed SDK, request bodies, and responses
185
+
186
+ ---
187
+
188
+ ## 📁 Folder Structure Tip
189
+
190
+ Create a central instance:
191
+
192
+ ```ts
193
+ // lib/sdk.ts
194
+ import {
195
+ AlphabiteMedusaClient,
196
+ wishlistPlugin,
197
+ } from '@alphabite/medusa-client'
198
+
199
+ export const sdk = new AlphabiteMedusaClient(
200
+ { baseUrl: process.env.NEXT_PUBLIC_API_URL! },
201
+ [wishlistPlugin],
202
+ {
203
+ // supports async function, for example a server action that fetches the token from headers
204
+ getAuthHeader: async () => {
205
+ const token = await getToken(); // your own function that returns the auth token
206
+
207
+ return {
208
+ authorization: `Bearer ${token}`,
209
+ }
210
+ },
211
+ }
212
+ )
213
+ ```
214
+
215
+ Use across your app:
216
+
217
+ ```ts
218
+ import { sdk } from '@/lib/sdk'
219
+
220
+ await sdk.alphabite.wishlist.list({ limit: 10 })
221
+ ```
222
+
223
+ ---
224
+
225
+ ## 🤝 Contributing
226
+
227
+ Want to build plugins or extend core support? PRs are welcome!
228
+
229
+ ---
230
+
231
+ ## 📝 License
232
+
233
+ MIT © Alphabite — extend and use freely.
package/dist/index.d.mts CHANGED
@@ -1,15 +1,28 @@
1
- import Medusa, { Client } from '@medusajs/js-sdk';
2
- import { BaseProduct } from '@medusajs/types/dist/http/product/common';
1
+ import Medusa, { ClientHeaders } from '@medusajs/js-sdk';
2
+ import { BaseProductVariant, BaseProduct } from '@medusajs/types/dist/http/product/common';
3
+ import { FindParams, RemoteQueryFunctionReturnPagination, PriceDTO, StoreCartAddress, StoreCartLineItem, CustomerDTO, ProductDTO } from '@medusajs/types';
3
4
 
4
- interface WishlistOutput {
5
- wishlist: {
6
- id: string;
7
- customer_id: string;
8
- sales_channel_id: string;
9
- items: WishlistItem[];
10
- created_at: string;
11
- updated_at: string;
12
- };
5
+ interface PaginatedOutput<T> extends PaginatedOutputMeta {
6
+ data: T[];
7
+ }
8
+ interface PaginatedOutputMeta extends RemoteQueryFunctionReturnPagination {
9
+ totalPages: number;
10
+ currentPage: number;
11
+ nextPage: number;
12
+ prevPage: number;
13
+ }
14
+ interface PaginatedInput extends FindParams {
15
+ }
16
+
17
+ interface Wishlist {
18
+ id: string;
19
+ customer_id: string | null;
20
+ sales_channel_id: string;
21
+ created_at: string;
22
+ updated_at: string;
23
+ deleted_at: string | null;
24
+ items: WishlistItem[];
25
+ items_count: number;
13
26
  }
14
27
  interface WishlistItem {
15
28
  id: string;
@@ -17,19 +30,177 @@ interface WishlistItem {
17
30
  wishlist_id: string;
18
31
  created_at: string;
19
32
  updated_at: string;
20
- variants: BaseProduct['variants'];
21
- product: BaseProduct;
33
+ deleted_at: string | null;
34
+ product_variant: (Omit<BaseProductVariant, 'product'> & {
35
+ product: Pick<BaseProduct, 'id' | 'thumbnail'>;
36
+ prices: PriceDTO[];
37
+ }) | null;
38
+ }
39
+ interface CreateWishlistInput {
40
+ name?: string;
41
+ sales_channel_id: string;
42
+ }
43
+ interface CreateWishlistOutput extends Wishlist {
44
+ }
45
+ interface ListWishlistsInput extends PaginatedInput {
46
+ items_fields?: string[];
47
+ }
48
+ interface ListWishlistsOutput extends PaginatedOutput<Wishlist> {
49
+ }
50
+ interface RetrieveWishlistInput {
51
+ id: string;
52
+ items_fields?: string[];
53
+ }
54
+ interface RetrieveWishlistOutput extends Wishlist {
55
+ }
56
+ interface UpdateWishlistInput {
57
+ id: string;
58
+ name?: string;
59
+ }
60
+ interface UpdateWishlistOutput extends Omit<Wishlist, 'items'> {
61
+ }
62
+ interface DeleteWishlistInput {
63
+ id: string;
64
+ }
65
+ interface DeleteWishlistOutput {
66
+ id: string;
67
+ }
68
+ interface TotalItemsCountInput {
69
+ wishlist_id?: string;
70
+ }
71
+ interface TotalItemsCountOutput {
72
+ total_items_count: number;
73
+ }
74
+ interface TransferWishlistInput {
75
+ id: string;
76
+ }
77
+ interface TransferWishlistOutput {
78
+ id: string;
79
+ }
80
+ interface ShareWishlistInput {
81
+ id: string;
82
+ }
83
+ interface ShareWishlistOutput {
84
+ share_token: string;
85
+ }
86
+ interface ImportWishlistInput {
87
+ share_token: string;
88
+ }
89
+ interface ImportWishlistOutput extends Wishlist {
90
+ }
91
+ interface AddItemToWishlistInput {
92
+ product_variant_id: string;
93
+ id: string;
94
+ }
95
+ interface AddItemToWishlistOutput extends WishlistItem {
96
+ }
97
+ interface ListItemsInput extends PaginatedInput {
98
+ id: string;
99
+ }
100
+ interface ListItemsOutput extends PaginatedOutput<WishlistItem> {
101
+ }
102
+ interface RemoveItemFromWishlistInput {
103
+ wishlist_item_id: string;
104
+ id: string;
105
+ }
106
+ interface RemoveItemFromWishlistOutput {
107
+ id: string;
22
108
  }
23
109
  type WishlistEndpoints = {
24
- list: () => Promise<WishlistOutput>;
25
- add: (productId: string) => Promise<WishlistOutput>;
26
- remove: (productId: string) => Promise<WishlistOutput>;
110
+ create: (input: CreateWishlistInput, headers?: ClientHeaders) => Promise<CreateWishlistOutput>;
111
+ list: (input: ListWishlistsInput, headers?: ClientHeaders) => Promise<ListWishlistsOutput>;
112
+ retrieve: (input: RetrieveWishlistInput, headers?: ClientHeaders) => Promise<RetrieveWishlistOutput>;
113
+ update: (input: UpdateWishlistInput, headers?: ClientHeaders) => Promise<UpdateWishlistOutput>;
114
+ delete: (input: DeleteWishlistInput, headers?: ClientHeaders) => Promise<DeleteWishlistOutput>;
115
+ transfer: (input: TransferWishlistInput, headers?: ClientHeaders) => Promise<TransferWishlistOutput>;
116
+ share: (input: ShareWishlistInput, headers?: ClientHeaders) => Promise<ShareWishlistOutput>;
117
+ import: (input: ImportWishlistInput, headers?: ClientHeaders) => Promise<ImportWishlistOutput>;
118
+ totalItemsCount: (input: TotalItemsCountInput, headers?: ClientHeaders) => Promise<TotalItemsCountOutput>;
119
+ addItem: (input: AddItemToWishlistInput, headers?: ClientHeaders) => Promise<AddItemToWishlistOutput>;
120
+ listItems: (input: ListItemsInput, headers?: ClientHeaders) => Promise<ListItemsOutput>;
121
+ removeItem: (input: RemoveItemFromWishlistInput, headers?: ClientHeaders) => Promise<RemoveItemFromWishlistOutput>;
27
122
  };
28
- type Plugin$1<Name extends string, Endpoints> = {
29
- name: Name;
30
- endpoints: (client: Client, options?: AlphabiteClientOptions) => Endpoints;
123
+ declare const wishlistPlugin: Plugin<'wishlist', WishlistEndpoints>;
124
+
125
+ interface CreateClientTokenOutput {
126
+ client_token: string;
127
+ }
128
+ interface PaypalPaymentSessionInputData {
129
+ shipping_info?: StoreCartAddress;
130
+ items?: StoreCartLineItem[];
131
+ email?: string;
132
+ }
133
+ type PaypalEndpoints = {
134
+ createClientToken: (headers?: ClientHeaders) => Promise<CreateClientTokenOutput>;
135
+ };
136
+ declare const paypalPlugin: Plugin<'paypal', PaypalEndpoints>;
137
+
138
+ interface AggregateCounts {
139
+ average: number;
140
+ counts: {
141
+ rating: number;
142
+ count: number;
143
+ }[];
144
+ product_id?: string;
145
+ total_count: number;
146
+ }
147
+ interface Review {
148
+ title: string;
149
+ content: string;
150
+ rating: number;
151
+ id: string;
152
+ created_at: string;
153
+ image_urls: string[];
154
+ is_verified_purchase: boolean;
155
+ product_id: string;
156
+ customer: Pick<CustomerDTO, 'first_name' | 'last_name'>;
157
+ product?: Pick<ProductDTO, 'thumbnail' | 'title' | 'handle' | 'id'> & AggregateCounts;
158
+ }
159
+ interface CreateReviewInput {
160
+ content: string;
161
+ rating: number;
162
+ product_id: string;
163
+ image_urls: string[];
164
+ title?: string;
165
+ }
166
+ interface CreateReviewOutput extends Review {
167
+ }
168
+ interface ListReviewsInput extends PaginatedInput {
169
+ product_ids?: string[];
170
+ my_reviews_only?: boolean;
171
+ verified_purchase_only?: boolean;
172
+ rating?: number;
173
+ include_product?: boolean;
174
+ sort_by?: 'created_at' | 'rating';
175
+ order?: 'asc' | 'desc';
176
+ }
177
+ interface ListReviewsOutput extends PaginatedOutput<Review> {
178
+ }
179
+ interface ListProductReviewsInput extends Omit<ListReviewsInput, 'product_ids'> {
180
+ product_id: string;
181
+ }
182
+ interface ListProductReviewsOutput extends PaginatedOutput<Omit<Review, 'product'>>, AggregateCounts {
183
+ }
184
+ interface DeleteReviewInput {
185
+ id: string;
186
+ }
187
+ interface DeleteReviewOutput {
188
+ id: string;
189
+ }
190
+ interface AggregateCountsInput {
191
+ product_id: string;
192
+ verified_purchase_only?: boolean;
193
+ }
194
+ interface AggregateCountsOutput extends AggregateCounts {
195
+ }
196
+ type ReviewsEndpoints = {
197
+ create: (input: CreateReviewInput, headers?: ClientHeaders) => Promise<CreateReviewOutput>;
198
+ list: (input: ListReviewsInput, headers?: ClientHeaders) => Promise<ListReviewsOutput>;
199
+ listProductReviews: (input: ListProductReviewsInput, headers?: ClientHeaders) => Promise<ListProductReviewsOutput>;
200
+ delete: (input: DeleteReviewInput, headers?: ClientHeaders) => Promise<DeleteReviewOutput>;
201
+ aggregateCounts: (input: AggregateCountsInput, headers?: ClientHeaders) => Promise<AggregateCountsOutput>;
31
202
  };
32
- declare const wishlistPlugin: Plugin$1<'wishlist', WishlistEndpoints>;
203
+ declare const reviewsPlugin: Plugin<'reviews', ReviewsEndpoints>;
33
204
 
34
205
  type AlphabiteClientOptions = {
35
206
  getAuthHeader?: () => Promise<Record<string, string>> | Record<string, string>;
@@ -41,10 +212,10 @@ type Plugin<Name extends string, Endpoints> = {
41
212
  type PluginsToAlphabite<T extends readonly Plugin<any, any>[]> = {
42
213
  [K in T[number] as K['name']]: ReturnType<K['endpoints']>;
43
214
  };
44
- declare class AlphabiteMedusaClient<TPlugins extends readonly Plugin<any, any>[], TOptions extends AlphabiteClientOptions = AlphabiteClientOptions> extends Medusa {
215
+ declare class AlphabiteMedusaSdk<TPlugins extends readonly Plugin<any, any>[], TOptions extends AlphabiteClientOptions = AlphabiteClientOptions> extends Medusa {
45
216
  alphabite: PluginsToAlphabite<TPlugins>;
46
217
  protected options?: TOptions;
47
218
  constructor(medusaOptions: ConstructorParameters<typeof Medusa>[0], plugins: TPlugins, options?: TOptions);
48
219
  }
49
220
 
50
- export { type AlphabiteClientOptions, AlphabiteMedusaClient, type Plugin, type PluginsToAlphabite, type WishlistItem, type WishlistOutput, wishlistPlugin };
221
+ export { type AddItemToWishlistInput, type AddItemToWishlistOutput, type AggregateCounts, type AggregateCountsInput, type AggregateCountsOutput, type AlphabiteClientOptions, AlphabiteMedusaSdk, type CreateClientTokenOutput, type CreateReviewInput, type CreateReviewOutput, type CreateWishlistInput, type CreateWishlistOutput, type DeleteReviewInput, type DeleteReviewOutput, type DeleteWishlistInput, type DeleteWishlistOutput, type ImportWishlistInput, type ImportWishlistOutput, type ListItemsInput, type ListItemsOutput, type ListProductReviewsInput, type ListProductReviewsOutput, type ListReviewsInput, type ListReviewsOutput, type ListWishlistsInput, type ListWishlistsOutput, type PaypalPaymentSessionInputData, type Plugin, type PluginsToAlphabite, type RemoveItemFromWishlistInput, type RemoveItemFromWishlistOutput, type RetrieveWishlistInput, type RetrieveWishlistOutput, type Review, type ShareWishlistInput, type ShareWishlistOutput, type TotalItemsCountInput, type TotalItemsCountOutput, type TransferWishlistInput, type TransferWishlistOutput, type UpdateWishlistInput, type UpdateWishlistOutput, type Wishlist, type WishlistItem, paypalPlugin, reviewsPlugin, wishlistPlugin };
package/dist/index.d.ts CHANGED
@@ -1,15 +1,28 @@
1
- import Medusa, { Client } from '@medusajs/js-sdk';
2
- import { BaseProduct } from '@medusajs/types/dist/http/product/common';
1
+ import Medusa, { ClientHeaders } from '@medusajs/js-sdk';
2
+ import { BaseProductVariant, BaseProduct } from '@medusajs/types/dist/http/product/common';
3
+ import { FindParams, RemoteQueryFunctionReturnPagination, PriceDTO, StoreCartAddress, StoreCartLineItem, CustomerDTO, ProductDTO } from '@medusajs/types';
3
4
 
4
- interface WishlistOutput {
5
- wishlist: {
6
- id: string;
7
- customer_id: string;
8
- sales_channel_id: string;
9
- items: WishlistItem[];
10
- created_at: string;
11
- updated_at: string;
12
- };
5
+ interface PaginatedOutput<T> extends PaginatedOutputMeta {
6
+ data: T[];
7
+ }
8
+ interface PaginatedOutputMeta extends RemoteQueryFunctionReturnPagination {
9
+ totalPages: number;
10
+ currentPage: number;
11
+ nextPage: number;
12
+ prevPage: number;
13
+ }
14
+ interface PaginatedInput extends FindParams {
15
+ }
16
+
17
+ interface Wishlist {
18
+ id: string;
19
+ customer_id: string | null;
20
+ sales_channel_id: string;
21
+ created_at: string;
22
+ updated_at: string;
23
+ deleted_at: string | null;
24
+ items: WishlistItem[];
25
+ items_count: number;
13
26
  }
14
27
  interface WishlistItem {
15
28
  id: string;
@@ -17,19 +30,177 @@ interface WishlistItem {
17
30
  wishlist_id: string;
18
31
  created_at: string;
19
32
  updated_at: string;
20
- variants: BaseProduct['variants'];
21
- product: BaseProduct;
33
+ deleted_at: string | null;
34
+ product_variant: (Omit<BaseProductVariant, 'product'> & {
35
+ product: Pick<BaseProduct, 'id' | 'thumbnail'>;
36
+ prices: PriceDTO[];
37
+ }) | null;
38
+ }
39
+ interface CreateWishlistInput {
40
+ name?: string;
41
+ sales_channel_id: string;
42
+ }
43
+ interface CreateWishlistOutput extends Wishlist {
44
+ }
45
+ interface ListWishlistsInput extends PaginatedInput {
46
+ items_fields?: string[];
47
+ }
48
+ interface ListWishlistsOutput extends PaginatedOutput<Wishlist> {
49
+ }
50
+ interface RetrieveWishlistInput {
51
+ id: string;
52
+ items_fields?: string[];
53
+ }
54
+ interface RetrieveWishlistOutput extends Wishlist {
55
+ }
56
+ interface UpdateWishlistInput {
57
+ id: string;
58
+ name?: string;
59
+ }
60
+ interface UpdateWishlistOutput extends Omit<Wishlist, 'items'> {
61
+ }
62
+ interface DeleteWishlistInput {
63
+ id: string;
64
+ }
65
+ interface DeleteWishlistOutput {
66
+ id: string;
67
+ }
68
+ interface TotalItemsCountInput {
69
+ wishlist_id?: string;
70
+ }
71
+ interface TotalItemsCountOutput {
72
+ total_items_count: number;
73
+ }
74
+ interface TransferWishlistInput {
75
+ id: string;
76
+ }
77
+ interface TransferWishlistOutput {
78
+ id: string;
79
+ }
80
+ interface ShareWishlistInput {
81
+ id: string;
82
+ }
83
+ interface ShareWishlistOutput {
84
+ share_token: string;
85
+ }
86
+ interface ImportWishlistInput {
87
+ share_token: string;
88
+ }
89
+ interface ImportWishlistOutput extends Wishlist {
90
+ }
91
+ interface AddItemToWishlistInput {
92
+ product_variant_id: string;
93
+ id: string;
94
+ }
95
+ interface AddItemToWishlistOutput extends WishlistItem {
96
+ }
97
+ interface ListItemsInput extends PaginatedInput {
98
+ id: string;
99
+ }
100
+ interface ListItemsOutput extends PaginatedOutput<WishlistItem> {
101
+ }
102
+ interface RemoveItemFromWishlistInput {
103
+ wishlist_item_id: string;
104
+ id: string;
105
+ }
106
+ interface RemoveItemFromWishlistOutput {
107
+ id: string;
22
108
  }
23
109
  type WishlistEndpoints = {
24
- list: () => Promise<WishlistOutput>;
25
- add: (productId: string) => Promise<WishlistOutput>;
26
- remove: (productId: string) => Promise<WishlistOutput>;
110
+ create: (input: CreateWishlistInput, headers?: ClientHeaders) => Promise<CreateWishlistOutput>;
111
+ list: (input: ListWishlistsInput, headers?: ClientHeaders) => Promise<ListWishlistsOutput>;
112
+ retrieve: (input: RetrieveWishlistInput, headers?: ClientHeaders) => Promise<RetrieveWishlistOutput>;
113
+ update: (input: UpdateWishlistInput, headers?: ClientHeaders) => Promise<UpdateWishlistOutput>;
114
+ delete: (input: DeleteWishlistInput, headers?: ClientHeaders) => Promise<DeleteWishlistOutput>;
115
+ transfer: (input: TransferWishlistInput, headers?: ClientHeaders) => Promise<TransferWishlistOutput>;
116
+ share: (input: ShareWishlistInput, headers?: ClientHeaders) => Promise<ShareWishlistOutput>;
117
+ import: (input: ImportWishlistInput, headers?: ClientHeaders) => Promise<ImportWishlistOutput>;
118
+ totalItemsCount: (input: TotalItemsCountInput, headers?: ClientHeaders) => Promise<TotalItemsCountOutput>;
119
+ addItem: (input: AddItemToWishlistInput, headers?: ClientHeaders) => Promise<AddItemToWishlistOutput>;
120
+ listItems: (input: ListItemsInput, headers?: ClientHeaders) => Promise<ListItemsOutput>;
121
+ removeItem: (input: RemoveItemFromWishlistInput, headers?: ClientHeaders) => Promise<RemoveItemFromWishlistOutput>;
27
122
  };
28
- type Plugin$1<Name extends string, Endpoints> = {
29
- name: Name;
30
- endpoints: (client: Client, options?: AlphabiteClientOptions) => Endpoints;
123
+ declare const wishlistPlugin: Plugin<'wishlist', WishlistEndpoints>;
124
+
125
+ interface CreateClientTokenOutput {
126
+ client_token: string;
127
+ }
128
+ interface PaypalPaymentSessionInputData {
129
+ shipping_info?: StoreCartAddress;
130
+ items?: StoreCartLineItem[];
131
+ email?: string;
132
+ }
133
+ type PaypalEndpoints = {
134
+ createClientToken: (headers?: ClientHeaders) => Promise<CreateClientTokenOutput>;
135
+ };
136
+ declare const paypalPlugin: Plugin<'paypal', PaypalEndpoints>;
137
+
138
+ interface AggregateCounts {
139
+ average: number;
140
+ counts: {
141
+ rating: number;
142
+ count: number;
143
+ }[];
144
+ product_id?: string;
145
+ total_count: number;
146
+ }
147
+ interface Review {
148
+ title: string;
149
+ content: string;
150
+ rating: number;
151
+ id: string;
152
+ created_at: string;
153
+ image_urls: string[];
154
+ is_verified_purchase: boolean;
155
+ product_id: string;
156
+ customer: Pick<CustomerDTO, 'first_name' | 'last_name'>;
157
+ product?: Pick<ProductDTO, 'thumbnail' | 'title' | 'handle' | 'id'> & AggregateCounts;
158
+ }
159
+ interface CreateReviewInput {
160
+ content: string;
161
+ rating: number;
162
+ product_id: string;
163
+ image_urls: string[];
164
+ title?: string;
165
+ }
166
+ interface CreateReviewOutput extends Review {
167
+ }
168
+ interface ListReviewsInput extends PaginatedInput {
169
+ product_ids?: string[];
170
+ my_reviews_only?: boolean;
171
+ verified_purchase_only?: boolean;
172
+ rating?: number;
173
+ include_product?: boolean;
174
+ sort_by?: 'created_at' | 'rating';
175
+ order?: 'asc' | 'desc';
176
+ }
177
+ interface ListReviewsOutput extends PaginatedOutput<Review> {
178
+ }
179
+ interface ListProductReviewsInput extends Omit<ListReviewsInput, 'product_ids'> {
180
+ product_id: string;
181
+ }
182
+ interface ListProductReviewsOutput extends PaginatedOutput<Omit<Review, 'product'>>, AggregateCounts {
183
+ }
184
+ interface DeleteReviewInput {
185
+ id: string;
186
+ }
187
+ interface DeleteReviewOutput {
188
+ id: string;
189
+ }
190
+ interface AggregateCountsInput {
191
+ product_id: string;
192
+ verified_purchase_only?: boolean;
193
+ }
194
+ interface AggregateCountsOutput extends AggregateCounts {
195
+ }
196
+ type ReviewsEndpoints = {
197
+ create: (input: CreateReviewInput, headers?: ClientHeaders) => Promise<CreateReviewOutput>;
198
+ list: (input: ListReviewsInput, headers?: ClientHeaders) => Promise<ListReviewsOutput>;
199
+ listProductReviews: (input: ListProductReviewsInput, headers?: ClientHeaders) => Promise<ListProductReviewsOutput>;
200
+ delete: (input: DeleteReviewInput, headers?: ClientHeaders) => Promise<DeleteReviewOutput>;
201
+ aggregateCounts: (input: AggregateCountsInput, headers?: ClientHeaders) => Promise<AggregateCountsOutput>;
31
202
  };
32
- declare const wishlistPlugin: Plugin$1<'wishlist', WishlistEndpoints>;
203
+ declare const reviewsPlugin: Plugin<'reviews', ReviewsEndpoints>;
33
204
 
34
205
  type AlphabiteClientOptions = {
35
206
  getAuthHeader?: () => Promise<Record<string, string>> | Record<string, string>;
@@ -41,10 +212,10 @@ type Plugin<Name extends string, Endpoints> = {
41
212
  type PluginsToAlphabite<T extends readonly Plugin<any, any>[]> = {
42
213
  [K in T[number] as K['name']]: ReturnType<K['endpoints']>;
43
214
  };
44
- declare class AlphabiteMedusaClient<TPlugins extends readonly Plugin<any, any>[], TOptions extends AlphabiteClientOptions = AlphabiteClientOptions> extends Medusa {
215
+ declare class AlphabiteMedusaSdk<TPlugins extends readonly Plugin<any, any>[], TOptions extends AlphabiteClientOptions = AlphabiteClientOptions> extends Medusa {
45
216
  alphabite: PluginsToAlphabite<TPlugins>;
46
217
  protected options?: TOptions;
47
218
  constructor(medusaOptions: ConstructorParameters<typeof Medusa>[0], plugins: TPlugins, options?: TOptions);
48
219
  }
49
220
 
50
- export { type AlphabiteClientOptions, AlphabiteMedusaClient, type Plugin, type PluginsToAlphabite, type WishlistItem, type WishlistOutput, wishlistPlugin };
221
+ export { type AddItemToWishlistInput, type AddItemToWishlistOutput, type AggregateCounts, type AggregateCountsInput, type AggregateCountsOutput, type AlphabiteClientOptions, AlphabiteMedusaSdk, type CreateClientTokenOutput, type CreateReviewInput, type CreateReviewOutput, type CreateWishlistInput, type CreateWishlistOutput, type DeleteReviewInput, type DeleteReviewOutput, type DeleteWishlistInput, type DeleteWishlistOutput, type ImportWishlistInput, type ImportWishlistOutput, type ListItemsInput, type ListItemsOutput, type ListProductReviewsInput, type ListProductReviewsOutput, type ListReviewsInput, type ListReviewsOutput, type ListWishlistsInput, type ListWishlistsOutput, type PaypalPaymentSessionInputData, type Plugin, type PluginsToAlphabite, type RemoveItemFromWishlistInput, type RemoveItemFromWishlistOutput, type RetrieveWishlistInput, type RetrieveWishlistOutput, type Review, type ShareWishlistInput, type ShareWishlistOutput, type TotalItemsCountInput, type TotalItemsCountOutput, type TransferWishlistInput, type TransferWishlistOutput, type UpdateWishlistInput, type UpdateWishlistOutput, type Wishlist, type WishlistItem, paypalPlugin, reviewsPlugin, wishlistPlugin };
package/dist/index.js CHANGED
@@ -1,2 +1 @@
1
- 'use strict';var a=require('@medusajs/js-sdk');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var a__default=/*#__PURE__*/_interopDefault(a);var p={name:"wishlist",endpoints:(s,t)=>({list:async()=>s.fetch("/store/customers/me/wishlists",{method:"GET",headers:{...await t?.getAuthHeader?.()}}),add:async i=>s.fetch("/store/customers/me/wishlists/items",{method:"POST",body:JSON.stringify({product_id:i}),headers:{...await t?.getAuthHeader?.()}}),remove:async i=>s.fetch(`/store/customers/me/wishlists/items/${i}`,{method:"DELETE",headers:{...await t?.getAuthHeader?.()}})})};var r=class extends a__default.default{constructor(t,i,o){super(t),this.options=o;let e={};i.forEach(n=>{e[n.name]=n.endpoints(this,this.options);}),this.alphabite=e;}};exports.AlphabiteMedusaClient=r;exports.wishlistPlugin=p;//# sourceMappingURL=index.js.map
2
- //# sourceMappingURL=index.js.map
1
+ 'use strict';var u=require('@medusajs/js-sdk');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var u__default=/*#__PURE__*/_interopDefault(u);var p={name:"wishlist",endpoints:(s,i)=>({create:async({...e},t)=>s.client.fetch("/store/wishlists",{method:"POST",body:e,headers:{...await i?.getAuthHeader?.(),...t}}),list:async({limit:e=10,offset:t=0,...r},n)=>s.client.fetch("/store/wishlists",{method:"GET",headers:{...await i?.getAuthHeader?.(),...n},query:{limit:e,offset:t,...r}}),retrieve:async({id:e,...t},r)=>s.client.fetch(`/store/wishlists/${e}`,{method:"GET",headers:{...await i?.getAuthHeader?.(),...r},query:t}),update:async({id:e,...t},r)=>s.client.fetch(`/store/wishlists/${e}`,{method:"PUT",body:t,headers:{...await i?.getAuthHeader?.(),...r}}),delete:async({id:e},t)=>s.client.fetch(`/store/wishlists/${e}`,{method:"DELETE",headers:{...await i?.getAuthHeader?.(),...t}}),totalItemsCount:async({wishlist_id:e},t)=>s.client.fetch("store/wishlists/total-items-count",{method:"GET",headers:{...await i?.getAuthHeader?.(),...t},query:{wishlist_id:e}}),transfer:async({id:e},t)=>s.client.fetch(`/store/wishlists/${e}/transfer`,{method:"POST",headers:{...await i?.getAuthHeader?.(),...t}}),share:async({id:e},t)=>s.client.fetch(`/store/wishlists/${e}/share`,{method:"POST",headers:{...await i?.getAuthHeader?.(),...t}}),import:async(e,t)=>s.client.fetch("/store/wishlists/import",{method:"POST",body:e,headers:{...await i?.getAuthHeader?.(),...t}}),addItem:async({id:e,...t},r)=>s.client.fetch(`/store/wishlists/${e}/add-item`,{method:"POST",body:t,headers:{...await i?.getAuthHeader?.(),...r}}),listItems:async({id:e,limit:t=10,offset:r=0,...n},o)=>s.client.fetch(`/store/wishlists/${e}/items`,{method:"GET",headers:{...await i?.getAuthHeader?.(),...o},query:{limit:t,offset:r,...n}}),removeItem:async({wishlist_item_id:e,id:t},r)=>s.client.fetch(`/store/wishlists/${t}/items/${e}`,{method:"DELETE",headers:{...await i?.getAuthHeader?.(),...r}})})};var l={name:"paypal",endpoints:(s,i)=>({createClientToken:async e=>s.client.fetch("/store/paypal/client-token",{method:"POST",headers:{...await i?.getAuthHeader?.(),...e}})})};var c={name:"reviews",endpoints:(s,i)=>({create:async(e,t)=>s.client.fetch("/store/reviews",{method:"POST",body:e,headers:{...await i?.getAuthHeader?.(),...t}}),list:async({...e},t)=>s.client.fetch("/store/products/reviews",{method:"GET",headers:{...await i?.getAuthHeader?.(),...t},query:e}),listProductReviews:async({product_id:e,...t},r)=>s.client.fetch(`store/reviews/product/${e}`,{method:"GET",query:t,headers:{...await i?.getAuthHeader?.(),...r}}),aggregateCounts:async({product_id:e,...t},r)=>s.client.fetch(`/store/reviews/product/${e}/aggregate-counts`,{method:"GET",query:t,headers:{...await i?.getAuthHeader?.(),...r}}),delete:async({id:e},t)=>s.client.fetch(`/store/reviews/${e}`,{method:"DELETE",headers:{...await i?.getAuthHeader?.(),...t}})})};var a=class extends u__default.default{constructor(i,e,t){super(i),this.options=t;let r={};e.forEach(n=>{r[n.name]=n.endpoints(this,this.options);}),this.alphabite=r;}};exports.AlphabiteMedusaSdk=a;exports.paypalPlugin=l;exports.reviewsPlugin=c;exports.wishlistPlugin=p;
package/dist/index.mjs CHANGED
@@ -1,2 +1 @@
1
- import a from'@medusajs/js-sdk';var p={name:"wishlist",endpoints:(s,t)=>({list:async()=>s.fetch("/store/customers/me/wishlists",{method:"GET",headers:{...await t?.getAuthHeader?.()}}),add:async i=>s.fetch("/store/customers/me/wishlists/items",{method:"POST",body:JSON.stringify({product_id:i}),headers:{...await t?.getAuthHeader?.()}}),remove:async i=>s.fetch(`/store/customers/me/wishlists/items/${i}`,{method:"DELETE",headers:{...await t?.getAuthHeader?.()}})})};var r=class extends a{constructor(t,i,o){super(t),this.options=o;let e={};i.forEach(n=>{e[n.name]=n.endpoints(this,this.options);}),this.alphabite=e;}};export{r as AlphabiteMedusaClient,p as wishlistPlugin};//# sourceMappingURL=index.mjs.map
2
- //# sourceMappingURL=index.mjs.map
1
+ import u from'@medusajs/js-sdk';var p={name:"wishlist",endpoints:(s,i)=>({create:async({...e},t)=>s.client.fetch("/store/wishlists",{method:"POST",body:e,headers:{...await i?.getAuthHeader?.(),...t}}),list:async({limit:e=10,offset:t=0,...r},n)=>s.client.fetch("/store/wishlists",{method:"GET",headers:{...await i?.getAuthHeader?.(),...n},query:{limit:e,offset:t,...r}}),retrieve:async({id:e,...t},r)=>s.client.fetch(`/store/wishlists/${e}`,{method:"GET",headers:{...await i?.getAuthHeader?.(),...r},query:t}),update:async({id:e,...t},r)=>s.client.fetch(`/store/wishlists/${e}`,{method:"PUT",body:t,headers:{...await i?.getAuthHeader?.(),...r}}),delete:async({id:e},t)=>s.client.fetch(`/store/wishlists/${e}`,{method:"DELETE",headers:{...await i?.getAuthHeader?.(),...t}}),totalItemsCount:async({wishlist_id:e},t)=>s.client.fetch("store/wishlists/total-items-count",{method:"GET",headers:{...await i?.getAuthHeader?.(),...t},query:{wishlist_id:e}}),transfer:async({id:e},t)=>s.client.fetch(`/store/wishlists/${e}/transfer`,{method:"POST",headers:{...await i?.getAuthHeader?.(),...t}}),share:async({id:e},t)=>s.client.fetch(`/store/wishlists/${e}/share`,{method:"POST",headers:{...await i?.getAuthHeader?.(),...t}}),import:async(e,t)=>s.client.fetch("/store/wishlists/import",{method:"POST",body:e,headers:{...await i?.getAuthHeader?.(),...t}}),addItem:async({id:e,...t},r)=>s.client.fetch(`/store/wishlists/${e}/add-item`,{method:"POST",body:t,headers:{...await i?.getAuthHeader?.(),...r}}),listItems:async({id:e,limit:t=10,offset:r=0,...n},o)=>s.client.fetch(`/store/wishlists/${e}/items`,{method:"GET",headers:{...await i?.getAuthHeader?.(),...o},query:{limit:t,offset:r,...n}}),removeItem:async({wishlist_item_id:e,id:t},r)=>s.client.fetch(`/store/wishlists/${t}/items/${e}`,{method:"DELETE",headers:{...await i?.getAuthHeader?.(),...r}})})};var l={name:"paypal",endpoints:(s,i)=>({createClientToken:async e=>s.client.fetch("/store/paypal/client-token",{method:"POST",headers:{...await i?.getAuthHeader?.(),...e}})})};var c={name:"reviews",endpoints:(s,i)=>({create:async(e,t)=>s.client.fetch("/store/reviews",{method:"POST",body:e,headers:{...await i?.getAuthHeader?.(),...t}}),list:async({...e},t)=>s.client.fetch("/store/products/reviews",{method:"GET",headers:{...await i?.getAuthHeader?.(),...t},query:e}),listProductReviews:async({product_id:e,...t},r)=>s.client.fetch(`store/reviews/product/${e}`,{method:"GET",query:t,headers:{...await i?.getAuthHeader?.(),...r}}),aggregateCounts:async({product_id:e,...t},r)=>s.client.fetch(`/store/reviews/product/${e}/aggregate-counts`,{method:"GET",query:t,headers:{...await i?.getAuthHeader?.(),...r}}),delete:async({id:e},t)=>s.client.fetch(`/store/reviews/${e}`,{method:"DELETE",headers:{...await i?.getAuthHeader?.(),...t}})})};var a=class extends u{constructor(i,e,t){super(i),this.options=t;let r={};e.forEach(n=>{r[n.name]=n.endpoints(this,this.options);}),this.alphabite=r;}};export{a as AlphabiteMedusaSdk,l as paypalPlugin,c as reviewsPlugin,p as wishlistPlugin};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alphabite/medusa-sdk",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "Extended Medusa utility sdk client, that adds Alphabite's plugins endpoints",
5
5
  "author": "Alphabite",
6
6
  "license": "MIT",
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/plugins/wishlist.ts","../src/index.ts"],"names":["wishlistPlugin","client","options","productId","AlphabiteMedusaClient","Medusa","medusaOptions","plugins","endpoints","plugin"],"mappings":"+JAoCO,IAAMA,CAAwD,CAAA,CACnE,IAAM,CAAA,UAAA,CACN,SAAW,CAAA,CAACC,CAAgBC,CAAAA,CAAAA,IAAsC,CAChE,IAAA,CAAM,SACJD,CAAO,CAAA,KAAA,CAAM,+BAAiC,CAAA,CAC5C,MAAQ,CAAA,KAAA,CACR,OAAS,CAAA,CACP,GAAI,MAAMC,CAAS,EAAA,aAAA,IACrB,CACF,CAAC,CACH,CAAA,GAAA,CAAK,MAAOC,CAAAA,EACVF,CAAO,CAAA,KAAA,CAAM,qCAAuC,CAAA,CAClD,MAAQ,CAAA,MAAA,CACR,IAAM,CAAA,IAAA,CAAK,SAAU,CAAA,CAAE,UAAYE,CAAAA,CAAU,CAAC,CAAA,CAC9C,OAAS,CAAA,CACP,GAAI,MAAMD,CAAS,EAAA,aAAA,IACrB,CACF,CAAC,CAAA,CACH,MAAQ,CAAA,MAAOC,GACbF,CAAO,CAAA,KAAA,CAAM,CAAuCE,oCAAAA,EAAAA,CAAS,CAAI,CAAA,CAAA,CAC/D,MAAQ,CAAA,QAAA,CACR,OAAS,CAAA,CACP,GAAI,MAAMD,CAAS,EAAA,aAAA,IACrB,CACF,CAAC,CACL,CACF,CAAA,EC9CaE,IAAAA,CAAAA,CAAN,cAGGC,kBAAO,CAIf,WAAA,CACEC,CACAC,CAAAA,CAAAA,CACAL,CACA,CAAA,CACA,MAAMI,CAAa,CAAA,CACnB,IAAK,CAAA,OAAA,CAAUJ,CACf,CAAA,IAAMM,CAAiB,CAAA,EACvBD,CAAAA,CAAAA,CAAQ,OAASE,CAAAA,CAAAA,EAAW,CAC1BD,CAAAA,CAAUC,CAAO,CAAA,IAAI,CAAIA,CAAAA,CAAAA,CAAO,SAAU,CAAA,IAAA,CAAM,IAAK,CAAA,OAAO,EAC9D,CAAC,CACD,CAAA,IAAA,CAAK,SAAYD,CAAAA,EACnB,CACF","file":"index.js","sourcesContent":["import { BaseProduct } from '@medusajs/types/dist/http/product/common'\r\nimport { Client } from '@medusajs/js-sdk'\r\nimport { AlphabiteClientOptions } from '..'\r\n\r\nexport interface WishlistOutput {\r\n wishlist: {\r\n id: string\r\n customer_id: string\r\n sales_channel_id: string\r\n items: WishlistItem[]\r\n created_at: string\r\n updated_at: string\r\n }\r\n}\r\n\r\nexport interface WishlistItem {\r\n id: string\r\n product_id: string\r\n wishlist_id: string\r\n created_at: string\r\n updated_at: string\r\n variants: BaseProduct['variants']\r\n product: BaseProduct\r\n}\r\n\r\ntype WishlistEndpoints = {\r\n list: () => Promise<WishlistOutput>\r\n add: (productId: string) => Promise<WishlistOutput>\r\n remove: (productId: string) => Promise<WishlistOutput>\r\n}\r\n\r\ntype Plugin<Name extends string, Endpoints> = {\r\n name: Name\r\n endpoints: (client: Client, options?: AlphabiteClientOptions) => Endpoints\r\n}\r\n\r\nexport const wishlistPlugin: Plugin<'wishlist', WishlistEndpoints> = {\r\n name: 'wishlist' as const,\r\n endpoints: (client: Client, options?: AlphabiteClientOptions) => ({\r\n list: async () =>\r\n client.fetch('/store/customers/me/wishlists', {\r\n method: 'GET',\r\n headers: {\r\n ...(await options?.getAuthHeader?.()),\r\n },\r\n }),\r\n add: async (productId: string) =>\r\n client.fetch('/store/customers/me/wishlists/items', {\r\n method: 'POST',\r\n body: JSON.stringify({ product_id: productId }),\r\n headers: {\r\n ...(await options?.getAuthHeader?.()),\r\n },\r\n }),\r\n remove: async (productId: string) =>\r\n client.fetch(`/store/customers/me/wishlists/items/${productId}`, {\r\n method: 'DELETE',\r\n headers: {\r\n ...(await options?.getAuthHeader?.()),\r\n },\r\n }),\r\n }),\r\n}\r\n","import Medusa from '@medusajs/js-sdk'\r\nexport * from './plugins'\r\n\r\nexport type AlphabiteClientOptions = {\r\n getAuthHeader?: () => Promise<Record<string, string>> | Record<string, string>\r\n}\r\n\r\nexport type Plugin<Name extends string, Endpoints> = {\r\n name: Name\r\n endpoints: (client: any, options?: AlphabiteClientOptions) => Endpoints\r\n}\r\n\r\nexport type PluginsToAlphabite<T extends readonly Plugin<any, any>[]> = {\r\n [K in T[number] as K['name']]: ReturnType<K['endpoints']>\r\n}\r\n\r\nexport class AlphabiteMedusaClient<\r\n TPlugins extends readonly Plugin<any, any>[],\r\n TOptions extends AlphabiteClientOptions = AlphabiteClientOptions,\r\n> extends Medusa {\r\n public alphabite: PluginsToAlphabite<TPlugins>\r\n protected options?: TOptions\r\n\r\n constructor(\r\n medusaOptions: ConstructorParameters<typeof Medusa>[0],\r\n plugins: TPlugins,\r\n options?: TOptions,\r\n ) {\r\n super(medusaOptions)\r\n this.options = options\r\n const endpoints: any = {}\r\n plugins.forEach((plugin) => {\r\n endpoints[plugin.name] = plugin.endpoints(this, this.options)\r\n })\r\n this.alphabite = endpoints\r\n }\r\n}\r\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/plugins/wishlist.ts","../src/index.ts"],"names":["wishlistPlugin","client","options","productId","AlphabiteMedusaClient","Medusa","medusaOptions","plugins","endpoints","plugin"],"mappings":"gCAoCO,IAAMA,CAAwD,CAAA,CACnE,IAAM,CAAA,UAAA,CACN,SAAW,CAAA,CAACC,CAAgBC,CAAAA,CAAAA,IAAsC,CAChE,IAAA,CAAM,SACJD,CAAO,CAAA,KAAA,CAAM,+BAAiC,CAAA,CAC5C,MAAQ,CAAA,KAAA,CACR,OAAS,CAAA,CACP,GAAI,MAAMC,CAAS,EAAA,aAAA,IACrB,CACF,CAAC,CACH,CAAA,GAAA,CAAK,MAAOC,CAAAA,EACVF,CAAO,CAAA,KAAA,CAAM,qCAAuC,CAAA,CAClD,MAAQ,CAAA,MAAA,CACR,IAAM,CAAA,IAAA,CAAK,SAAU,CAAA,CAAE,UAAYE,CAAAA,CAAU,CAAC,CAAA,CAC9C,OAAS,CAAA,CACP,GAAI,MAAMD,CAAS,EAAA,aAAA,IACrB,CACF,CAAC,CAAA,CACH,MAAQ,CAAA,MAAOC,GACbF,CAAO,CAAA,KAAA,CAAM,CAAuCE,oCAAAA,EAAAA,CAAS,CAAI,CAAA,CAAA,CAC/D,MAAQ,CAAA,QAAA,CACR,OAAS,CAAA,CACP,GAAI,MAAMD,CAAS,EAAA,aAAA,IACrB,CACF,CAAC,CACL,CACF,CAAA,EC9CaE,IAAAA,CAAAA,CAAN,cAGGC,CAAO,CAIf,WAAA,CACEC,CACAC,CAAAA,CAAAA,CACAL,CACA,CAAA,CACA,MAAMI,CAAa,CAAA,CACnB,IAAK,CAAA,OAAA,CAAUJ,CACf,CAAA,IAAMM,CAAiB,CAAA,EACvBD,CAAAA,CAAAA,CAAQ,OAASE,CAAAA,CAAAA,EAAW,CAC1BD,CAAAA,CAAUC,CAAO,CAAA,IAAI,CAAIA,CAAAA,CAAAA,CAAO,SAAU,CAAA,IAAA,CAAM,IAAK,CAAA,OAAO,EAC9D,CAAC,CACD,CAAA,IAAA,CAAK,SAAYD,CAAAA,EACnB,CACF","file":"index.mjs","sourcesContent":["import { BaseProduct } from '@medusajs/types/dist/http/product/common'\r\nimport { Client } from '@medusajs/js-sdk'\r\nimport { AlphabiteClientOptions } from '..'\r\n\r\nexport interface WishlistOutput {\r\n wishlist: {\r\n id: string\r\n customer_id: string\r\n sales_channel_id: string\r\n items: WishlistItem[]\r\n created_at: string\r\n updated_at: string\r\n }\r\n}\r\n\r\nexport interface WishlistItem {\r\n id: string\r\n product_id: string\r\n wishlist_id: string\r\n created_at: string\r\n updated_at: string\r\n variants: BaseProduct['variants']\r\n product: BaseProduct\r\n}\r\n\r\ntype WishlistEndpoints = {\r\n list: () => Promise<WishlistOutput>\r\n add: (productId: string) => Promise<WishlistOutput>\r\n remove: (productId: string) => Promise<WishlistOutput>\r\n}\r\n\r\ntype Plugin<Name extends string, Endpoints> = {\r\n name: Name\r\n endpoints: (client: Client, options?: AlphabiteClientOptions) => Endpoints\r\n}\r\n\r\nexport const wishlistPlugin: Plugin<'wishlist', WishlistEndpoints> = {\r\n name: 'wishlist' as const,\r\n endpoints: (client: Client, options?: AlphabiteClientOptions) => ({\r\n list: async () =>\r\n client.fetch('/store/customers/me/wishlists', {\r\n method: 'GET',\r\n headers: {\r\n ...(await options?.getAuthHeader?.()),\r\n },\r\n }),\r\n add: async (productId: string) =>\r\n client.fetch('/store/customers/me/wishlists/items', {\r\n method: 'POST',\r\n body: JSON.stringify({ product_id: productId }),\r\n headers: {\r\n ...(await options?.getAuthHeader?.()),\r\n },\r\n }),\r\n remove: async (productId: string) =>\r\n client.fetch(`/store/customers/me/wishlists/items/${productId}`, {\r\n method: 'DELETE',\r\n headers: {\r\n ...(await options?.getAuthHeader?.()),\r\n },\r\n }),\r\n }),\r\n}\r\n","import Medusa from '@medusajs/js-sdk'\r\nexport * from './plugins'\r\n\r\nexport type AlphabiteClientOptions = {\r\n getAuthHeader?: () => Promise<Record<string, string>> | Record<string, string>\r\n}\r\n\r\nexport type Plugin<Name extends string, Endpoints> = {\r\n name: Name\r\n endpoints: (client: any, options?: AlphabiteClientOptions) => Endpoints\r\n}\r\n\r\nexport type PluginsToAlphabite<T extends readonly Plugin<any, any>[]> = {\r\n [K in T[number] as K['name']]: ReturnType<K['endpoints']>\r\n}\r\n\r\nexport class AlphabiteMedusaClient<\r\n TPlugins extends readonly Plugin<any, any>[],\r\n TOptions extends AlphabiteClientOptions = AlphabiteClientOptions,\r\n> extends Medusa {\r\n public alphabite: PluginsToAlphabite<TPlugins>\r\n protected options?: TOptions\r\n\r\n constructor(\r\n medusaOptions: ConstructorParameters<typeof Medusa>[0],\r\n plugins: TPlugins,\r\n options?: TOptions,\r\n ) {\r\n super(medusaOptions)\r\n this.options = options\r\n const endpoints: any = {}\r\n plugins.forEach((plugin) => {\r\n endpoints[plugin.name] = plugin.endpoints(this, this.options)\r\n })\r\n this.alphabite = endpoints\r\n }\r\n}\r\n"]}