@unchainedshop/api 4.0.0-rc.5 → 4.0.0-rc.6

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 (143) hide show
  1. package/lib/errors.d.ts +1 -0
  2. package/lib/errors.d.ts.map +1 -1
  3. package/lib/errors.js +1 -0
  4. package/lib/errors.js.map +1 -1
  5. package/lib/mcp/tools/assortment/addAssortmentMediaUploadHandler.d.ts.map +1 -1
  6. package/lib/mcp/tools/assortment/addAssortmentMediaUploadHandler.js +2 -1
  7. package/lib/mcp/tools/assortment/addAssortmentMediaUploadHandler.js.map +1 -1
  8. package/lib/mcp/tools/assortment/assortmentMediaHandler.d.ts +32 -0
  9. package/lib/mcp/tools/assortment/assortmentMediaHandler.d.ts.map +1 -0
  10. package/lib/mcp/tools/assortment/assortmentMediaHandler.js +48 -0
  11. package/lib/mcp/tools/assortment/assortmentMediaHandler.js.map +1 -0
  12. package/lib/mcp/tools/assortment/index.d.ts.map +1 -1
  13. package/lib/mcp/tools/assortment/index.js +3 -1
  14. package/lib/mcp/tools/assortment/index.js.map +1 -1
  15. package/lib/mcp/tools/assortment/removeAssortmentMediaHandler.d.ts.map +1 -1
  16. package/lib/mcp/tools/assortment/removeAssortmentMediaHandler.js +3 -1
  17. package/lib/mcp/tools/assortment/removeAssortmentMediaHandler.js.map +1 -1
  18. package/lib/mcp/tools/assortment/reorderAssortmentMediaHandler.js +2 -2
  19. package/lib/mcp/tools/assortment/reorderAssortmentMediaHandler.js.map +1 -1
  20. package/lib/mcp/tools/assortment/translatedAssortmentMediaTextsHandler.d.ts.map +1 -1
  21. package/lib/mcp/tools/assortment/translatedAssortmentMediaTextsHandler.js +7 -1
  22. package/lib/mcp/tools/assortment/translatedAssortmentMediaTextsHandler.js.map +1 -1
  23. package/lib/mcp/tools/assortment/updateAssortmentMediaTextsHandler.d.ts.map +1 -1
  24. package/lib/mcp/tools/assortment/updateAssortmentMediaTextsHandler.js +4 -1
  25. package/lib/mcp/tools/assortment/updateAssortmentMediaTextsHandler.js.map +1 -1
  26. package/lib/mcp/tools/product/addProductAssignmentHandler.d.ts.map +1 -1
  27. package/lib/mcp/tools/product/addProductAssignmentHandler.js +1 -1
  28. package/lib/mcp/tools/product/addProductAssignmentHandler.js.map +1 -1
  29. package/lib/mcp/tools/product/addProductBundleItemHandler.d.ts +48 -0
  30. package/lib/mcp/tools/product/addProductBundleItemHandler.d.ts.map +1 -0
  31. package/lib/mcp/tools/product/addProductBundleItemHandler.js +52 -0
  32. package/lib/mcp/tools/product/addProductBundleItemHandler.js.map +1 -0
  33. package/lib/mcp/tools/product/addProductMediaUploadHandler.d.ts.map +1 -1
  34. package/lib/mcp/tools/product/addProductMediaUploadHandler.js +3 -2
  35. package/lib/mcp/tools/product/addProductMediaUploadHandler.js.map +1 -1
  36. package/lib/mcp/tools/product/catalogPriceHandler.d.ts +28 -0
  37. package/lib/mcp/tools/product/catalogPriceHandler.d.ts.map +1 -0
  38. package/lib/mcp/tools/product/catalogPriceHandler.js +57 -0
  39. package/lib/mcp/tools/product/catalogPriceHandler.js.map +1 -0
  40. package/lib/mcp/tools/product/index.d.ts.map +1 -1
  41. package/lib/mcp/tools/product/index.js +27 -3
  42. package/lib/mcp/tools/product/index.js.map +1 -1
  43. package/lib/mcp/tools/product/productAssignmentsHandler.d.ts +24 -0
  44. package/lib/mcp/tools/product/productAssignmentsHandler.d.ts.map +1 -0
  45. package/lib/mcp/tools/product/productAssignmentsHandler.js +79 -0
  46. package/lib/mcp/tools/product/productAssignmentsHandler.js.map +1 -0
  47. package/lib/mcp/tools/product/productBundleItemsHandler.d.ts +20 -0
  48. package/lib/mcp/tools/product/productBundleItemsHandler.d.ts.map +1 -0
  49. package/lib/mcp/tools/product/productBundleItemsHandler.js +45 -0
  50. package/lib/mcp/tools/product/productBundleItemsHandler.js.map +1 -0
  51. package/lib/mcp/tools/product/productMediaHandler.d.ts +32 -0
  52. package/lib/mcp/tools/product/productMediaHandler.d.ts.map +1 -0
  53. package/lib/mcp/tools/product/productMediaHandler.js +46 -0
  54. package/lib/mcp/tools/product/productMediaHandler.js.map +1 -0
  55. package/lib/mcp/tools/product/productSiblingsHandler.d.ts +36 -0
  56. package/lib/mcp/tools/product/productSiblingsHandler.d.ts.map +1 -0
  57. package/lib/mcp/tools/product/productSiblingsHandler.js +66 -0
  58. package/lib/mcp/tools/product/productSiblingsHandler.js.map +1 -0
  59. package/lib/mcp/tools/product/productVariationsHandler.d.ts +20 -0
  60. package/lib/mcp/tools/product/productVariationsHandler.d.ts.map +1 -0
  61. package/lib/mcp/tools/product/productVariationsHandler.js +47 -0
  62. package/lib/mcp/tools/product/productVariationsHandler.js.map +1 -0
  63. package/lib/mcp/tools/product/removeProductBundleItemHandler.d.ts +24 -0
  64. package/lib/mcp/tools/product/removeProductBundleItemHandler.d.ts.map +1 -0
  65. package/lib/mcp/tools/product/removeProductBundleItemHandler.js +46 -0
  66. package/lib/mcp/tools/product/removeProductBundleItemHandler.js.map +1 -0
  67. package/lib/mcp/tools/product/removeProductMediaHandler.js +1 -1
  68. package/lib/mcp/tools/product/removeProductMediaHandler.js.map +1 -1
  69. package/lib/mcp/tools/product/reorderProductMediaHandler.js +2 -2
  70. package/lib/mcp/tools/product/reorderProductMediaHandler.js.map +1 -1
  71. package/lib/mcp/tools/product/simulatedPriceHandler.d.ts +70 -0
  72. package/lib/mcp/tools/product/simulatedPriceHandler.d.ts.map +1 -0
  73. package/lib/mcp/tools/product/simulatedPriceHandler.js +74 -0
  74. package/lib/mcp/tools/product/simulatedPriceHandler.js.map +1 -0
  75. package/lib/mcp/tools/product/simulatedPriceRangeHandler.d.ts +74 -0
  76. package/lib/mcp/tools/product/simulatedPriceRangeHandler.d.ts.map +1 -0
  77. package/lib/mcp/tools/product/simulatedPriceRangeHandler.js +103 -0
  78. package/lib/mcp/tools/product/simulatedPriceRangeHandler.js.map +1 -0
  79. package/lib/mcp/tools/product/translatedProductMediaTextsHandler.d.ts.map +1 -1
  80. package/lib/mcp/tools/product/translatedProductMediaTextsHandler.js +7 -1
  81. package/lib/mcp/tools/product/translatedProductMediaTextsHandler.js.map +1 -1
  82. package/lib/mcp/tools/product/translatedProductVariationTextsHandler.d.ts.map +1 -1
  83. package/lib/mcp/tools/product/translatedProductVariationTextsHandler.js +7 -1
  84. package/lib/mcp/tools/product/translatedProductVariationTextsHandler.js.map +1 -1
  85. package/lib/mcp/tools/product/updateProductMediaTextsHandler.js +1 -1
  86. package/lib/mcp/tools/product/updateProductMediaTextsHandler.js.map +1 -1
  87. package/lib/mcp/tools/product/updateProductPlanHandler.d.ts +47 -26
  88. package/lib/mcp/tools/product/updateProductPlanHandler.d.ts.map +1 -1
  89. package/lib/mcp/tools/product/updateProductPlanHandler.js +23 -7
  90. package/lib/mcp/tools/product/updateProductPlanHandler.js.map +1 -1
  91. package/lib/mcp/tools/product/updateProductVariationTextsHandler.d.ts +73 -0
  92. package/lib/mcp/tools/product/updateProductVariationTextsHandler.d.ts.map +1 -0
  93. package/lib/mcp/tools/product/updateProductVariationTextsHandler.js +52 -0
  94. package/lib/mcp/tools/product/updateProductVariationTextsHandler.js.map +1 -0
  95. package/lib/mcp/tools/product/variationProductsHandler.d.ts +52 -0
  96. package/lib/mcp/tools/product/variationProductsHandler.d.ts.map +1 -0
  97. package/lib/mcp/tools/product/variationProductsHandler.js +54 -0
  98. package/lib/mcp/tools/product/variationProductsHandler.js.map +1 -0
  99. package/lib/mcp/tools/shopInfoHandler.d.ts.map +1 -1
  100. package/lib/mcp/tools/shopInfoHandler.js +4 -2
  101. package/lib/mcp/tools/shopInfoHandler.js.map +1 -1
  102. package/lib/mcp/utils/getNormalizedProductDetails.d.ts +1 -1
  103. package/lib/mcp/utils/getNormalizedProductDetails.d.ts.map +1 -1
  104. package/lib/mcp/utils/getNormalizedProductDetails.js +25 -0
  105. package/lib/mcp/utils/getNormalizedProductDetails.js.map +1 -1
  106. package/lib/resolvers/mutations/filters/createFilter.d.ts.map +1 -1
  107. package/lib/resolvers/mutations/filters/createFilter.js +14 -5
  108. package/lib/resolvers/mutations/filters/createFilter.js.map +1 -1
  109. package/lib/schema/types/product/bundle-product.js +1 -1
  110. package/package.json +6 -6
  111. package/src/errors.ts +5 -0
  112. package/src/mcp/tools/assortment/addAssortmentMediaUploadHandler.ts +2 -1
  113. package/src/mcp/tools/assortment/assortmentMediaHandler.ts +57 -0
  114. package/src/mcp/tools/assortment/index.ts +9 -1
  115. package/src/mcp/tools/assortment/removeAssortmentMediaHandler.ts +3 -1
  116. package/src/mcp/tools/assortment/reorderAssortmentMediaHandler.ts +2 -2
  117. package/src/mcp/tools/assortment/translatedAssortmentMediaTextsHandler.ts +8 -1
  118. package/src/mcp/tools/assortment/updateAssortmentMediaTextsHandler.ts +4 -1
  119. package/src/mcp/tools/product/addProductAssignmentHandler.ts +3 -1
  120. package/src/mcp/tools/product/addProductBundleItemHandler.ts +64 -0
  121. package/src/mcp/tools/product/addProductMediaUploadHandler.ts +3 -2
  122. package/src/mcp/tools/product/catalogPriceHandler.ts +61 -0
  123. package/src/mcp/tools/product/index.ts +104 -3
  124. package/src/mcp/tools/product/productAssignmentsHandler.ts +86 -0
  125. package/src/mcp/tools/product/productBundleItemsHandler.ts +50 -0
  126. package/src/mcp/tools/product/productMediaHandler.ts +53 -0
  127. package/src/mcp/tools/product/productSiblingsHandler.ts +82 -0
  128. package/src/mcp/tools/product/productVariationsHandler.ts +53 -0
  129. package/src/mcp/tools/product/removeProductBundleItemHandler.ts +55 -0
  130. package/src/mcp/tools/product/removeProductMediaHandler.ts +1 -1
  131. package/src/mcp/tools/product/reorderProductMediaHandler.ts +2 -2
  132. package/src/mcp/tools/product/simulatedPriceHandler.ts +82 -0
  133. package/src/mcp/tools/product/simulatedPriceRangeHandler.ts +126 -0
  134. package/src/mcp/tools/product/translatedProductMediaTextsHandler.ts +6 -2
  135. package/src/mcp/tools/product/translatedProductVariationTextsHandler.ts +6 -1
  136. package/src/mcp/tools/product/updateProductMediaTextsHandler.ts +1 -1
  137. package/src/mcp/tools/product/updateProductPlanHandler.ts +37 -7
  138. package/src/mcp/tools/product/updateProductVariationTextsHandler.ts +65 -0
  139. package/src/mcp/tools/product/variationProductsHandler.ts +61 -0
  140. package/src/mcp/tools/shopInfoHandler.ts +4 -2
  141. package/src/mcp/utils/getNormalizedProductDetails.ts +28 -0
  142. package/src/resolvers/mutations/filters/createFilter.ts +11 -6
  143. package/src/schema/types/product/bundle-product.ts +1 -1
