@alphabite/medusa-wishlist 0.5.10 โ 0.5.12
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.
|
@@ -25,7 +25,11 @@ async function GET(req, res) {
|
|
|
25
25
|
id,
|
|
26
26
|
},
|
|
27
27
|
...req.queryConfig,
|
|
28
|
-
fields: [
|
|
28
|
+
fields: [
|
|
29
|
+
...utils_2.defaultFields,
|
|
30
|
+
...(req.queryConfig?.fields || []),
|
|
31
|
+
...(options?.wishlistFields || []),
|
|
32
|
+
],
|
|
29
33
|
});
|
|
30
34
|
const wishlist = data?.[0];
|
|
31
35
|
if (!wishlist) {
|
|
@@ -37,7 +41,11 @@ async function GET(req, res) {
|
|
|
37
41
|
const { data: items, metadata: items_metadata } = await query.graph({
|
|
38
42
|
entity: "wishlist_item",
|
|
39
43
|
filters: { wishlist_id: wishlist.id },
|
|
40
|
-
fields: [
|
|
44
|
+
fields: [
|
|
45
|
+
...utils_2.defaultItemsFields,
|
|
46
|
+
...(options?.wishlistItemsFields || []),
|
|
47
|
+
...(items_fields || []),
|
|
48
|
+
],
|
|
41
49
|
pagination: {
|
|
42
50
|
take: options?.includeWishlistItemsTake || 5,
|
|
43
51
|
skip: 0,
|
|
@@ -97,10 +105,14 @@ async function GET(req, res) {
|
|
|
97
105
|
},
|
|
98
106
|
};
|
|
99
107
|
});
|
|
100
|
-
return res.status(200).json({
|
|
108
|
+
return res.status(200).json({
|
|
109
|
+
...wishlist,
|
|
110
|
+
items_count: items_metadata?.count,
|
|
111
|
+
items: enrichedItems,
|
|
112
|
+
});
|
|
101
113
|
}
|
|
102
114
|
catch (error) {
|
|
103
|
-
logger.error("Error fetching wishlists:", error);
|
|
115
|
+
logger.error("Error fetching wishlists:", error instanceof Error ? error : new Error(String(error)));
|
|
104
116
|
return res.status(500).end();
|
|
105
117
|
}
|
|
106
118
|
}
|
|
@@ -117,7 +129,7 @@ async function PUT(req, res) {
|
|
|
117
129
|
return res.status(200).json(updated_wishlist);
|
|
118
130
|
}
|
|
119
131
|
catch (error) {
|
|
120
|
-
logger.error("Update wishlists failed:", error);
|
|
132
|
+
logger.error("Update wishlists failed:", error instanceof Error ? error : new Error(String(error)));
|
|
121
133
|
return res.status(500).end();
|
|
122
134
|
}
|
|
123
135
|
}
|
|
@@ -132,8 +144,8 @@ async function DELETE(req, res) {
|
|
|
132
144
|
});
|
|
133
145
|
}
|
|
134
146
|
catch (error) {
|
|
135
|
-
logger.error("Wishlist deleting failed.", error);
|
|
147
|
+
logger.error("Wishlist deleting failed.", error instanceof Error ? error : new Error(String(error)));
|
|
136
148
|
return res.status(500).end();
|
|
137
149
|
}
|
|
138
150
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
151
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0cy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0JBLGtCQTZKQztBQUVELGtCQTJCQztBQU9ELHdCQXlCQztBQTdPRCxxREFLbUM7QUFJbkMsMkRBQStEO0FBRS9ELG1EQUE0RTtBQU81RSxpREFBaUQ7QUFDMUMsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBMkQsRUFDM0QsR0FBNkI7SUFFN0IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFM0MsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFDMUIsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUM7SUFDaEQsTUFBTSxFQUFFLFlBQVksRUFBRSx3QkFBd0IsRUFBRSx1QkFBdUIsRUFBRSxHQUN2RSxHQUFHLENBQUMsY0FBYyxDQUFDO0lBRXJCLE1BQU0sZUFBZSxHQUNuQixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFDO0lBQzVELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFFekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGlDQUFpQyxDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLEtBQUss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
|
|
@@ -5,12 +5,27 @@ const migrations_1 = require("@mikro-orm/migrations");
|
|
|
5
5
|
class Migration20260415155648 extends migrations_1.Migration {
|
|
6
6
|
async up() {
|
|
7
7
|
this.addSql(`alter table if exists "wishlist_item" add column if not exists "product_id" text;`);
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
// Backfill product_id from the variant's product. Guarded against fresh
|
|
9
|
+
// databases where the product module's migrations haven't created
|
|
10
|
+
// product_variant yet โ Medusa runs each module's migrations independently
|
|
11
|
+
// with no cross-module ordering guarantee. On a fresh install wishlist_item
|
|
12
|
+
// is empty so the UPDATE would touch zero rows even if the table existed,
|
|
13
|
+
// but Postgres parses the FROM clause before execution and errors on
|
|
14
|
+
// missing relations. The IF EXISTS guard skips cleanly in that case.
|
|
15
|
+
this.addSql(`
|
|
16
|
+
DO $$
|
|
17
|
+
BEGIN
|
|
18
|
+
IF EXISTS (
|
|
19
|
+
SELECT FROM information_schema.tables
|
|
20
|
+
WHERE table_name = 'product_variant'
|
|
21
|
+
) THEN
|
|
22
|
+
UPDATE "wishlist_item" wi
|
|
23
|
+
SET "product_id" = pv.product_id
|
|
24
|
+
FROM "product_variant" pv
|
|
25
|
+
WHERE wi.product_variant_id = pv.id
|
|
26
|
+
AND wi.product_id IS NULL;
|
|
27
|
+
END IF;
|
|
28
|
+
END $$;
|
|
14
29
|
`);
|
|
15
30
|
this.addSql(`update "wishlist_item" set "product_id" = 'orphaned_product' where "product_id" is null;`);
|
|
16
31
|
this.addSql(`alter table if exists "wishlist_item" alter column "product_id" set not null;`);
|
|
@@ -20,4 +35,4 @@ class Migration20260415155648 extends migrations_1.Migration {
|
|
|
20
35
|
}
|
|
21
36
|
}
|
|
22
37
|
exports.Migration20260415155648 = Migration20260415155648;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA0MTUxNTU2NDguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy93aXNobGlzdC9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwNDE1MTU1NjQ4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFrRDtBQUVsRCxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQzNDLEtBQUssQ0FBQyxFQUFFO1FBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FDVCxtRkFBbUYsQ0FDcEYsQ0FBQztRQUVGLHdFQUF3RTtRQUN4RSxrRUFBa0U7UUFDbEUsMkVBQTJFO1FBQzNFLDRFQUE0RTtRQUM1RSwwRUFBMEU7UUFDMUUscUVBQXFFO1FBQ3JFLHFFQUFxRTtRQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7OztLQWNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxNQUFNLENBQ1QsMEZBQTBGLENBQzNGLENBQUM7UUFFRixJQUFJLENBQUMsTUFBTSxDQUNULCtFQUErRSxDQUNoRixDQUFDO0lBQ0osQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQ1QsMkVBQTJFLENBQzVFLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUEzQ0QsMERBMkNDIn0=
|
|
@@ -10,6 +10,9 @@ exports.Wishlist = utils_1.model
|
|
|
10
10
|
customer_id: utils_1.model.text().nullable(),
|
|
11
11
|
sales_channel_id: utils_1.model.text(),
|
|
12
12
|
items: utils_1.model.hasMany(() => wishlist_item_1.WishlistItem),
|
|
13
|
+
})
|
|
14
|
+
.cascades({
|
|
15
|
+
delete: ["items"],
|
|
13
16
|
})
|
|
14
17
|
.indexes([
|
|
15
18
|
{
|
|
@@ -17,4 +20,4 @@ exports.Wishlist = utils_1.model
|
|
|
17
20
|
where: { customer_id: { $ne: null } },
|
|
18
21
|
},
|
|
19
22
|
]);
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lzaGxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy93aXNobGlzdC9tb2RlbHMvd2lzaGxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQWtEO0FBQ2xELG1EQUErQztBQUdsQyxRQUFBLFFBQVEsR0FBRyxhQUFLO0tBQzFCLE1BQU0sQ0FBQyxVQUFVLEVBQUU7SUFDbEIsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxVQUFVLEVBQUU7SUFDM0MsSUFBSSxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsV0FBVyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDcEMsZ0JBQWdCLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUM5QixLQUFLLEVBQUUsYUFBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyw0QkFBWSxDQUFDO0NBQ3pDLENBQUM7S0FDRCxRQUFRLENBQUM7SUFDUixNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUM7Q0FDbEIsQ0FBQztLQUNELE9BQU8sQ0FBQztJQUNQO1FBQ0UsRUFBRSxFQUFFLENBQUMsYUFBYSxFQUFFLGtCQUFrQixDQUFDO1FBQ3ZDLEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRTtLQUN0QztDQUNGLENBQUMsQ0FBQyJ9
|
package/README.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
The **Alphabite Wishlist Plugin** is the most feature-complete wishlist system for [MedusaJS](https://medusajs.com). It supports both authenticated and guest users, multiple wishlists per user, and a full-featured SDK client for frontend integration.
|
|
4
4
|
|
|
5
5
|
This plugin ships with:
|
|
6
|
+
|
|
6
7
|
- ๐ A fully typed JS SDK plugin
|
|
7
8
|
- ๐ญ A Postman collection
|
|
8
9
|
- โ
Support for guest & authenticated customers
|
|
@@ -13,17 +14,24 @@ This plugin ships with:
|
|
|
13
14
|
|
|
14
15
|
Please install the plugin version that matches your Medusa version:
|
|
15
16
|
|
|
16
|
-
| Medusa Version
|
|
17
|
-
|
|
18
|
-
| `2.
|
|
19
|
-
|
|
|
17
|
+
| Medusa Version | Plugin Version | Install Command |
|
|
18
|
+
| ------------------ | -------------- | ---------------------------------------------- |
|
|
19
|
+
| `2.14.*` and above | `latest` | `npm install @alphabite/medusa-wishlist` |
|
|
20
|
+
| `2.13.*` | `0.5.8` | `npm install @alphabite/medusa-wishlist@0.5.8` |
|
|
21
|
+
| Below `2.13.0` | `0.5.7` | `npm install @alphabite/medusa-wishlist@0.5.7` |
|
|
20
22
|
|
|
21
|
-
### Installing the latest version (Medusa 2.
|
|
23
|
+
### Installing the latest version (Medusa 2.14.\* and above)
|
|
22
24
|
|
|
23
25
|
```bash
|
|
24
26
|
npm install @alphabite/medusa-wishlist
|
|
25
27
|
```
|
|
26
28
|
|
|
29
|
+
### Installing version 0.5.8 (Medusa 2.13.\*)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install @alphabite/medusa-wishlist@0.5.8
|
|
33
|
+
```
|
|
34
|
+
|
|
27
35
|
### Installing version 0.5.7 (Medusa versions below 2.13.0)
|
|
28
36
|
|
|
29
37
|
```bash
|
|
@@ -50,11 +58,11 @@ npm install @alphabite/medusa-wishlist@0.5.7
|
|
|
50
58
|
|
|
51
59
|
## โจ Features
|
|
52
60
|
|
|
53
|
-
- โ
Multiple wishlists per customer
|
|
54
|
-
- โ
Add/remove items to/from any wishlist
|
|
55
|
-
- โ
Guest wishlist supported + transfer when registered
|
|
56
|
-
- โ
Fully typed Medusa JS SDK integration with our SDK client
|
|
57
|
-
- โ
Pagination and filtering built-in
|
|
61
|
+
- โ
Multiple wishlists per customer
|
|
62
|
+
- โ
Add/remove items to/from any wishlist
|
|
63
|
+
- โ
Guest wishlist supported + transfer when registered
|
|
64
|
+
- โ
Fully typed Medusa JS SDK integration with our SDK client
|
|
65
|
+
- โ
Pagination and filtering built-in
|
|
58
66
|
|
|
59
67
|
---
|
|
60
68
|
|
|
@@ -71,7 +79,7 @@ In your `medusa-config.js`, register the plugin:
|
|
|
71
79
|
```js
|
|
72
80
|
const plugins = [
|
|
73
81
|
{
|
|
74
|
-
resolve:
|
|
82
|
+
resolve: "@alphabite/medusa-wishlist",
|
|
75
83
|
options: {
|
|
76
84
|
// all are optional, read bellow about default values
|
|
77
85
|
wishlistFields: [],
|
|
@@ -81,20 +89,20 @@ const plugins = [
|
|
|
81
89
|
allowGuestWishlist: true,
|
|
82
90
|
},
|
|
83
91
|
},
|
|
84
|
-
]
|
|
92
|
+
];
|
|
85
93
|
```
|
|
86
94
|
|
|
87
95
|
---
|
|
88
96
|
|
|
89
97
|
## ๐ง Plugin Options
|
|
90
98
|
|
|
91
|
-
| Option
|
|
92
|
-
|
|
93
|
-
| `wishlistFields`
|
|
94
|
-
| `wishlistItemsFields`
|
|
95
|
-
| `includeWishlistItems`
|
|
96
|
-
| `includeWishlistItemsTake` | `number`
|
|
97
|
-
| `allowGuestWishlist`
|
|
99
|
+
| Option | Type | Default | Description |
|
|
100
|
+
| -------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
|
101
|
+
| `wishlistFields` | `string[]` | `["items.*", "items.product_variant.*", "items.product_variant.prices.*", "items.product_variant.product.thumbnail", "items.product_variant.product.id"]` | Selectively include Medusa product or product variant fields on wishlist list/retrieve endpoints that have wishlist items included |
|
|
102
|
+
| `wishlistItemsFields` | `string[]` | `["id", "product_id", "wishlist_id", "created_at", "wishlist.customer_id", "updated_at", "deleted_at", "product_variant.*", "product_variant.prices.*", "product_variant.calculated_price", "product_variant.product.thumbnail",]` | Selectively include Medusa product or product variant fields on wishlist items list/retrieve endpoints |
|
|
103
|
+
| `includeWishlistItems` | `boolean` | `false` | Automatically populate wishlist items in `GET /store/wishlists` |
|
|
104
|
+
| `includeWishlistItemsTake` | `number` | `5` | Limit number of items if `includeWishlistItems` is true |
|
|
105
|
+
| `allowGuestWishlist` | `boolean` | `false` | Enables wishlist creation & usage without authentication (cookie-based) |
|
|
98
106
|
|
|
99
107
|
---
|
|
100
108
|
|
|
@@ -102,17 +110,17 @@ const plugins = [
|
|
|
102
110
|
|
|
103
111
|
All endpoints are available under `/store/wishlists`.
|
|
104
112
|
|
|
105
|
-
| Method | Endpoint
|
|
106
|
-
|
|
107
|
-
| GET | `/store/wishlists`
|
|
108
|
-
| POST | `/store/wishlists`
|
|
109
|
-
| GET | `/store/wishlists/:id`
|
|
110
|
-
| PUT | `/store/wishlists/:id`
|
|
111
|
-
| DELETE | `/store/wishlists/:id`
|
|
112
|
-
| POST | `/store/wishlists/:id/transfer`
|
|
113
|
-
| GET | `/store/wishlists/:id/items`
|
|
114
|
-
| POST | `/store/wishlists/:id/add-item`
|
|
115
|
-
| DELETE | `/store/wishlists/:id/items/:item_id`
|
|
113
|
+
| Method | Endpoint | Auth | Description |
|
|
114
|
+
| ------ | ------------------------------------- | ------------- | ----------------------------------------- |
|
|
115
|
+
| GET | `/store/wishlists` | โ
| List wishlists for the current customer |
|
|
116
|
+
| POST | `/store/wishlists` | โ (optional) | Create a new wishlist |
|
|
117
|
+
| GET | `/store/wishlists/:id` | โ (optional) | Retrieve a wishlist by ID |
|
|
118
|
+
| PUT | `/store/wishlists/:id` | โ
| Update wishlist metadata |
|
|
119
|
+
| DELETE | `/store/wishlists/:id` | โ
| Delete a wishlist |
|
|
120
|
+
| POST | `/store/wishlists/:id/transfer` | โ
| Transfer guest wishlist to logged-in user |
|
|
121
|
+
| GET | `/store/wishlists/:id/items` | โ (optional) | Get items in a wishlist |
|
|
122
|
+
| POST | `/store/wishlists/:id/add-item` | โ (optional) | Add an item to the wishlist |
|
|
123
|
+
| DELETE | `/store/wishlists/:id/items/:item_id` | โ (optional) | Remove an item from the wishlist |
|
|
116
124
|
|
|
117
125
|
---
|
|
118
126
|
|
|
@@ -148,7 +156,6 @@ await sdk.alphabite.wishlist.addItem({
|
|
|
148
156
|
const { data } = await sdk.alphabite.wishlist.listItems({ id: 'wishlist_id' })
|
|
149
157
|
```
|
|
150
158
|
|
|
151
|
-
|
|
152
159
|
---
|
|
153
160
|
|
|
154
161
|
## ๐งช Guest Wishlist Flow
|
|
@@ -161,7 +168,7 @@ Guest wishlists work like guest carts:
|
|
|
161
168
|
4. When the user signs up or logs in, call the `transfer` endpoint to associate it:
|
|
162
169
|
|
|
163
170
|
```ts
|
|
164
|
-
await medusa.alphabite.wishlist.transfer({ id: wishlistId })
|
|
171
|
+
await medusa.alphabite.wishlist.transfer({ id: wishlistId });
|
|
165
172
|
```
|
|
166
173
|
|
|
167
174
|
After that, the cookie is no longer needed.
|