@mercurjs/b2c-core 1.5.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.d.ts +3 -0
  2. package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.js +36 -0
  3. package/.medusa/server/src/api/admin/notifications/route.js +8 -8
  4. package/.medusa/server/src/api/admin/sellers/validators.d.ts +2 -2
  5. package/.medusa/server/src/api/admin/sellers/validators.js +9 -7
  6. package/.medusa/server/src/api/store/carts/[id]/promotions/route.js +3 -4
  7. package/.medusa/server/src/api/store/middlewares.js +11 -9
  8. package/.medusa/server/src/api/store/products/middlewares.d.ts +2 -0
  9. package/.medusa/server/src/api/store/products/middlewares.js +13 -0
  10. package/.medusa/server/src/api/store/products/search/route.d.ts +81 -0
  11. package/.medusa/server/src/api/store/products/search/route.js +170 -0
  12. package/.medusa/server/src/api/store/products/validators.d.ts +36 -0
  13. package/.medusa/server/src/api/store/products/validators.js +17 -0
  14. package/.medusa/server/src/api/store/wishlist/middlewares.d.ts +1 -1
  15. package/.medusa/server/src/api/store/wishlist/middlewares.js +47 -25
  16. package/.medusa/server/src/api/store/wishlist/{[id]/product → product}/[reference_id]/route.d.ts +3 -9
  17. package/.medusa/server/src/api/store/wishlist/product/[reference_id]/route.js +65 -0
  18. package/.medusa/server/src/api/store/wishlist/route.d.ts +789 -28
  19. package/.medusa/server/src/api/store/wishlist/route.js +817 -37
  20. package/.medusa/server/src/api/vendor/campaigns/validators.js +4 -4
  21. package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/[location_id]/route.js +2 -5
  22. package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/batch/route.js +2 -2
  23. package/.medusa/server/src/api/vendor/orders/validators.d.ts +4 -4
  24. package/.medusa/server/src/api/vendor/payout-account/route.js +3 -2
  25. package/.medusa/server/src/api/vendor/price-lists/[id]/prices/route.d.ts +2 -2
  26. package/.medusa/server/src/api/vendor/price-lists/[id]/prices/route.js +2 -2
  27. package/.medusa/server/src/api/vendor/price-lists/route.d.ts +1 -1
  28. package/.medusa/server/src/api/vendor/price-lists/route.js +27 -8
  29. package/.medusa/server/src/api/vendor/product-collections/middlewares.js +2 -2
  30. package/.medusa/server/src/api/vendor/product-collections/route.d.ts +18 -0
  31. package/.medusa/server/src/api/vendor/product-collections/route.js +19 -1
  32. package/.medusa/server/src/api/vendor/product-collections/validators.d.ts +404 -15
  33. package/.medusa/server/src/api/vendor/product-collections/validators.js +18 -3
  34. package/.medusa/server/src/api/vendor/product-tags/route.d.ts +4 -1
  35. package/.medusa/server/src/api/vendor/product-tags/route.js +8 -8
  36. package/.medusa/server/src/api/vendor/products/route.d.ts +8 -2
  37. package/.medusa/server/src/api/vendor/products/route.js +28 -20
  38. package/.medusa/server/src/api/vendor/products/utils.d.ts +20 -1
  39. package/.medusa/server/src/api/vendor/products/utils.js +81 -5
  40. package/.medusa/server/src/api/vendor/products/validators.d.ts +60 -0
  41. package/.medusa/server/src/api/vendor/products/validators.js +8 -2
  42. package/.medusa/server/src/api/vendor/promotions/route.d.ts +86 -2
  43. package/.medusa/server/src/api/vendor/promotions/route.js +116 -7
  44. package/.medusa/server/src/api/vendor/promotions/validators.d.ts +237 -38
  45. package/.medusa/server/src/api/vendor/promotions/validators.js +23 -5
  46. package/.medusa/server/src/api/vendor/shipping-profiles/route.d.ts +31 -2
  47. package/.medusa/server/src/api/vendor/shipping-profiles/route.js +61 -10
  48. package/.medusa/server/src/api/vendor/shipping-profiles/validators.d.ts +92 -3
  49. package/.medusa/server/src/api/vendor/shipping-profiles/validators.js +10 -2
  50. package/.medusa/server/src/api/vendor/stock-locations/validators.d.ts +10 -10
  51. package/.medusa/server/src/links/wishlist-product.js +3 -3
  52. package/.medusa/server/src/modules/seller/utils.d.ts +1 -1
  53. package/.medusa/server/src/modules/seller/utils.js +37 -10
  54. package/.medusa/server/src/shared/infra/http/utils/products.js +8 -2
  55. package/.medusa/server/src/workflows/attribute/steps/validate-attribute-value.js +7 -3
  56. package/.medusa/server/src/workflows/attribute/utils/products-updated-handler.d.ts +3 -3
  57. package/.medusa/server/src/workflows/attribute/utils/products-updated-handler.js +17 -15
  58. package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.d.ts +1 -0
  59. package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.js +97 -0
  60. package/.medusa/server/src/workflows/promotions/steps/index.d.ts +2 -0
  61. package/.medusa/server/src/workflows/promotions/steps/index.js +3 -1
  62. package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.d.ts +6 -0
  63. package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.js +40 -0
  64. package/.medusa/server/src/workflows/promotions/steps/verify-seller-product-rule-deletion.d.ts +9 -0
  65. package/.medusa/server/src/workflows/promotions/steps/verify-seller-product-rule-deletion.js +27 -0
  66. package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.d.ts +5 -0
  67. package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.js +27 -11
  68. package/.medusa/server/src/workflows/promotions/workflows/batch-vendor-promotion-rules.js +5 -1
  69. package/.medusa/server/src/workflows/promotions/workflows/create-vendor-promotion.js +4 -3
  70. package/.medusa/server/src/workflows/seller/steps/validate-products-to-import.d.ts +5 -0
  71. package/package.json +1 -1
  72. package/.medusa/server/src/api/store/wishlist/[id]/product/[reference_id]/route.js +0 -61