@@ -5,12 +5,14 @@ export async function shopInfoHandler(context: Context) {
5
5
  const { version, userId, loaders, locale, countryCode } = context;
6
6
 
7
7
  try {
8
- log('query shopInfo', { userId });
8
+ log('handler shopInfoHandler', { userId });
9
9
 
10
10
  const language = await loaders.languageLoader.load({ isoCode: locale.language });
11
11
 
12
12
  const country = await loaders.countryLoader.load({ isoCode: countryCode });
13
- const defaultLanguageIsoCode = language.isoCode + '-' + country.isoCode;
13
+ const defaultLanguageIsoCode = language?.isoCode
14
+ ? `${language.isoCode}${country?.isoCode ? '-' + country.isoCode : ''}`
15
+ : null;
14
16
 
15
17
  return {
16
18
  content: [
@@ -13,11 +13,38 @@ export async function getNormalizedProductDetails(productId: string, context: Co
13
13
  locale,
14
14
  });
15
15
  let variations = [];
16
+ let bundleItems = [];
16
17
  if (product.type === ProductTypes.ConfigurableProduct)
17
18
  variations = await context.modules.products.variations.findProductVariations({
18
19
  productId: product._id,
19
20
  });
20
21
 
22
+ if (product.type === ProductTypes.BundleProduct) {
23
+ bundleItems = await Promise.all(
24
+ (product.bundleItems || []).map(async (item) => {
25
+ const bundleItemProduct = await loaders.productLoader.load({
26
+ productId: item.productId,
27
+ });
28
+ const productMedias = await modules.products.media.findProductMedias({
29
+ productId: item.productId,
30
+ });
31
+ const media = await normalizeMediaUrl(productMedias, context);
32
+ const texts = await loaders.productTextLoader.load({
33
+ productId: item.productId,
34
+ locale,
35
+ });
36
+ return {
37
+ product: {
38
+ ...bundleItemProduct,
39
+ media,
40
+ texts,
41
+ },
42
+ ...item,
43
+ };
44
+ }),
45
+ );
46
+ }
47
+
21
48
  // Get pricing information
22
49
  let pricing = null;
23
50
  try {
@@ -37,6 +64,7 @@ export async function getNormalizedProductDetails(productId: string, context: Co
37
64
  texts,
38
65
  media,
39
66
  variations,
67
+ bundleItems,
40
68
  pricing,
41
69
  };
42
70
  }
@@ -2,6 +2,7 @@ import { log } from '@unchainedshop/logger';
2
2
  import { Filter } from '@unchainedshop/core-filters';
3
3
  import { Context } from '../../../context.js';
4
4
  import { FilterDirector, FilterInputText } from '@unchainedshop/core';
5
+ import { DuplicateFilterKeyError } from '../../../errors.js';
5
6
 
6
7
  export default async function createFilter(
7
8
  root: never,
@@ -10,13 +11,17 @@ export default async function createFilter(
10
11
  ) {
11
12
  const { modules, userId } = context;
12
13
  log('mutation createFilter', { userId });
14
+ try {
15
+ const newFilter = await modules.filters.create(filter);
13
16
 
14
- const newFilter = await modules.filters.create(filter);
17
+ await FilterDirector.invalidateProductIdCache(newFilter, context);
15
18
 
16
- await FilterDirector.invalidateProductIdCache(newFilter, context);
17
-
18
- if (texts) {
19
- await modules.filters.texts.updateTexts({ filterId: newFilter._id }, texts);
19
+ if (texts) {
20
+ await modules.filters.texts.updateTexts({ filterId: newFilter._id }, texts);
21
+ }
22
+ return newFilter;
23
+ } catch (e) {
24
+ if (e?.message?.includes('duplicate')) throw new DuplicateFilterKeyError({ filter });
25
+ else throw e;
20
26
  }
21
- return newFilter;
22
27
  }
@@ -1,7 +1,7 @@
1
1
  export default [
2
2
  /* GraphQL */ `
3
3
  """
4
- A Bundle product consists of multiple configured products
4
+ A Bundle product consists of multiple products
5
5
  """
6
6
  type BundleProduct implements Product @cacheControl(maxAge: 180) {
7
7
  _id: ID!