@unchainedshop/api 4.0.0-rc.7 → 4.0.0-rc.9

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.
@@ -2,6 +2,7 @@ import { Context } from '../../context.js';
2
2
  export declare function getNormalizedProductDetails(productId: string, context: Context): Promise<{
3
3
  texts: import("@unchainedshop/core-products").ProductText;
4
4
  media: any[];
5
+ assignments: any[];
5
6
  variations: any[];
6
7
  bundleItems: any[];
7
8
  pricing: any;
@@ -1 +1 @@
1
- {"version":3,"file":"getNormalizedProductDetails.d.ts","sourceRoot":"","sources":["../../../src/mcp/utils/getNormalizedProductDetails.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,wBAAsB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;GAiEpF"}
1
+ {"version":3,"file":"getNormalizedProductDetails.d.ts","sourceRoot":"","sources":["../../../src/mcp/utils/getNormalizedProductDetails.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,wBAAsB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;GA6FpF"}
@@ -11,10 +11,35 @@ export async function getNormalizedProductDetails(productId, context) {
11
11
  });
12
12
  let variations = [];
13
13
  let bundleItems = [];
14
- if (product.type === ProductTypes.ConfigurableProduct)
14
+ let assignments = [];
15
+ if (product.type === ProductTypes.ConfigurableProduct && product?.proxy?.assignments?.length) {
15
16
  variations = await context.modules.products.variations.findProductVariations({
16
17
  productId: product._id,
17
18
  });
19
+ assignments = await Promise.all(product?.proxy?.assignments?.map(async (assignment) => {
20
+ const product = await loaders.productLoader.load({
21
+ productId: assignment.productId,
22
+ });
23
+ const productMedias = await modules.products.media.findProductMedias({
24
+ productId: assignment.productId,
25
+ });
26
+ const media = await normalizeMediaUrl(productMedias, context);
27
+ const texts = await loaders.productTextLoader.load({
28
+ productId: assignment.productId,
29
+ locale,
30
+ });
31
+ return {
32
+ assignment: {
33
+ ...assignment,
34
+ product: {
35
+ ...product,
36
+ media,
37
+ texts,
38
+ },
39
+ },
40
+ };
41
+ }));
42
+ }
18
43
  if (product.type === ProductTypes.BundleProduct) {
19
44
  bundleItems = await Promise.all((product.bundleItems || []).map(async (item) => {
20
45
  const bundleItemProduct = await loaders.productLoader.load({
@@ -55,6 +80,7 @@ export async function getNormalizedProductDetails(productId, context) {
55
80
  ...product,
56
81
  texts,
57
82
  media,
83
+ assignments,
58
84
  variations,
59
85
  bundleItems,
60
86
  pricing,
@@ -1 +1 @@
1
- {"version":3,"file":"getNormalizedProductDetails.js","sourceRoot":"","sources":["../../../src/mcp/utils/getNormalizedProductDetails.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,SAAiB,EAAE,OAAgB;IACnF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAElE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC;QACjD,SAAS;QACT,MAAM;KACP,CAAC,CAAC;IACH,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,mBAAmB;QACnD,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC;YAC3E,SAAS,EAAE,OAAO,CAAC,GAAG;SACvB,CAAC,CAAC;IAEL,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;QAChD,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7C,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;gBACzD,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC;gBACnE,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACjD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM;aACP,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE;oBACP,GAAG,iBAAiB;oBACpB,KAAK;oBACL,KAAK;iBACN;gBACD,GAAG,IAAI;aACR,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;YAC7D,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;QAClD,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAE9D,OAAO;QACL,GAAG,OAAO;QACV,KAAK;QACL,KAAK;QACL,UAAU;QACV,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"getNormalizedProductDetails.js","sourceRoot":"","sources":["../../../src/mcp/utils/getNormalizedProductDetails.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"product-variation-assignment-vector.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/type/product/product-variation-assignment-vector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI,CAC1C,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,oBAAoB,EACjD,CAAC,EAAE,KAAK,EACR,OAAO,EAAE,OAAO,KACb,CAAC,CAAC;AAEP,MAAM,WAAW,2CAA2C;IAC1D,GAAG,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,0BAA0B,CAAC,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,sBAAsB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC7F,SAAS,EAAE,0BAA0B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,gCAAgC,EAAE,2CAsB9C,CAAC"}
1
+ {"version":3,"file":"product-variation-assignment-vector.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/type/product/product-variation-assignment-vector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI,CAC1C,IAAI,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,oBAAoB,EACjD,CAAC,EAAE,KAAK,EACR,OAAO,EAAE,OAAO,KACb,CAAC,CAAC;AAEP,MAAM,WAAW,2CAA2C;IAC1D,GAAG,EAAE,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,EAAE,0BAA0B,CAAC,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,sBAAsB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAC7F,SAAS,EAAE,0BAA0B,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,gCAAgC,EAAE,2CAyB9C,CAAC"}
@@ -3,11 +3,14 @@ export const ProductVariationAssignmentVector = {
3
3
  option: async (obj, _, { modules }) => {
4
4
  // TODO: use product variation loader
5
5
  const productVariation = await modules.products.variations.findProductVariationByKey({
6
- key: obj.key,
7
6
  productId: obj.product._id,
7
+ key: obj.key,
8
8
  });
9
+ if (!productVariation) {
10
+ return null;
11
+ }
9
12
  return {
10
- _id: productVariation._id,
13
+ _id: `${productVariation._id}:${obj.value}`,
11
14
  productVariationOption: obj.value,
12
15
  };
13
16
  },
@@ -1 +1 @@
1
- {"version":3,"file":"product-variation-assignment-vector.js","sourceRoot":"","sources":["../../../../src/resolvers/type/product/product-variation-assignment-vector.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,gCAAgC,GAAgD;IAC3F,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,KAAK,EAAE;IAElE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,qCAAqC;QACrC,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;YACnF,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG;SAC3B,CAAC,CAAC;QACH,OAAO;YACL,GAAG,EAAE,gBAAgB,CAAC,GAAG;YACzB,sBAAsB,EAAE,GAAG,CAAC,KAAK;SAClC,CAAC;IACJ,CAAC;IAED,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,qCAAqC;QACrC,OAAO,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;YAC3D,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG;YAC5B,GAAG,EAAE,GAAG,EAAE,GAAG;SACd,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"product-variation-assignment-vector.js","sourceRoot":"","sources":["../../../../src/resolvers/type/product/product-variation-assignment-vector.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,gCAAgC,GAAgD;IAC3F,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,KAAK,EAAE;IAElE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,qCAAqC;QACrC,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;YACnF,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG;YAC1B,GAAG,EAAE,GAAG,CAAC,GAAG;SACb,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,GAAG,EAAE,GAAG,gBAAgB,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;YAC3C,sBAAsB,EAAE,GAAG,CAAC,KAAK;SAClC,CAAC;IACJ,CAAC;IAED,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACjC,qCAAqC;QACrC,OAAO,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,yBAAyB,CAAC;YAC3D,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG;YAC5B,GAAG,EAAE,GAAG,EAAE,GAAG;SACd,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/api",
3
- "version": "4.0.0-rc.7",
3
+ "version": "4.0.0-rc.9",
4
4
  "main": "lib/api-index.js",
5
5
  "types": "lib/api-index.d.ts",
6
6
  "type": "module",
@@ -14,10 +14,37 @@ export async function getNormalizedProductDetails(productId: string, context: Co
14
14
  });
15
15
  let variations = [];
16
16
  let bundleItems = [];
17
- if (product.type === ProductTypes.ConfigurableProduct)
17
+ let assignments = [];
18
+ if (product.type === ProductTypes.ConfigurableProduct && product?.proxy?.assignments?.length) {
18
19
  variations = await context.modules.products.variations.findProductVariations({
19
20
  productId: product._id,
20
21
  });
22
+ assignments = await Promise.all(
23
+ product?.proxy?.assignments?.map(async (assignment) => {
24
+ const product = await loaders.productLoader.load({
25
+ productId: assignment.productId,
26
+ });
27
+ const productMedias = await modules.products.media.findProductMedias({
28
+ productId: assignment.productId,
29
+ });
30
+ const media = await normalizeMediaUrl(productMedias, context);
31
+ const texts = await loaders.productTextLoader.load({
32
+ productId: assignment.productId,
33
+ locale,
34
+ });
35
+ return {
36
+ assignment: {
37
+ ...assignment,
38
+ product: {
39
+ ...product,
40
+ media,
41
+ texts,
42
+ },
43
+ },
44
+ };
45
+ }),
46
+ );
47
+ }
21
48
 
22
49
  if (product.type === ProductTypes.BundleProduct) {
23
50
  bundleItems = await Promise.all(
@@ -63,6 +90,7 @@ export async function getNormalizedProductDetails(productId: string, context: Co
63
90
  ...product,
64
91
  texts,
65
92
  media,
93
+ assignments,
66
94
  variations,
67
95
  bundleItems,
68
96
  pricing,
@@ -20,11 +20,14 @@ export const ProductVariationAssignmentVector: ProductVariationAssignmentVectorH
20
20
  option: async (obj, _, { modules }) => {
21
21
  // TODO: use product variation loader
22
22
  const productVariation = await modules.products.variations.findProductVariationByKey({
23
- key: obj.key,
24
23
  productId: obj.product._id,
24
+ key: obj.key,
25
25
  });
26
+ if (!productVariation) {
27
+ return null;
28
+ }
26
29
  return {
27
- _id: productVariation._id,
30
+ _id: `${productVariation._id}:${obj.value}`,
28
31
  productVariationOption: obj.value,
29
32
  };
30
33
  },