@unchainedshop/api 3.1.12 → 3.1.13

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 (252) 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/express/chatRouter.d.ts +3 -0
  6. package/lib/express/chatRouter.d.ts.map +1 -0
  7. package/lib/express/chatRouter.js +86 -0
  8. package/lib/express/chatRouter.js.map +1 -0
  9. package/lib/express/createApolloMiddleware.d.ts +4 -0
  10. package/lib/express/createApolloMiddleware.d.ts.map +1 -0
  11. package/lib/express/createApolloMiddleware.js +36 -0
  12. package/lib/express/createApolloMiddleware.js.map +1 -0
  13. package/lib/express/createSingleSignOnMiddleware.d.ts +5 -0
  14. package/lib/express/createSingleSignOnMiddleware.d.ts.map +1 -0
  15. package/lib/express/createSingleSignOnMiddleware.js +71 -0
  16. package/lib/express/createSingleSignOnMiddleware.js.map +1 -0
  17. package/lib/hashPassword.d.ts +2 -0
  18. package/lib/hashPassword.d.ts.map +1 -0
  19. package/lib/hashPassword.js +5 -0
  20. package/lib/hashPassword.js.map +1 -0
  21. package/lib/loaders/assortmentMediaTextLoader.js +1 -1
  22. package/lib/loaders/assortmentMediaTextLoader.js.map +1 -1
  23. package/lib/loaders/assortmentTextLoader.js +1 -1
  24. package/lib/loaders/assortmentTextLoader.js.map +1 -1
  25. package/lib/loaders/filterTextLoader.js +1 -1
  26. package/lib/loaders/filterTextLoader.js.map +1 -1
  27. package/lib/loaders/index.d.ts.map +1 -1
  28. package/lib/loaders/index.js.map +1 -1
  29. package/lib/loaders/productMediaTextLoader.d.ts.map +1 -1
  30. package/lib/loaders/productMediaTextLoader.js +1 -1
  31. package/lib/loaders/productMediaTextLoader.js.map +1 -1
  32. package/lib/loaders/productTextLoader.d.ts.map +1 -1
  33. package/lib/loaders/productTextLoader.js +1 -1
  34. package/lib/loaders/productTextLoader.js.map +1 -1
  35. package/lib/mcp/index.d.ts.map +1 -1
  36. package/lib/mcp/index.js +1 -1
  37. package/lib/mcp/index.js.map +1 -1
  38. package/lib/mcp/tools/addProductAssignmentHandler.d.ts +52 -0
  39. package/lib/mcp/tools/addProductAssignmentHandler.d.ts.map +1 -0
  40. package/lib/mcp/tools/addProductAssignmentHandler.js +97 -0
  41. package/lib/mcp/tools/addProductAssignmentHandler.js.map +1 -0
  42. package/lib/mcp/tools/countriesHandler.d.ts +60 -0
  43. package/lib/mcp/tools/countriesHandler.d.ts.map +1 -0
  44. package/lib/mcp/tools/countriesHandler.js +48 -0
  45. package/lib/mcp/tools/countriesHandler.js.map +1 -0
  46. package/lib/mcp/tools/countryHandler.d.ts +20 -0
  47. package/lib/mcp/tools/countryHandler.d.ts.map +1 -0
  48. package/lib/mcp/tools/countryHandler.js +34 -0
  49. package/lib/mcp/tools/countryHandler.js.map +1 -0
  50. package/lib/mcp/tools/createProduct.d.ts +138 -0
  51. package/lib/mcp/tools/createProduct.d.ts.map +1 -0
  52. package/lib/mcp/tools/createProduct.js +60 -0
  53. package/lib/mcp/tools/createProduct.js.map +1 -0
  54. package/lib/mcp/tools/createProductVariationHandler.d.ts +84 -0
  55. package/lib/mcp/tools/createProductVariationHandler.d.ts.map +1 -0
  56. package/lib/mcp/tools/createProductVariationHandler.js +67 -0
  57. package/lib/mcp/tools/createProductVariationHandler.js.map +1 -0
  58. package/lib/mcp/tools/currenciesHandler.d.ts +60 -0
  59. package/lib/mcp/tools/currenciesHandler.d.ts.map +1 -0
  60. package/lib/mcp/tools/currenciesHandler.js +50 -0
  61. package/lib/mcp/tools/currenciesHandler.js.map +1 -0
  62. package/lib/mcp/tools/currencyHandler.d.ts +20 -0
  63. package/lib/mcp/tools/currencyHandler.d.ts.map +1 -0
  64. package/lib/mcp/tools/currencyHandler.js +34 -0
  65. package/lib/mcp/tools/currencyHandler.js.map +1 -0
  66. package/lib/mcp/tools/getProduct.d.ts +0 -3
  67. package/lib/mcp/tools/getProduct.d.ts.map +1 -1
  68. package/lib/mcp/tools/getProduct.js +0 -324
  69. package/lib/mcp/tools/getProduct.js.map +1 -1
  70. package/lib/mcp/tools/languageHandler.d.ts +20 -0
  71. package/lib/mcp/tools/languageHandler.d.ts.map +1 -0
  72. package/lib/mcp/tools/languageHandler.js +31 -0
  73. package/lib/mcp/tools/languageHandler.js.map +1 -0
  74. package/lib/mcp/tools/languagesHandler.d.ts +60 -0
  75. package/lib/mcp/tools/languagesHandler.d.ts.map +1 -0
  76. package/lib/mcp/tools/languagesHandler.js +42 -0
  77. package/lib/mcp/tools/languagesHandler.js.map +1 -0
  78. package/lib/mcp/tools/listProducts.d.ts.map +1 -1
  79. package/lib/mcp/tools/listProducts.js +0 -13
  80. package/lib/mcp/tools/listProducts.js.map +1 -1
  81. package/lib/mcp/tools/normalizeMediaUrl.d.ts +3 -0
  82. package/lib/mcp/tools/normalizeMediaUrl.d.ts.map +1 -0
  83. package/lib/mcp/tools/normalizeMediaUrl.js +21 -0
  84. package/lib/mcp/tools/normalizeMediaUrl.js.map +1 -0
  85. package/lib/mcp/tools/productsCountHandler.d.ts +32 -0
  86. package/lib/mcp/tools/productsCountHandler.d.ts.map +1 -0
  87. package/lib/mcp/tools/productsCountHandler.js +33 -0
  88. package/lib/mcp/tools/productsCountHandler.js.map +1 -0
  89. package/lib/mcp/tools/publishProduct.d.ts +20 -0
  90. package/lib/mcp/tools/publishProduct.d.ts.map +1 -0
  91. package/lib/mcp/tools/publishProduct.js +40 -0
  92. package/lib/mcp/tools/publishProduct.js.map +1 -0
  93. package/lib/mcp/tools/removeProduct.d.ts +20 -0
  94. package/lib/mcp/tools/removeProduct.d.ts.map +1 -0
  95. package/lib/mcp/tools/removeProduct.js +34 -0
  96. package/lib/mcp/tools/removeProduct.js.map +1 -0
  97. package/lib/mcp/tools/removeProductVariationHandler.d.ts +20 -0
  98. package/lib/mcp/tools/removeProductVariationHandler.d.ts.map +1 -0
  99. package/lib/mcp/tools/removeProductVariationHandler.js +43 -0
  100. package/lib/mcp/tools/removeProductVariationHandler.js.map +1 -0
  101. package/lib/mcp/tools/unPublishProduct.d.ts +20 -0
  102. package/lib/mcp/tools/unPublishProduct.d.ts.map +1 -0
  103. package/lib/mcp/tools/unPublishProduct.js +40 -0
  104. package/lib/mcp/tools/unPublishProduct.js.map +1 -0
  105. package/lib/mcp/tools/updateProduct.d.ts +56 -0
  106. package/lib/mcp/tools/updateProduct.d.ts.map +1 -0
  107. package/lib/mcp/tools/updateProduct.js +44 -0
  108. package/lib/mcp/tools/updateProduct.js.map +1 -0
  109. package/lib/mcp/tools/updateProductCommerceHandler.d.ts +166 -0
  110. package/lib/mcp/tools/updateProductCommerceHandler.d.ts.map +1 -0
  111. package/lib/mcp/tools/updateProductCommerceHandler.js +64 -0
  112. package/lib/mcp/tools/updateProductCommerceHandler.js.map +1 -0
  113. package/lib/mcp/tools/updateProductPlanHandler.d.ts +72 -0
  114. package/lib/mcp/tools/updateProductPlanHandler.d.ts.map +1 -0
  115. package/lib/mcp/tools/updateProductPlanHandler.js +51 -0
  116. package/lib/mcp/tools/updateProductPlanHandler.js.map +1 -0
  117. package/lib/mcp/tools/updateProductSupplyHandler.d.ts +64 -0
  118. package/lib/mcp/tools/updateProductSupplyHandler.d.ts.map +1 -0
  119. package/lib/mcp/tools/updateProductSupplyHandler.js +52 -0
  120. package/lib/mcp/tools/updateProductSupplyHandler.js.map +1 -0
  121. package/lib/mcp/tools/updateProductTextsHandler.d.ts +114 -0
  122. package/lib/mcp/tools/updateProductTextsHandler.d.ts.map +1 -0
  123. package/lib/mcp/tools/updateProductTextsHandler.js +50 -0
  124. package/lib/mcp/tools/updateProductTextsHandler.js.map +1 -0
  125. package/lib/mcp/tools/updateProductTokenizationHandler.d.ts +72 -0
  126. package/lib/mcp/tools/updateProductTokenizationHandler.d.ts.map +1 -0
  127. package/lib/mcp/tools/updateProductTokenizationHandler.js +49 -0
  128. package/lib/mcp/tools/updateProductTokenizationHandler.js.map +1 -0
  129. package/lib/mcp/tools/updateProductWarehousingHandler.d.ts +48 -0
  130. package/lib/mcp/tools/updateProductWarehousingHandler.d.ts.map +1 -0
  131. package/lib/mcp/tools/updateProductWarehousingHandler.js +45 -0
  132. package/lib/mcp/tools/updateProductWarehousingHandler.js.map +1 -0
  133. package/lib/mcp/utils/getNormalizedProductDetails.d.ts +26 -0
  134. package/lib/mcp/utils/getNormalizedProductDetails.d.ts.map +1 -0
  135. package/lib/mcp/utils/getNormalizedProductDetails.js +36 -0
  136. package/lib/mcp/utils/getNormalizedProductDetails.js.map +1 -0
  137. package/lib/mcp/utils/normalizeMediaUrl.d.ts +3 -0
  138. package/lib/mcp/utils/normalizeMediaUrl.d.ts.map +1 -0
  139. package/lib/mcp/utils/normalizeMediaUrl.js +21 -0
  140. package/lib/mcp/utils/normalizeMediaUrl.js.map +1 -0
  141. package/lib/resolvers/mutations/accounts/buildSecretTOTPAuthURL.d.ts +3 -0
  142. package/lib/resolvers/mutations/accounts/buildSecretTOTPAuthURL.d.ts.map +1 -0
  143. package/lib/resolvers/mutations/accounts/buildSecretTOTPAuthURL.js +6 -0
  144. package/lib/resolvers/mutations/accounts/buildSecretTOTPAuthURL.js.map +1 -0
  145. package/lib/resolvers/mutations/accounts/disableTOTP.d.ts +6 -0
  146. package/lib/resolvers/mutations/accounts/disableTOTP.d.ts.map +1 -0
  147. package/lib/resolvers/mutations/accounts/disableTOTP.js +27 -0
  148. package/lib/resolvers/mutations/accounts/disableTOTP.js.map +1 -0
  149. package/lib/resolvers/mutations/accounts/enableTOTP.d.ts +6 -0
  150. package/lib/resolvers/mutations/accounts/enableTOTP.d.ts.map +1 -0
  151. package/lib/resolvers/mutations/accounts/enableTOTP.js +20 -0
  152. package/lib/resolvers/mutations/accounts/enableTOTP.js.map +1 -0
  153. package/lib/resolvers/mutations/accounts/linkOAuthAccount.d.ts +7 -0
  154. package/lib/resolvers/mutations/accounts/linkOAuthAccount.d.ts.map +1 -0
  155. package/lib/resolvers/mutations/accounts/linkOAuthAccount.js +30 -0
  156. package/lib/resolvers/mutations/accounts/linkOAuthAccount.js.map +1 -0
  157. package/lib/resolvers/mutations/accounts/loginWithOAuth.d.ts +8 -0
  158. package/lib/resolvers/mutations/accounts/loginWithOAuth.d.ts.map +1 -0
  159. package/lib/resolvers/mutations/accounts/loginWithOAuth.js +25 -0
  160. package/lib/resolvers/mutations/accounts/loginWithOAuth.js.map +1 -0
  161. package/lib/resolvers/mutations/accounts/logoutAllSessions.d.ts +5 -0
  162. package/lib/resolvers/mutations/accounts/logoutAllSessions.d.ts.map +1 -0
  163. package/lib/resolvers/mutations/accounts/logoutAllSessions.js +20 -0
  164. package/lib/resolvers/mutations/accounts/logoutAllSessions.js.map +1 -0
  165. package/lib/resolvers/mutations/accounts/unlinkOAuthAccount.d.ts +6 -0
  166. package/lib/resolvers/mutations/accounts/unlinkOAuthAccount.d.ts.map +1 -0
  167. package/lib/resolvers/mutations/accounts/unlinkOAuthAccount.js +13 -0
  168. package/lib/resolvers/mutations/accounts/unlinkOAuthAccount.js.map +1 -0
  169. package/lib/resolvers/mutations/assortments/addAssortmentMedia.d.ts +6 -0
  170. package/lib/resolvers/mutations/assortments/addAssortmentMedia.d.ts.map +1 -0
  171. package/lib/resolvers/mutations/assortments/addAssortmentMedia.js +18 -0
  172. package/lib/resolvers/mutations/assortments/addAssortmentMedia.js.map +1 -0
  173. package/lib/resolvers/mutations/products/addProductAssignment.d.ts.map +1 -1
  174. package/lib/resolvers/mutations/products/addProductAssignment.js +3 -1
  175. package/lib/resolvers/mutations/products/addProductAssignment.js.map +1 -1
  176. package/lib/resolvers/mutations/products/addProductMedia.d.ts +6 -0
  177. package/lib/resolvers/mutations/products/addProductMedia.d.ts.map +1 -0
  178. package/lib/resolvers/mutations/products/addProductMedia.js +18 -0
  179. package/lib/resolvers/mutations/products/addProductMedia.js.map +1 -0
  180. package/lib/resolvers/mutations/users/updateUserAvatar.d.ts +6 -0
  181. package/lib/resolvers/mutations/users/updateUserAvatar.d.ts.map +1 -0
  182. package/lib/resolvers/mutations/users/updateUserAvatar.js +22 -0
  183. package/lib/resolvers/mutations/users/updateUserAvatar.js.map +1 -0
  184. package/lib/resolvers/mutations/utils/getOrderCart.d.ts +7 -0
  185. package/lib/resolvers/mutations/utils/getOrderCart.d.ts.map +1 -0
  186. package/lib/resolvers/mutations/utils/getOrderCart.js +13 -0
  187. package/lib/resolvers/mutations/utils/getOrderCart.js.map +1 -0
  188. package/lib/resolvers/type/dispatch-types.d.ts +15 -0
  189. package/lib/resolvers/type/dispatch-types.d.ts.map +1 -0
  190. package/lib/resolvers/type/dispatch-types.js +16 -0
  191. package/lib/resolvers/type/dispatch-types.js.map +1 -0
  192. package/lib/resolvers/type/oauth-account.d.ts +6 -0
  193. package/lib/resolvers/type/oauth-account.d.ts.map +1 -0
  194. package/lib/resolvers/type/oauth-account.js +7 -0
  195. package/lib/resolvers/type/oauth-account.js.map +1 -0
  196. package/lib/resolvers/type/oauth-provider.d.ts +6 -0
  197. package/lib/resolvers/type/oauth-provider.d.ts.map +1 -0
  198. package/lib/resolvers/type/oauth-provider.js +6 -0
  199. package/lib/resolvers/type/oauth-provider.js.map +1 -0
  200. package/lib/resolvers/type/stock-types.d.ts +14 -0
  201. package/lib/resolvers/type/stock-types.d.ts.map +1 -0
  202. package/lib/resolvers/type/stock-types.js +15 -0
  203. package/lib/resolvers/type/stock-types.js.map +1 -0
  204. package/lib/user-context.d.ts +7 -0
  205. package/lib/user-context.d.ts.map +1 -0
  206. package/lib/user-context.js +76 -0
  207. package/lib/user-context.js.map +1 -0
  208. package/package.json +13 -13
  209. package/src/errors.ts +5 -0
  210. package/src/loaders/buildLocaleMap.test.ts +14 -25
  211. package/src/loaders/buildLocaleMap.ts +1 -1
  212. package/src/loaders/buildTextMap.test.ts +9 -10
  213. package/src/loaders/index.ts +0 -1
  214. package/src/resolvers/mutations/products/addProductAssignment.ts +8 -1
  215. package/lib/express/mcpHandler.d.ts.map +0 -1
  216. package/lib/express/mcpHandler.js +0 -68
  217. package/lib/express/mcpHandler.js.map +0 -1
  218. package/lib/fastify/createMCPMiddleware.d.ts +0 -2
  219. package/lib/fastify/createMCPMiddleware.d.ts.map +0 -1
  220. package/lib/fastify/createMCPMiddleware.js +0 -2
  221. package/lib/fastify/createMCPMiddleware.js.map +0 -1
  222. package/lib/fastify/index copy.d.ts.map +0 -1
  223. package/lib/fastify/index copy.js +0 -157
  224. package/lib/fastify/index copy.js.map +0 -1
  225. package/lib/fastify/mcpHandler.d.ts +0 -8
  226. package/lib/fastify/mcpHandler.d.ts.map +0 -1
  227. package/lib/fastify/mcpHandler.js +0 -46
  228. package/lib/fastify/mcpHandler.js.map +0 -1
  229. package/lib/mcp/server.d.ts +0 -4
  230. package/lib/mcp/server.d.ts.map +0 -1
  231. package/lib/mcp/server.js +0 -60
  232. package/lib/mcp/server.js.map +0 -1
  233. package/lib/mcp/types.d.ts +0 -27
  234. package/lib/mcp/types.d.ts.map +0 -1
  235. package/lib/mcp/types.js +0 -5
  236. package/lib/mcp/types.js.map +0 -1
  237. package/lib/mcp/utils/html.d.ts +0 -16
  238. package/lib/mcp/utils/html.d.ts.map +0 -1
  239. package/lib/mcp/utils/html.js +0 -102
  240. package/lib/mcp/utils/html.js.map +0 -1
  241. package/lib/middleware/accountLockout.d.ts.map +0 -1
  242. package/lib/middleware/accountLockout.js +0 -84
  243. package/lib/middleware/accountLockout.js.map +0 -1
  244. package/lib/middleware/rateLimiter.d.ts.map +0 -1
  245. package/lib/middleware/rateLimiter.js +0 -91
  246. package/lib/middleware/rateLimiter.js.map +0 -1
  247. package/lib/plugins/inputValidation.d.ts.map +0 -1
  248. package/lib/plugins/inputValidation.js +0 -95
  249. package/lib/plugins/inputValidation.js.map +0 -1
  250. package/lib/utils/inputValidation.d.ts.map +0 -1
  251. package/lib/utils/inputValidation.js +0 -51
  252. package/lib/utils/inputValidation.js.map +0 -1
