@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.
- package/lib/mcp/utils/getNormalizedProductDetails.d.ts +1 -0
- package/lib/mcp/utils/getNormalizedProductDetails.d.ts.map +1 -1
- package/lib/mcp/utils/getNormalizedProductDetails.js +27 -1
- package/lib/mcp/utils/getNormalizedProductDetails.js.map +1 -1
- package/lib/resolvers/type/product/product-variation-assignment-vector.d.ts.map +1 -1
- package/lib/resolvers/type/product/product-variation-assignment-vector.js +5 -2
- package/lib/resolvers/type/product/product-variation-assignment-vector.js.map +1 -1
- package/package.json +1 -1
- package/src/mcp/utils/getNormalizedProductDetails.ts +29 -1
- package/src/resolvers/type/product/product-variation-assignment-vector.ts +5 -2
|
@@ -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
|
|
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
|
-
|
|
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;
|
|
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,
|
|
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,
|
|
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
|
@@ -14,10 +14,37 @@ export async function getNormalizedProductDetails(productId: string, context: Co
|
|
|
14
14
|
});
|
|
15
15
|
let variations = [];
|
|
16
16
|
let bundleItems = [];
|
|
17
|
-
|
|
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
|
},
|