@@ -4,11 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.GET = exports.POST = void 0;
7
- const framework_1 = require("@medusajs/framework");
8
7
  const utils_1 = require("@medusajs/framework/utils");
9
- const utils_2 = require("../../../modules/wishlist/utils");
10
8
  const customer_wishlist_1 = __importDefault(require("../../../links/customer-wishlist"));
11
9
  const workflows_1 = require("../../../workflows/wishlist/workflows");
10
+ const utils_2 = require("@medusajs/framework/utils");
12
11
  /**
13
12
  * @oas [post] /store/wishlist
14
13
  * operationId: "StoreCreateNewWishlist"
@@ -77,76 +76,857 @@ const POST = async (req, res) => {
77
76
  exports.POST = POST;
78
77
  /**
79
78
  * @oas [get] /store/wishlist
80
- * operationId: "StoreGetMyWishlist"
79
+ * operationId: StoreGetMyWishlist
81
80
  * summary: "Get wishlist of the current user"
82
- * description: "Retrieves the wishlist created by the authenticated user."
81
+ * description: Retrieve a list of products in the wishlist of the current user. The products can be filtered by fields such as `id`. The products can also be sorted or paginated.
83
82
  * x-authenticated: true
83
+ * externalDocs:
84
+ * url: https://docs.medusajs.com/v2/resources/storefront-development/wishlist
85
+ * description: "Storefront guide: How to retrieve a wishlist of the current user."
84
86
  * parameters:
87
+ * - name: x-publishable-api-key
88
+ * in: header
89
+ * description: Publishable API Key created in the Medusa Admin.
90
+ * required: true
91
+ * schema:
92
+ * type: string
93
+ * externalDocs:
94
+ * url: https://docs.medusajs.com/api/store#publishable-api-key
95
+ * - name: fields
96
+ * in: query
97
+ * description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default
98
+ * fields. without prefix it will replace the entire default fields.
99
+ * required: false
100
+ * schema:
101
+ * type: string
102
+ * title: fields
103
+ * description: Comma-separated fields that should be included in the returned data. if a field is prefixed with `+` it will be added to the default fields, using `-` will remove it from the default
104
+ * fields. without prefix it will replace the entire default fields.
105
+ * externalDocs:
106
+ * url: "#select-fields-and-relations"
85
107
  * - name: offset
86
108
  * in: query
109
+ * description: The number of items to skip when retrieving a list.
110
+ * required: false
87
111
  * schema:
88
112
  * type: number
89
- * required: false
90
- * description: The number of items to skip before starting to collect the result set.
113
+ * title: offset
114
+ * description: The number of items to skip when retrieving a list.
115
+ * externalDocs:
116
+ * url: "#pagination"
91
117
  * - name: limit
92
118
  * in: query
119
+ * description: Limit the number of items returned in the list.
120
+ * required: false
93
121
  * schema:
94
122
  * type: number
123
+ * title: limit
124
+ * description: Limit the number of items returned in the list.
125
+ * externalDocs:
126
+ * url: "#pagination"
127
+ * - name: order
128
+ * in: query
129
+ * description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
95
130
  * required: false
96
- * description: The number of items to return.
97
- * - name: fields
131
+ * schema:
132
+ * type: string
133
+ * title: order
134
+ * description: The field to sort the data by. By default, the sort order is ascending. To change the order to descending, prefix the field name with `-`.
135
+ * - name: $and
136
+ * in: query
137
+ * description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
138
+ * required: false
139
+ * schema:
140
+ * type: array
141
+ * description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
142
+ * items:
143
+ * type: object
144
+ * title: $and
145
+ * - name: $or
146
+ * in: query
147
+ * description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
148
+ * required: false
149
+ * schema:
150
+ * type: array
151
+ * description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
152
+ * items:
153
+ * type: object
154
+ * title: $or
155
+ * - name: q
98
156
  * in: query
157
+ * description: Search term to filter the product's searchable properties.
158
+ * required: false
99
159
  * schema:
100
160
  * type: string
161
+ * title: q
162
+ * description: Search term to filter the product's searchable properties.
163
+ * - name: id
164
+ * in: query
101
165
  * required: false
102
- * description: Comma-separated fields to include in the response.
166
+ * schema:
167
+ * oneOf:
168
+ * - type: string
169
+ * title: id
170
+ * description: Filter by a product ID.
171
+ * - type: array
172
+ * description: Filter by product IDs.
173
+ * items:
174
+ * type: string
175
+ * title: id
176
+ * description: A product ID.
177
+ * - name: title
178
+ * in: query
179
+ * description: Filter by product titles.
180
+ * required: false
181
+ * schema:
182
+ * oneOf:
183
+ * - type: string
184
+ * title: title
185
+ * description: Filter by a title.
186
+ * - type: array
187
+ * description: Filter by titles.
188
+ * items:
189
+ * type: string
190
+ * title: title
191
+ * description: A title.
192
+ * - name: handle
193
+ * in: query
194
+ * description: Filter by product handles.
195
+ * required: false
196
+ * schema:
197
+ * oneOf:
198
+ * - type: string
199
+ * title: handle
200
+ * description: Filter by a product handle.
201
+ * - type: array
202
+ * description: Filter by product handles.
203
+ * items:
204
+ * type: string
205
+ * title: handle
206
+ * description: A product handle.
207
+ * - name: is_giftcard
208
+ * in: query
209
+ * description: Whether the product is a gift card.
210
+ * required: false
211
+ * schema:
212
+ * type: boolean
213
+ * title: is_giftcard
214
+ * description: Whether the product is a gift card.
215
+ * - name: collection_id
216
+ * in: query
217
+ * description: Filter by a collection's ID to retrieve the products in it.
218
+ * required: false
219
+ * schema:
220
+ * description: Filter by a collection's ID to retrieve the products in it.
221
+ * externalDocs:
222
+ * url: https://docs.medusajs.com/v2/resources/storefront-development/products/collections/products
223
+ * description: "Storefront guide: Retrieve a collection's products."
224
+ * items:
225
+ * type: string
226
+ * title: collection_id
227
+ * description: A collection's ID.
228
+ * - name: tag_id
229
+ * in: query
230
+ * description: Filter by a tag's ID to retrieve the products in it.
231
+ * required: false
232
+ * schema:
233
+ * oneOf:
234
+ * - type: string
235
+ * title: tag_id
236
+ * description: Filter by a product tag's ID.
237
+ * - type: array
238
+ * description: Filter by product tag IDs.
239
+ * items:
240
+ * type: string
241
+ * title: tag_id
242
+ * description: A product tag ID.
243
+ * - name: type_id
244
+ * in: query
245
+ * description: Filter by a type's ID to retrieve the products in it.
246
+ * required: false
247
+ * schema:
248
+ * oneOf:
249
+ * - type: string
250
+ * title: type_id
251
+ * description: Filter by a product type's ID.
252
+ * - type: array
253
+ * description: Filter by product type IDs.
254
+ * items:
255
+ * type: string
256
+ * title: type_id
257
+ * description: A product type ID.
258
+ * - name: created_at
259
+ * in: query
260
+ * description: Filter by the product's creation date.
261
+ * required: false
262
+ * schema:
263
+ * type: object
264
+ * description: Filter by the product's creation date.
265
+ * properties:
266
+ * $and:
267
+ * type: array
268
+ * description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
269
+ * items:
270
+ * type: object
271
+ * title: $and
272
+ * $or:
273
+ * type: array
274
+ * description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
275
+ * items:
276
+ * type: object
277
+ * title: $or
278
+ * $eq:
279
+ * oneOf:
280
+ * - type: string
281
+ * title: $eq
282
+ * description: Filter by an exact match.
283
+ * - type: array
284
+ * description: Filter by multiple exact matches.
285
+ * items:
286
+ * type: string
287
+ * title: $eq
288
+ * description: An exact match.
289
+ * $ne:
290
+ * type: string
291
+ * title: $ne
292
+ * description: Filter by values not equal to this parameter.
293
+ * $in:
294
+ * type: array
295
+ * description: Filter by values in this array.
296
+ * items:
297
+ * type: string
298
+ * title: $in
299
+ * description: The value to match.
300
+ * $nin:
301
+ * type: array
302
+ * description: Filter by values not in this array.
303
+ * items:
304
+ * type: string
305
+ * title: $nin
306
+ * description: The value not to match.
307
+ * $not:
308
+ * oneOf:
309
+ * - type: string
310
+ * title: $not
311
+ * description: Filter by values not matching this parameter.
312
+ * - type: object
313
+ * description: Filter by values not matching the conditions in this parameter.
314
+ * properties:
315
+ * $and:
316
+ * type: array
317
+ * description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
318
+ * items:
319
+ * type: object
320
+ * title: $and
321
+ * $or:
322
+ * type: array
323
+ * description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
324
+ * items:
325
+ * type: object
326
+ * title: $or
327
+ * $eq:
328
+ * oneOf:
329
+ * - type: string
330
+ * title: $eq
331
+ * description: Filter by an exact match.
332
+ * - type: array
333
+ * description: Filter by multiple exact matches.
334
+ * items:
335
+ * type: string
336
+ * title: $eq
337
+ * description: The value to match.
338
+ * $ne:
339
+ * type: string
340
+ * title: $ne
341
+ * description: Filter by values not matching this parameter.
342
+ * $in:
343
+ * type: array
344
+ * description: Filter by values in this array.
345
+ * items:
346
+ * type: string
347
+ * title: $in
348
+ * description: The value to match.
349
+ * $nin:
350
+ * type: array
351
+ * description: Filter by values not in this array.
352
+ * items:
353
+ * type: string
354
+ * title: $nin
355
+ * description: The value to not match
356
+ * $not:
357
+ * oneOf:
358
+ * - type: string
359
+ * title: $not
360
+ * description: Filter by values not matching this parameter
361
+ * - type: object
362
+ * description: Filter by values not matching the conditions in this parameter.
363
+ * - type: array
364
+ * description: Filter by values not matching the values of this parameter.
365
+ * items:
366
+ * type: string
367
+ * title: $not
368
+ * description: The values to not match.
369
+ * $gt:
370
+ * type: string
371
+ * title: $gt
372
+ * description: Filter by values greater than this parameter. Useful for numbers and dates only.
373
+ * $gte:
374
+ * type: string
375
+ * title: $gte
376
+ * description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
377
+ * $lt:
378
+ * type: string
379
+ * title: $lt
380
+ * description: Filter by values less than this parameter. Useful for numbers and dates only.
381
+ * $lte:
382
+ * type: string
383
+ * title: $lte
384
+ * description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
385
+ * $like:
386
+ * type: string
387
+ * title: $like
388
+ * description: Apply a `like` filter. Useful for strings only.
389
+ * $re:
390
+ * type: string
391
+ * title: $re
392
+ * description: Apply a regex filter. Useful for strings only.
393
+ * $ilike:
394
+ * type: string
395
+ * title: $ilike
396
+ * description: Apply a case-insensitive `like` filter. Useful for strings only.
397
+ * $fulltext:
398
+ * type: string
399
+ * title: $fulltext
400
+ * description: Filter to apply on full-text properties.
401
+ * $overlap:
402
+ * type: array
403
+ * description: Filter arrays that have overlapping values with this parameter.
404
+ * items:
405
+ * type: string
406
+ * title: $overlap
407
+ * description: The value to match.
408
+ * $contains:
409
+ * type: array
410
+ * description: Filter arrays that contain some of the values of this parameter.
411
+ * items:
412
+ * type: string
413
+ * title: $contains
414
+ * description: The values to match.
415
+ * $contained:
416
+ * type: array
417
+ * description: Filter arrays that contain all values of this parameter.
418
+ * items:
419
+ * type: string
420
+ * title: $contained
421
+ * description: The values to match.
422
+ * $exists:
423
+ * type: boolean
424
+ * title: $exists
425
+ * description: Filter by whether a value for this parameter exists (not `null`).
426
+ * - type: array
427
+ * description: Filter by values not matching those in this parameter.
428
+ * items:
429
+ * type: string
430
+ * title: $not
431
+ * description: The values to not match.
432
+ * $gt:
433
+ * type: string
434
+ * title: $gt
435
+ * description: Filter by values greater than this parameter. Useful for numbers and dates only.
436
+ * $gte:
437
+ * type: string
438
+ * title: $gte
439
+ * description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
440
+ * $lt:
441
+ * type: string
442
+ * title: $lt
443
+ * description: Filter by values less than this parameter. Useful for numbers and dates only.
444
+ * $lte:
445
+ * type: string
446
+ * title: $lte
447
+ * description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
448
+ * $like:
449
+ * type: string
450
+ * title: $like
451
+ * description: Apply a `like` filter. Useful for strings only.
452
+ * $re:
453
+ * type: string
454
+ * title: $re
455
+ * description: Apply a regex filter. Useful for strings only.
456
+ * $ilike:
457
+ * type: string
458
+ * title: $ilike
459
+ * description: Apply a case-insensitive `like` filter. Useful for strings only.
460
+ * $fulltext:
461
+ * type: string
462
+ * title: $fulltext
463
+ * description: Filter to apply on full-text properties.
464
+ * $overlap:
465
+ * type: array
466
+ * description: Filter arrays that have overlapping values with this parameter.
467
+ * items:
468
+ * type: string
469
+ * title: $overlap
470
+ * description: The values to match.
471
+ * $contains:
472
+ * type: array
473
+ * description: Filter arrays that contain some of the values of this parameter.
474
+ * items:
475
+ * type: string
476
+ * title: $contains
477
+ * description: The values to match.
478
+ * $contained:
479
+ * type: array
480
+ * description: Filter arrays that contain all values of this parameter.
481
+ * items:
482
+ * type: string
483
+ * title: $contained
484
+ * description: The values to match.
485
+ * $exists:
486
+ * type: boolean
487
+ * title: $exists
488
+ * description: Filter by whether a value for this parameter exists (not `null`).
489
+ * - name: updated_at
490
+ * in: query
491
+ * description: Filter by the product's update date.
492
+ * required: false
493
+ * schema:
494
+ * type: object
495
+ * description: Filter by the product's update date.
496
+ * properties:
497
+ * $and:
498
+ * type: array
499
+ * description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
500
+ * items:
501
+ * type: object
502
+ * title: $and
503
+ * $or:
504
+ * type: array
505
+ * description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
506
+ * items:
507
+ * type: object
508
+ * title: $or
509
+ * $eq:
510
+ * oneOf:
511
+ * - type: string
512
+ * title: $eq
513
+ * description: Filter by an exact match.
514
+ * - type: array
515
+ * description: Filter by multiple exact matches.
516
+ * items:
517
+ * type: string
518
+ * title: $eq
519
+ * description: An exact match.
520
+ * $ne:
521
+ * type: string
522
+ * title: $ne
523
+ * description: Filter by values not equal to this parameter.
524
+ * $in:
525
+ * type: array
526
+ * description: Filter by values in this array.
527
+ * items:
528
+ * type: string
529
+ * title: $in
530
+ * description: The value to match.
531
+ * $nin:
532
+ * type: array
533
+ * description: Filter by values not in this array.
534
+ * items:
535
+ * type: string
536
+ * title: $nin
537
+ * description: The value not to match.
538
+ * $not:
539
+ * oneOf:
540
+ * - type: string
541
+ * title: $not
542
+ * description: Filter by values not matching this parameter.
543
+ * - type: object
544
+ * description: Filter by values not matching the conditions in this parameter.
545
+ * properties:
546
+ * $and:
547
+ * type: array
548
+ * description: Join query parameters with an AND condition. Each object's content is the same type as the expected query parameters.
549
+ * items:
550
+ * type: object
551
+ * title: $and
552
+ * $or:
553
+ * type: array
554
+ * description: Join query parameters with an OR condition. Each object's content is the same type as the expected query parameters.
555
+ * items:
556
+ * type: object
557
+ * title: $or
558
+ * $eq:
559
+ * oneOf:
560
+ * - type: string
561
+ * title: $eq
562
+ * description: Filter by an exact match.
563
+ * - type: array
564
+ * description: Filter by multiple exact matches.
565
+ * items:
566
+ * type: string
567
+ * title: $eq
568
+ * description: The value to match.
569
+ * $ne:
570
+ * type: string
571
+ * title: $ne
572
+ * description: Filter by values not matching this parameter.
573
+ * $in:
574
+ * type: array
575
+ * description: Filter by values in this array.
576
+ * items:
577
+ * type: string
578
+ * title: $in
579
+ * description: The value to match.
580
+ * $nin:
581
+ * type: array
582
+ * description: Filter by values not in this array.
583
+ * items:
584
+ * type: string
585
+ * title: $nin
586
+ * description: The value to not match
587
+ * $not:
588
+ * oneOf:
589
+ * - type: string
590
+ * title: $not
591
+ * description: Filter by values not matching this parameter
592
+ * - type: object
593
+ * description: Filter by values not matching the conditions in this parameter.
594
+ * - type: array
595
+ * description: Filter by values not matching the values of this parameter.
596
+ * items:
597
+ * type: string
598
+ * title: $not
599
+ * description: The values to not match.
600
+ * $gt:
601
+ * type: string
602
+ * title: $gt
603
+ * description: Filter by values greater than this parameter. Useful for numbers and dates only.
604
+ * $gte:
605
+ * type: string
606
+ * title: $gte
607
+ * description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
608
+ * $lt:
609
+ * type: string
610
+ * title: $lt
611
+ * description: Filter by values less than this parameter. Useful for numbers and dates only.
612
+ * $lte:
613
+ * type: string
614
+ * title: $lte
615
+ * description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
616
+ * $like:
617
+ * type: string
618
+ * title: $like
619
+ * description: Apply a `like` filter. Useful for strings only.
620
+ * $re:
621
+ * type: string
622
+ * title: $re
623
+ * description: Apply a regex filter. Useful for strings only.
624
+ * $ilike:
625
+ * type: string
626
+ * title: $ilike
627
+ * description: Apply a case-insensitive `like` filter. Useful for strings only.
628
+ * $fulltext:
629
+ * type: string
630
+ * title: $fulltext
631
+ * description: Filter to apply on full-text properties.
632
+ * $overlap:
633
+ * type: array
634
+ * description: Filter arrays that have overlapping values with this parameter.
635
+ * items:
636
+ * type: string
637
+ * title: $overlap
638
+ * description: The value to match.
639
+ * $contains:
640
+ * type: array
641
+ * description: Filter arrays that contain some of the values of this parameter.
642
+ * items:
643
+ * type: string
644
+ * title: $contains
645
+ * description: The values to match.
646
+ * $contained:
647
+ * type: array
648
+ * description: Filter arrays that contain all values of this parameter.
649
+ * items:
650
+ * type: string
651
+ * title: $contained
652
+ * description: The values to match.
653
+ * $exists:
654
+ * type: boolean
655
+ * title: $exists
656
+ * description: Filter by whether a value for this parameter exists (not `null`).
657
+ * - type: array
658
+ * description: Filter by values not matching those in this parameter.
659
+ * items:
660
+ * type: string
661
+ * title: $not
662
+ * description: The values to not match.
663
+ * $gt:
664
+ * type: string
665
+ * title: $gt
666
+ * description: Filter by values greater than this parameter. Useful for numbers and dates only.
667
+ * $gte:
668
+ * type: string
669
+ * title: $gte
670
+ * description: Filter by values greater than or equal to this parameter. Useful for numbers and dates only.
671
+ * $lt:
672
+ * type: string
673
+ * title: $lt
674
+ * description: Filter by values less than this parameter. Useful for numbers and dates only.
675
+ * $lte:
676
+ * type: string
677
+ * title: $lte
678
+ * description: Filter by values less than or equal to this parameter. Useful for numbers and dates only.
679
+ * $like:
680
+ * type: string
681
+ * title: $like
682
+ * description: Apply a `like` filter. Useful for strings only.
683
+ * $re:
684
+ * type: string
685
+ * title: $re
686
+ * description: Apply a regex filter. Useful for strings only.
687
+ * $ilike:
688
+ * type: string
689
+ * title: $ilike
690
+ * description: Apply a case-insensitive `like` filter. Useful for strings only.
691
+ * $fulltext:
692
+ * type: string
693
+ * title: $fulltext
694
+ * description: Filter to apply on full-text properties.
695
+ * $overlap:
696
+ * type: array
697
+ * description: Filter arrays that have overlapping values with this parameter.
698
+ * items:
699
+ * type: string
700
+ * title: $overlap
701
+ * description: The values to match.
702
+ * $contains:
703
+ * type: array
704
+ * description: Filter arrays that contain some of the values of this parameter.
705
+ * items:
706
+ * type: string
707
+ * title: $contains
708
+ * description: The values to match.
709
+ * $contained:
710
+ * type: array
711
+ * description: Filter arrays that contain all values of this parameter.
712
+ * items:
713
+ * type: string
714
+ * title: $contained
715
+ * description: The values to match.
716
+ * $exists:
717
+ * type: boolean
718
+ * title: $exists
719
+ * description: Filter by whether a value for this parameter exists (not `null`).
720
+ * - name: region_id
721
+ * in: query
722
+ * description: The ID of the region the products are being viewed from. This is required if you're retrieving product variant prices with taxes.
723
+ * required: false
724
+ * schema:
725
+ * type: string
726
+ * title: region_id
727
+ * description: The ID of the region the products are being viewed from. This is required if you're retrieving product variant prices with taxes.
728
+ * externalDocs:
729
+ * url: https://docs.medusajs.com/v2/resources/storefront-development/products/price/examples/tax-price
730
+ * description: "Storefront guide: How to show product variants' prices with taxes."
731
+ * - name: province
732
+ * in: query
733
+ * description: The lower-case ISO 3166-2 province code the products are being viewed from. This is useful to narrow down the tax context when calculating product variant prices with taxes.
734
+ * required: false
735
+ * schema:
736
+ * type: string
737
+ * title: province
738
+ * description: The lower-case ISO 3166-2 province code the products are being viewed from. This is useful to narrow down the tax context when calculating product variant prices with taxes.
739
+ * example: us-ca
740
+ * externalDocs:
741
+ * url: https://en.wikipedia.org/wiki/ISO_3166-2
742
+ * description: Learn more about ISO 3166-2
743
+ * - name: sales_channel_id
744
+ * in: query
745
+ * required: false
746
+ * schema:
747
+ * oneOf:
748
+ * - type: string
749
+ * title: sales_channel_id
750
+ * description: The ID of a sales channel to retrieve products in it.
751
+ * - type: array
752
+ * description: The IDs of sales channels to retrieve products in them.
753
+ * items:
754
+ * type: string
755
+ * title: sales_channel_id
756
+ * description: A sales channel's ID.
757
+ * - name: category_id
758
+ * in: query
759
+ * required: false
760
+ * schema:
761
+ * oneOf:
762
+ * - type: string
763
+ * title: category_id
764
+ * description: The ID of a product category to retrieve products in it.
765
+ * - type: array
766
+ * description: The ID of product categories to retrieve products in them.
767
+ * items:
768
+ * type: string
769
+ * title: category_id
770
+ * description: A product category's ID.
771
+ * - name: variants
772
+ * in: query
773
+ * description: Filter the products' variants.
774
+ * required: false
775
+ * schema:
776
+ * type: object
777
+ * description: Filter the products' variants.
778
+ * x-schemaName: StoreProductVariantParams
779
+ * properties:
780
+ * options:
781
+ * type: object
782
+ * description: Filter by the variants' options.
783
+ * required:
784
+ * - value
785
+ * - option_id
786
+ * properties:
787
+ * option_id:
788
+ * type: string
789
+ * title: option_id
790
+ * description: The ID of the option to filter by.
791
+ * value:
792
+ * type: string
793
+ * title: value
794
+ * description: Filter by a value of the option.
795
+ * - name: country_code
796
+ * in: query
797
+ * description: The product's country code.
798
+ * required: false
799
+ * schema:
800
+ * type: string
801
+ * title: country_code
802
+ * description: The product's country code.
803
+ * - name: cart_id
804
+ * in: query
805
+ * description: The product's cart id.
806
+ * required: false
807
+ * schema:
808
+ * type: string
809
+ * title: cart_id
810
+ * description: The product's cart id.
811
+ * x-codeSamples:
812
+ * - lang: JavaScript
813
+ * label: JS SDK
814
+ * source: |-
815
+ * import Medusa from "@medusajs/js-sdk"
816
+ *
817
+ * let MEDUSA_BACKEND_URL = "http://localhost:9000"
818
+ *
819
+ * if (process.env.NEXT_PUBLIC_MEDUSA_BACKEND_URL) {
820
+ * MEDUSA_BACKEND_URL = process.env.NEXT_PUBLIC_MEDUSA_BACKEND_URL
821
+ * }
822
+ *
823
+ * export const sdk = new Medusa({
824
+ * baseUrl: MEDUSA_BACKEND_URL,
825
+ * debug: process.env.NODE_ENV === "development",
826
+ * publishableKey: process.env.NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY,
827
+ * })
828
+ *
829
+ * sdk.store.product.list()
830
+ * .then(({ products, count, offset, limit }) => {
831
+ * console.log(products)
832
+ * })
833
+ * - lang: Shell
834
+ * label: cURL
835
+ * source: |-
836
+ * curl '{backend_url}/store/products' \
837
+ * -H 'x-publishable-api-key: {your_publishable_api_key}'
838
+ * tags:
839
+ * - Store Wishlist
103
840
  * responses:
104
841
  * "200":
105
842
  * description: OK
106
843
  * content:
107
844
  * application/json:
108
845
  * schema:
109
- * type: object
110
- * properties:
111
- * wishlists:
112
- * type: array
113
- * items:
114
- * $ref: "#/components/schemas/Wishlist"
115
- * count:
116
- * type: integer
117
- * description: The total number of items available
118
- * offset:
119
- * type: integer
120
- * description: The number of items skipped before these items
121
- * limit:
122
- * type: integer
123
- * description: The number of items per page
124
- * tags:
125
- * - Store Wishlist
126
- * security:
127
- * - api_token: []
128
- * - cookie_auth: []
129
- */
846
+ * allOf:
847
+ * - type: object
848
+ * description: The paginated list of products.
849
+ * required:
850
+ * - limit
851
+ * - offset
852
+ * - count
853
+ * properties:
854
+ * limit:
855
+ * type: number
856
+ * title: limit
857
+ * description: The maximum number of items returned.
858
+ * offset:
859
+ * type: number
860
+ * title: offset
861
+ * description: The number of items skipped before retrieving the returned items.
862
+ * count:
863
+ * type: number
864
+ * title: count
865
+ * description: The total number of items.
866
+ * - type: object
867
+ * description: The paginated list of products.
868
+ * required:
869
+ * - products
870
+ * properties:
871
+ * products:
872
+ * type: array
873
+ * description: The list of products.
874
+ * items:
875
+ * $ref: "#/components/schemas/StoreProduct"
876
+ * "400":
877
+ * $ref: "#/components/responses/400_error"
878
+ * "401":
879
+ * $ref: "#/components/responses/unauthorized"
880
+ * "404":
881
+ * $ref: "#/components/responses/not_found_error"
882
+ * "409":
883
+ * $ref: "#/components/responses/invalid_state_error"
884
+ * "422":
885
+ * $ref: "#/components/responses/invalid_request_error"
886
+ * "500":
887
+ * $ref: "#/components/responses/500_error"
888
+ *
889
+ */
130
890
  const GET = async (req, res) => {
131
891
  const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
132
- const { data: wishlists, metadata } = await query.graph({
892
+ const customerId = req.auth_context.actor_id;
893
+ const { data: [wishlist] } = await query.graph({
133
894
  entity: customer_wishlist_1.default.entryPoint,
134
895
  fields: [
135
- ...req.queryConfig.fields.map((field) => `wishlist.products.${field}`),
136
- "wishlist.products.variants.prices.*",
896
+ "wishlist.products.id",
137
897
  ],
138
898
  filters: {
139
- customer_id: req.auth_context.actor_id,
899
+ customer_id: customerId,
900
+ },
901
+ });
902
+ const productIds = [];
903
+ wishlist.wishlist.products.forEach((product) => {
904
+ productIds.push(product.id);
905
+ });
906
+ let context = {};
907
+ if ((0, utils_1.isPresent)(req.pricingContext)) {
908
+ const pricingContext = { ...req.pricingContext, customer_id: customerId };
909
+ context = {
910
+ "variants": {
911
+ "calculated_price": (0, utils_2.QueryContext)(pricingContext)
912
+ }
913
+ };
914
+ }
915
+ const { data: products, metadata } = await query.graph({
916
+ entity: 'product',
917
+ fields: req.queryConfig.fields,
918
+ filters: {
919
+ id: productIds,
140
920
  },
141
921
  pagination: req.queryConfig.pagination,
922
+ context,
142
923
  });
143
- const formattedWithPrices = await (0, utils_2.calculateWishlistProductsPrice)(framework_1.container, wishlists);
144
924
  res.json({
145
- wishlists: formattedWithPrices,
925
+ products: products,
146
926
  count: metadata?.count,
147
927
  offset: metadata?.skip,
148
928
  limit: metadata?.take,
149
929
  });
150
930
  };
151
931
  exports.GET = GET;
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUk2QjtBQUM3QixxREFBc0U7QUFFdEUsMkRBQWlGO0FBRWpGLHlGQUFnRTtBQUNoRSxxRUFBb0Y7QUFHcEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Q0c7QUFFSSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQXdELEVBQ3hELEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSx1Q0FBMkIsQ0FBQyxHQUFHLENBQUM7UUFDdkQsU0FBUyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1FBQ3BCLEtBQUssRUFBRTtZQUNMLEdBQUcsR0FBRyxDQUFDLGFBQWE7WUFDcEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUTtTQUN2QztLQUNGLENBQUMsQ0FBQztJQUVILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FDakIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUM5QixPQUFPLEVBQUU7WUFDUCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7U0FDZDtLQUNGLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUM7QUF6QlcsUUFBQSxJQUFJLFFBeUJmO0FBRUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1ERztBQUVJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBK0IsRUFDL0IsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRWpFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN0RCxNQUFNLEVBQUUsMkJBQWdCLENBQUMsVUFBVTtRQUNuQyxNQUFNLEVBQUU7WUFDTixHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMscUJBQXFCLEtBQUssRUFBRSxDQUFDO1lBQ3RFLHFDQUFxQztTQUN0QztRQUNELE9BQU8sRUFBRTtZQUNQLFdBQVcsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVE7U0FDdkM7UUFDRCxVQUFVLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVO0tBQ3ZDLENBQUMsQ0FBQztJQUVILE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxJQUFBLHNDQUE4QixFQUM5RCxxQkFBUyxFQUNULFNBQVMsQ0FDVixDQUFDO0lBRUYsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLFNBQVMsRUFBRSxtQkFBbUI7UUFDOUIsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLO1FBQ3RCLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSTtRQUN0QixLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUk7S0FDdEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBN0JXLFFBQUEsR0FBRyxPQTZCZCJ9
932
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3dpc2hsaXN0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUtBLHFEQUFpRjtBQUVqRix5RkFBZ0U7QUFDaEUscUVBQW9GO0FBRXBGLHFEQUF5RDtBQUV6RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThDRztBQUVJLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBd0QsRUFDeEQsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLHVDQUEyQixDQUFDLEdBQUcsQ0FBQztRQUN2RCxTQUFTLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDcEIsS0FBSyxFQUFFO1lBQ0wsR0FBRyxHQUFHLENBQUMsYUFBYTtZQUNwQixXQUFXLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRO1NBQ3ZDO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakUsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUNqQixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsVUFBVTtRQUNsQixNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNO1FBQzlCLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtTQUNkO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDLENBQUMsQ0FBQztBQXpCVyxRQUFBLElBQUksUUF5QmY7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE0eUJFO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUErQixFQUMvQixHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7SUFFN0MsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzdDLE1BQU0sRUFBRSwyQkFBZ0IsQ0FBQyxVQUFVO1FBQ25DLE1BQU0sRUFBRTtZQUNOLHNCQUFzQjtTQUN2QjtRQUNELE9BQU8sRUFBRTtZQUNQLFdBQVcsRUFBRSxVQUFVO1NBQ3hCO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLENBQUMsQ0FBQyxDQUFDO0lBRUgsSUFBSSxPQUFPLEdBQVcsRUFBRSxDQUFDO0lBRXpCLElBQUksSUFBQSxpQkFBUyxFQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sY0FBYyxHQUFHLEVBQUMsR0FBRyxHQUFHLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsQ0FBQTtRQUN2RSxPQUFPLEdBQUc7WUFDTixVQUFVLEVBQUU7Z0JBQ1Isa0JBQWtCLEVBQUUsSUFBQSxvQkFBWSxFQUFDLGNBQWMsQ0FBQzthQUNuRDtTQUNKLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3JELE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU07UUFDOUIsT0FBTyxFQUFFO1lBQ1AsRUFBRSxFQUFFLFVBQVU7U0FDZjtRQUNELFVBQVUsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVU7UUFDdEMsT0FBTztLQUNSLENBQUMsQ0FBQztJQUdILEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxRQUFRLEVBQUUsUUFBUTtRQUNsQixLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUs7UUFDdEIsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJO1FBQ3RCLEtBQUssRUFBRSxRQUFRLEVBQUUsSUFBSTtLQUN0QixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFsRFcsUUFBQSxHQUFHLE9Ba0RkIn0=