@@ -0,0 +1,97 @@
1
+ import { z } from 'zod';
2
+ import { getNormalizedProductDetails } from '../utils/getNormalizedProductDetails.js';
3
+ import { ProductNotFoundError, ProductVariationVectorAlreadySet, ProductVariationVectorInvalid, ProductWrongTypeError, } from '../../errors.js';
4
+ import { ProductTypes } from '@unchainedshop/core-products';
5
+ const extractVariationMatrix = (variations = []) => {
6
+ const cartesianProduct = (arrays) => {
7
+ return arrays.reduce((acc, array) => acc.flatMap((item) => array.map((value) => [...item, value])), [[]]);
8
+ };
9
+ const keys = variations.map((item) => item.key);
10
+ const options = variations.map((item) => item.options);
11
+ const combinations = cartesianProduct(options);
12
+ return combinations.map((combination) => combination.reduce((acc, value, index) => {
13
+ acc[keys[index]] = value;
14
+ return acc;
15
+ }, {}));
16
+ };
17
+ const combinationExists = (matrix, combination) => {
18
+ return matrix.some((variation) => {
19
+ return (Object.keys(variation).length === Object.keys(combination).length && // Ensure both have the same number of keys
20
+ Object.entries(combination).every(([key, value]) => variation[key] === value));
21
+ });
22
+ };
23
+ // Zod schema for ProductAssignmentVectorInput
24
+ const ProductAssignmentVectorSchema = z.object({
25
+ key: z.string().min(1).describe('Attribute key (e.g., "Color", "Size")'),
26
+ value: z.string().min(1).describe('Attribute value (e.g., "Red", "M")'),
27
+ });
28
+ export const AssignProductVariationSchema = {
29
+ proxyId: z.string().min(1).describe('should be ID of the CONFIGURABLE_PRODUCT (parent) only'),
30
+ productId: z
31
+ .string()
32
+ .min(1)
33
+ .describe('ID of the product being assigned. can not be a CONFIGURABLE_PRODUCT product'),
34
+ vectors: z
35
+ .array(ProductAssignmentVectorSchema)
36
+ .min(1)
37
+ .describe('Combination of attributes uniquely identifying the variant'),
38
+ };
39
+ // Full schema for the mutation
40
+ export const AddProductAssignmentZodSchema = z.object(AssignProductVariationSchema);
41
+ export async function addProductAssignmentHandler(context, params) {
42
+ const { proxyId, productId, vectors } = params;
43
+ const { modules } = context;
44
+ try {
45
+ const proxyProduct = await modules.products.findProduct({
46
+ productId: proxyId,
47
+ });
48
+ if (!proxyProduct)
49
+ throw new ProductNotFoundError({ proxyId });
50
+ if (proxyProduct.type !== ProductTypes.ConfigurableProduct)
51
+ throw new ProductWrongTypeError({
52
+ proxyId,
53
+ received: proxyProduct.type,
54
+ required: ProductTypes.ConfigurableProduct,
55
+ });
56
+ const variations = await modules.products.variations.findProductVariations({
57
+ productId: proxyId,
58
+ });
59
+ const variationMatrix = extractVariationMatrix(variations);
60
+ const normalizedVectors = vectors?.reduce((prev, { key, value }) => {
61
+ return {
62
+ ...prev,
63
+ [key]: value,
64
+ };
65
+ }, {});
66
+ if (!combinationExists(variationMatrix, normalizedVectors))
67
+ throw new ProductVariationVectorInvalid({ proxyId, vectors });
68
+ const added = await modules.products.assignments.addProxyAssignment({
69
+ productId,
70
+ proxyId,
71
+ vectors: vectors,
72
+ });
73
+ if (!added)
74
+ throw new ProductVariationVectorAlreadySet({ proxyId, vectors });
75
+ return {
76
+ content: [
77
+ {
78
+ type: 'text',
79
+ text: JSON.stringify({
80
+ product: await getNormalizedProductDetails(proxyId, context),
81
+ }),
82
+ },
83
+ ],
84
+ };
85
+ }
86
+ catch (error) {
87
+ return {
88
+ content: [
89
+ {
90
+ type: 'text',
91
+ text: `Error assigning product: ${error.message}`,
92
+ },
93
+ ],
94
+ };
95
+ }
96
+ }
97
+ //# sourceMappingURL=addProductAssignmentHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addProductAssignmentHandler.js","sourceRoot":"","sources":["../../../src/mcp/tools/addProductAssignmentHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { z } from 'zod';
2
+ import { Context } from '../../context.js';
3
+ export declare const ListCountriesSchema: {
4
+ limit: z.ZodDefault<z.ZodNumber>;
5
+ offset: z.ZodDefault<z.ZodNumber>;
6
+ includeInactive: z.ZodDefault<z.ZodBoolean>;
7
+ queryString: z.ZodOptional<z.ZodString>;
8
+ sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
9
+ key: z.ZodString;
10
+ value: z.ZodEnum<["ASC" | "DESC", ...("ASC" | "DESC")[]]>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ key?: string;
13
+ value?: "ASC" | "DESC";
14
+ }, {
15
+ key?: string;
16
+ value?: "ASC" | "DESC";
17
+ }>, "many">>;
18
+ };
19
+ export declare const ListCountriesZodSchema: z.ZodObject<{
20
+ limit: z.ZodDefault<z.ZodNumber>;
21
+ offset: z.ZodDefault<z.ZodNumber>;
22
+ includeInactive: z.ZodDefault<z.ZodBoolean>;
23
+ queryString: z.ZodOptional<z.ZodString>;
24
+ sort: z.ZodOptional<z.ZodArray<z.ZodObject<{
25
+ key: z.ZodString;
26
+ value: z.ZodEnum<["ASC" | "DESC", ...("ASC" | "DESC")[]]>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ key?: string;
29
+ value?: "ASC" | "DESC";
30
+ }, {
31
+ key?: string;
32
+ value?: "ASC" | "DESC";
33
+ }>, "many">>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ sort?: {
36
+ key?: string;
37
+ value?: "ASC" | "DESC";
38
+ }[];
39
+ includeInactive?: boolean;
40
+ queryString?: string;
41
+ limit?: number;
42
+ offset?: number;
43
+ }, {
44
+ sort?: {
45
+ key?: string;
46
+ value?: "ASC" | "DESC";
47
+ }[];
48
+ includeInactive?: boolean;
49
+ queryString?: string;
50
+ limit?: number;
51
+ offset?: number;
52
+ }>;
53
+ export type ListCountriesParams = z.infer<typeof ListCountriesZodSchema>;
54
+ export declare function countriesHandler(context: Context, params: ListCountriesParams): Promise<{
55
+ content: {
56
+ type: "text";
57
+ text: string;
58
+ }[];
59
+ }>;
60
+ //# sourceMappingURL=countriesHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countriesHandler.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/countriesHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAQ3C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;CAa/B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgC,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB;;;;;GA+BnF"}
@@ -0,0 +1,48 @@
1
+ import { z } from 'zod';
2
+ import { SortDirection } from '@unchainedshop/utils';
3
+ const sortDirectionKeys = Object.keys(SortDirection);
4
+ export const ListCountriesSchema = {
5
+ limit: z.number().int().min(1).max(100).default(50),
6
+ offset: z.number().int().min(0).default(0),
7
+ includeInactive: z.boolean().default(false),
8
+ queryString: z.string().min(1).optional(),
9
+ sort: z
10
+ .array(z.object({
11
+ key: z.string().min(1),
12
+ value: z.enum(sortDirectionKeys).describe("Sort direction, e.g., 'ASC' or 'DESC'"),
13
+ }))
14
+ .optional(),
15
+ };
16
+ export const ListCountriesZodSchema = z.object(ListCountriesSchema);
17
+ export async function countriesHandler(context, params) {
18
+ const { limit, offset, includeInactive, queryString, sort } = params;
19
+ const { modules } = context;
20
+ try {
21
+ const countries = await modules.countries.findCountries({
22
+ limit,
23
+ offset,
24
+ includeInactive,
25
+ queryString,
26
+ sort: sort,
27
+ });
28
+ return {
29
+ content: [
30
+ {
31
+ type: 'text',
32
+ text: JSON.stringify({ countries }),
33
+ },
34
+ ],
35
+ };
36
+ }
37
+ catch (error) {
38
+ return {
39
+ content: [
40
+ {
41
+ type: 'text',
42
+ text: `Error retrieving countries: ${error.message}`,
43
+ },
44
+ ],
45
+ };
46
+ }
47
+ }
48
+ //# sourceMappingURL=countriesHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countriesHandler.js","sourceRoot":"","sources":["../../../src/mcp/tools/countriesHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAGlD,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACnD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACzC,IAAI,EAAE,CAAC;SACJ,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,uCAAuC,CAAC;KACnF,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAIpE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAgB,EAAE,MAA2B;IAClF,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACrE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC;YACtD,KAAK;YACL,MAAM;YACN,eAAe;YACf,WAAW;YACX,IAAI,EAAE,IAAa;SACpB,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;iBACpC;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,+BAAgC,KAAe,CAAC,OAAO,EAAE;iBAChE;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ import { Context } from '../../context.js';
3
+ export declare const CountrySchema: {
4
+ countryId: z.ZodString;
5
+ };
6
+ export declare const CountryZodSchema: z.ZodObject<{
7
+ countryId: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ countryId?: string;
10
+ }, {
11
+ countryId?: string;
12
+ }>;
13
+ export type CountryParams = z.infer<typeof CountryZodSchema>;
14
+ export declare function countryHandler(context: Context, params: CountryParams): Promise<{
15
+ content: {
16
+ type: "text";
17
+ text: string;
18
+ }[];
19
+ }>;
20
+ //# sourceMappingURL=countryHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countryHandler.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/countryHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAG3C,eAAO,MAAM,aAAa;;CAEzB,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;EAA0B,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa;;;;;GA2B3E"}
@@ -0,0 +1,34 @@
1
+ import { z } from 'zod';
2
+ import { CountryNotFoundError } from '../../errors.js';
3
+ export const CountrySchema = {
4
+ countryId: z.string().min(1).describe('The ID of the country to fetch'),
5
+ };
6
+ export const CountryZodSchema = z.object(CountrySchema);
7
+ export async function countryHandler(context, params) {
8
+ const { countryId } = params;
9
+ const { modules } = context;
10
+ try {
11
+ const country = await modules.countries.findCountry({ countryId });
12
+ if (!country)
13
+ throw new CountryNotFoundError({ countryId });
14
+ return {
15
+ content: [
16
+ {
17
+ type: 'text',
18
+ text: JSON.stringify({ country }),
19
+ },
20
+ ],
21
+ };
22
+ }
23
+ catch (error) {
24
+ return {
25
+ content: [
26
+ {
27
+ type: 'text',
28
+ text: `Error retrieving country: ${error.message}`,
29
+ },
30
+ ],
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=countryHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"countryHandler.js","sourceRoot":"","sources":["../../../src/mcp/tools/countryHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CACxE,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAIxD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAgB,EAAE,MAAqB;IAC1E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAC7B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;iBAClC;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA8B,KAAe,CAAC,OAAO,EAAE;iBAC9D;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,138 @@
1
+ import { z } from 'zod';
2
+ import { Context } from '../../context.js';
3
+ export declare const CreateProductSchema: {
4
+ product: z.ZodObject<{
5
+ type: z.ZodEnum<["SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct", ...("SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct")[]]>;
6
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ tags?: string[];
9
+ type?: "SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct";
10
+ }, {
11
+ tags?: string[];
12
+ type?: "SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct";
13
+ }>;
14
+ texts: z.ZodArray<z.ZodObject<{
15
+ locale: z.ZodString;
16
+ slug: z.ZodOptional<z.ZodString>;
17
+ title: z.ZodOptional<z.ZodString>;
18
+ subtitle: z.ZodOptional<z.ZodString>;
19
+ description: z.ZodOptional<z.ZodString>;
20
+ vendor: z.ZodOptional<z.ZodString>;
21
+ brand: z.ZodOptional<z.ZodString>;
22
+ labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
23
+ }, "strip", z.ZodTypeAny, {
24
+ description?: string;
25
+ locale?: string;
26
+ title?: string;
27
+ subtitle?: string;
28
+ slug?: string;
29
+ brand?: string;
30
+ vendor?: string;
31
+ labels?: string[];
32
+ }, {
33
+ description?: string;
34
+ locale?: string;
35
+ title?: string;
36
+ subtitle?: string;
37
+ slug?: string;
38
+ brand?: string;
39
+ vendor?: string;
40
+ labels?: string[];
41
+ }>, "atleastone">;
42
+ };
43
+ export declare const CreateProductZodSchema: z.ZodObject<{
44
+ product: z.ZodObject<{
45
+ type: z.ZodEnum<["SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct", ...("SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct")[]]>;
46
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ tags?: string[];
49
+ type?: "SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct";
50
+ }, {
51
+ tags?: string[];
52
+ type?: "SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct";
53
+ }>;
54
+ texts: z.ZodArray<z.ZodObject<{
55
+ locale: z.ZodString;
56
+ slug: z.ZodOptional<z.ZodString>;
57
+ title: z.ZodOptional<z.ZodString>;
58
+ subtitle: z.ZodOptional<z.ZodString>;
59
+ description: z.ZodOptional<z.ZodString>;
60
+ vendor: z.ZodOptional<z.ZodString>;
61
+ brand: z.ZodOptional<z.ZodString>;
62
+ labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
63
+ }, "strip", z.ZodTypeAny, {
64
+ description?: string;
65
+ locale?: string;
66
+ title?: string;
67
+ subtitle?: string;
68
+ slug?: string;
69
+ brand?: string;
70
+ vendor?: string;
71
+ labels?: string[];
72
+ }, {
73
+ description?: string;
74
+ locale?: string;
75
+ title?: string;
76
+ subtitle?: string;
77
+ slug?: string;
78
+ brand?: string;
79
+ vendor?: string;
80
+ labels?: string[];
81
+ }>, "atleastone">;
82
+ }, "strip", z.ZodTypeAny, {
83
+ product?: {
84
+ tags?: string[];
85
+ type?: "SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct";
86
+ };
87
+ texts?: [{
88
+ description?: string;
89
+ locale?: string;
90
+ title?: string;
91
+ subtitle?: string;
92
+ slug?: string;
93
+ brand?: string;
94
+ vendor?: string;
95
+ labels?: string[];
96
+ }, ...{
97
+ description?: string;
98
+ locale?: string;
99
+ title?: string;
100
+ subtitle?: string;
101
+ slug?: string;
102
+ brand?: string;
103
+ vendor?: string;
104
+ labels?: string[];
105
+ }[]];
106
+ }, {
107
+ product?: {
108
+ tags?: string[];
109
+ type?: "SimpleProduct" | "ConfigurableProduct" | "BundleProduct" | "PlanProduct" | "TokenizedProduct";
110
+ };
111
+ texts?: [{
112
+ description?: string;
113
+ locale?: string;
114
+ title?: string;
115
+ subtitle?: string;
116
+ slug?: string;
117
+ brand?: string;
118
+ vendor?: string;
119
+ labels?: string[];
120
+ }, ...{
121
+ description?: string;
122
+ locale?: string;
123
+ title?: string;
124
+ subtitle?: string;
125
+ slug?: string;
126
+ brand?: string;
127
+ vendor?: string;
128
+ labels?: string[];
129
+ }[]];
130
+ }>;
131
+ export type CreateProductParams = z.infer<typeof CreateProductZodSchema>;
132
+ export declare function createProductHandler(context: Context, params: CreateProductParams): Promise<{
133
+ content: {
134
+ type: "text";
135
+ text: string;
136
+ }[];
137
+ }>;
138
+ //# sourceMappingURL=createProduct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProduct.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/createProduct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAO3C,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyB/B,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAgC,CAAC;AAEpE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEzE,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB;;;;;GAmCvF"}
@@ -0,0 +1,60 @@
1
+ import { z } from 'zod';
2
+ import { ProductTypes } from '@unchainedshop/core-products';
3
+ const productTypeKeys = Object.keys(ProductTypes);
4
+ export const CreateProductSchema = {
5
+ product: z.object({
6
+ type: z.enum(productTypeKeys).describe('Product type (e.g., "SIMPLE_PRODUCT")'),
7
+ tags: z.array(z.string().min(1).toLowerCase()).optional().describe('Tags (lowercased strings)'),
8
+ }),
9
+ texts: z
10
+ .array(z.object({
11
+ locale: z
12
+ .string()
13
+ .min(2)
14
+ .describe('Locale code like "en", "de" always use locales registered in the system languages, if language explicitly provided check if it exists'),
15
+ slug: z.string().optional().describe('URL slug'),
16
+ title: z.string().optional().describe('Product title'),
17
+ subtitle: z.string().optional().describe('Product subtitle'),
18
+ description: z.string().optional().describe('Markdown description'),
19
+ vendor: z.string().optional().describe('Vendor name'),
20
+ brand: z.string().optional().describe('Brand name'),
21
+ labels: z.array(z.string()).optional().describe('Labels or tags'),
22
+ }))
23
+ .nonempty()
24
+ .describe('Localized product text entries'),
25
+ };
26
+ export const CreateProductZodSchema = z.object(CreateProductSchema);
27
+ export async function createProductHandler(context, params) {
28
+ const { product, texts } = params;
29
+ try {
30
+ const newProduct = await context.modules.products.create(product);
31
+ let productTexts = texts;
32
+ if (texts) {
33
+ productTexts = await context.modules.products.texts.updateTexts(newProduct._id, texts);
34
+ }
35
+ return {
36
+ content: [
37
+ {
38
+ type: 'text',
39
+ text: JSON.stringify({
40
+ product: {
41
+ ...newProduct,
42
+ texts: productTexts,
43
+ },
44
+ }),
45
+ },
46
+ ],
47
+ };
48
+ }
49
+ catch (error) {
50
+ return {
51
+ content: [
52
+ {
53
+ type: 'text',
54
+ text: `Error creating product: ${error.message}`,
55
+ },
56
+ ],
57
+ };
58
+ }
59
+ }
60
+ //# sourceMappingURL=createProduct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProduct.js","sourceRoot":"","sources":["../../../src/mcp/tools/createProduct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { z } from 'zod';
2
+ import { Context } from '../../context.js';
3
+ export declare const CreateProductVariationSchema: {
4
+ productId: z.ZodString;
5
+ variation: z.ZodObject<{
6
+ key: z.ZodString;
7
+ type: z.ZodEnum<["COLOR" | "TEXT", ...("COLOR" | "TEXT")[]]>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ key?: string;
10
+ type?: "COLOR" | "TEXT";
11
+ }, {
12
+ key?: string;
13
+ type?: "COLOR" | "TEXT";
14
+ }>;
15
+ texts: z.ZodOptional<z.ZodArray<z.ZodObject<{
16
+ locale: z.ZodString;
17
+ title: z.ZodOptional<z.ZodString>;
18
+ subtitle: z.ZodOptional<z.ZodString>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ locale?: string;
21
+ title?: string;
22
+ subtitle?: string;
23
+ }, {
24
+ locale?: string;
25
+ title?: string;
26
+ subtitle?: string;
27
+ }>, "many">>;
28
+ };
29
+ export declare const CreateProductVariationZodSchema: z.ZodObject<{
30
+ productId: z.ZodString;
31
+ variation: z.ZodObject<{
32
+ key: z.ZodString;
33
+ type: z.ZodEnum<["COLOR" | "TEXT", ...("COLOR" | "TEXT")[]]>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ key?: string;
36
+ type?: "COLOR" | "TEXT";
37
+ }, {
38
+ key?: string;
39
+ type?: "COLOR" | "TEXT";
40
+ }>;
41
+ texts: z.ZodOptional<z.ZodArray<z.ZodObject<{
42
+ locale: z.ZodString;
43
+ title: z.ZodOptional<z.ZodString>;
44
+ subtitle: z.ZodOptional<z.ZodString>;
45
+ }, "strip", z.ZodTypeAny, {
46
+ locale?: string;
47
+ title?: string;
48
+ subtitle?: string;
49
+ }, {
50
+ locale?: string;
51
+ title?: string;
52
+ subtitle?: string;
53
+ }>, "many">>;
54
+ }, "strip", z.ZodTypeAny, {
55
+ productId?: string;
56
+ texts?: {
57
+ locale?: string;
58
+ title?: string;
59
+ subtitle?: string;
60
+ }[];
61
+ variation?: {
62
+ key?: string;
63
+ type?: "COLOR" | "TEXT";
64
+ };
65
+ }, {
66
+ productId?: string;
67
+ texts?: {
68
+ locale?: string;
69
+ title?: string;
70
+ subtitle?: string;
71
+ }[];
72
+ variation?: {
73
+ key?: string;
74
+ type?: "COLOR" | "TEXT";
75
+ };
76
+ }>;
77
+ export type CreateProductVariationParams = z.infer<typeof CreateProductVariationZodSchema>;
78
+ export declare function createProductVariationHandler(context: Context, params: CreateProductVariationParams): Promise<{
79
+ content: {
80
+ type: "text";
81
+ text: string;
82
+ }[];
83
+ }>;
84
+ //# sourceMappingURL=createProductVariationHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProductVariationHandler.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/createProductVariationHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAU3C,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;CAoBxC,CAAC;AAEF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyC,CAAC;AACtF,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAE3F,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,4BAA4B;;;;;GA8CrC"}
@@ -0,0 +1,67 @@
1
+ import { z } from 'zod';
2
+ import { ProductTypes, ProductVariationType } from '@unchainedshop/core-products';
3
+ import { ProductNotFoundError, ProductWrongTypeError } from '../../errors.js';
4
+ import { getNormalizedProductDetails } from '../utils/getNormalizedProductDetails.js';
5
+ const productVariationTypeKeys = Object.keys(ProductVariationType);
6
+ export const CreateProductVariationSchema = {
7
+ productId: z
8
+ .string()
9
+ .min(1)
10
+ .describe('Product ID for which to create the variation. it should only be CONFIGURABLE_PRODUCT type product id'),
11
+ variation: z.object({
12
+ key: z.string().min(1),
13
+ type: z.enum(productVariationTypeKeys).describe('Product variation types'),
14
+ }),
15
+ texts: z
16
+ .array(z.object({
17
+ locale: z.string().min(2),
18
+ title: z.string().optional(),
19
+ subtitle: z.string().optional(),
20
+ }))
21
+ .optional(),
22
+ };
23
+ export const CreateProductVariationZodSchema = z.object(CreateProductVariationSchema);
24
+ export async function createProductVariationHandler(context, params) {
25
+ const { productId, variation, texts } = params;
26
+ const { modules } = context;
27
+ try {
28
+ const product = await modules.products.findProduct({ productId });
29
+ if (!product)
30
+ throw new ProductNotFoundError({ productId });
31
+ if (product.type !== ProductTypes.ConfigurableProduct)
32
+ throw new ProductWrongTypeError({
33
+ productId,
34
+ received: product.type,
35
+ required: ProductTypes.ConfigurableProduct,
36
+ });
37
+ const newVariation = await modules.products.variations.create({
38
+ options: [],
39
+ productId,
40
+ ...variation,
41
+ });
42
+ if (texts) {
43
+ await modules.products.variations.texts.updateVariationTexts(newVariation._id, texts);
44
+ }
45
+ return {
46
+ content: [
47
+ {
48
+ type: 'text',
49
+ text: JSON.stringify({
50
+ product: await getNormalizedProductDetails(productId, context),
51
+ }),
52
+ },
53
+ ],
54
+ };
55
+ }
56
+ catch (error) {
57
+ return {
58
+ content: [
59
+ {
60
+ type: 'text',
61
+ text: `Error creating product variation: ${error.message}`,
62
+ },
63
+ ],
64
+ };
65
+ }
66
+ }
67
+ //# sourceMappingURL=createProductVariationHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProductVariationHandler.js","sourceRoot":"","sources":["../../../src/mcp/tools/createProductVariationHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAEtF,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAGhE,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,sGAAsG,CACvG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KAC3E,CAAC;IACF,KAAK,EAAE,CAAC;SACL,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAGtF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAgB,EAChB,MAAoC;IAEpC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,mBAAmB;YACnD,MAAM,IAAI,qBAAqB,CAAC;gBAC9B,SAAS;gBACT,QAAQ,EAAE,OAAO,CAAC,IAAI;gBACtB,QAAQ,EAAE,YAAY,CAAC,mBAAmB;aAC3C,CAAC,CAAC;QAEL,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;YAC5D,OAAO,EAAE,EAAE;YACX,SAAS;YACT,GAAG,SAAS;SACb,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,YAAY,CAAC,GAAG,EAAE,KAAY,CAAC,CAAC;QAC/F,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,MAAM,2BAA2B,CAAC,SAAS,EAAE,OAAO,CAAC;qBAC/D,CAAC;iBACH;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,qCAAsC,KAAe,CAAC,OAAO,EAAE;iBACtE;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}