@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 @@
1
+ {"version":3,"file":"logoutAllSessions.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/accounts/logoutAllSessions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,CAAM,EAAE,OAAgB;IAClF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEnD,GAAG,CAAC,4BAA4B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAE9C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAC7C;QACE,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,EACD,OAAO,CACR,CAAC;IAEF,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,GAAG,CAAC,yBAAyB,EAAE;YAC7B,QAAQ,EAAE,QAAQ,CAAC,KAAK;YACxB,GAAG,SAAS,CAAC,KAAK;SACnB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;AACxC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Context, Root } from '@unchainedshop/types/api.js';
2
+ export default function unlinkOAuthAccount(root: Root, { provider, oAuthAccountId }: {
3
+ provider: string;
4
+ oAuthAccountId: string;
5
+ }, context: Context): Promise<import("@unchainedshop/types/user.js").User>;
6
+ //# sourceMappingURL=unlinkOAuthAccount.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlinkOAuthAccount.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/mutations/accounts/unlinkOAuthAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAE5D,wBAA8B,kBAAkB,CAC9C,IAAI,EAAE,IAAI,EACV,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,EAC1E,OAAO,EAAE,OAAO,wDAiBjB"}
@@ -0,0 +1,13 @@
1
+ import { log } from '@unchainedshop/logger';
2
+ export default async function unlinkOAuthAccount(root, { provider, oAuthAccountId }, context) {
3
+ const { modules, userId } = context;
4
+ log(`mutation unlinkOAuthAccount ${provider} ${oAuthAccountId}`, {
5
+ userId,
6
+ });
7
+ return modules.users.updateUser({ _id: userId }, {
8
+ $pull: {
9
+ [`services.oauth.${provider}`]: { id: oAuthAccountId },
10
+ },
11
+ }, { upsert: true });
12
+ }
13
+ //# sourceMappingURL=unlinkOAuthAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlinkOAuthAccount.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/accounts/unlinkOAuthAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAG5C,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,kBAAkB,CAC9C,IAAU,EACV,EAAE,QAAQ,EAAE,cAAc,EAAgD,EAC1E,OAAgB;IAEhB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEpC,GAAG,CAAC,+BAA+B,QAAQ,IAAI,cAAc,EAAE,EAAE;QAC/D,MAAM;KACP,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,CAC7B,EAAE,GAAG,EAAE,MAAM,EAAE,EACf;QACE,KAAK,EAAE;YACL,CAAC,kBAAkB,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE;SACvD;KACF,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Context, Root } from '@unchainedshop/types/api.js';
2
+ export default function addAssortmentMedia(root: Root, { media, assortmentId }: {
3
+ media: any;
4
+ assortmentId: any;
5
+ }, context: Context): Promise<import("@unchainedshop/types/assortments.media.js").AssortmentMedia>;
6
+ //# sourceMappingURL=addAssortmentMedia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAssortmentMedia.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/mutations/assortments/addAssortmentMedia.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAG5D,wBAA8B,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;;;CAAA,EAAE,OAAO,EAAE,OAAO,gFAqBrG"}
@@ -0,0 +1,18 @@
1
+ import { log } from '@unchainedshop/logger';
2
+ import { AssortmentNotFoundError, InvalidIdError } from '../../../errors.js';
3
+ export default async function addAssortmentMedia(root, { media, assortmentId }, context) {
4
+ const { modules, services, userId } = context;
5
+ log(`mutation addAssortmentMedia ${assortmentId}`, { userId });
6
+ if (!assortmentId)
7
+ throw new InvalidIdError({ assortmentId });
8
+ if (!(await modules.assortments.assortmentExists({ assortmentId })))
9
+ throw new AssortmentNotFoundError({ assortmentId });
10
+ const file = await services.files.uploadFileFromStream({
11
+ directoryName: 'assortment-media',
12
+ rawFile: media,
13
+ meta: {},
14
+ }, context);
15
+ const assortmentMedia = await modules.assortments.media.create({ assortmentId, mediaId: file._id });
16
+ return assortmentMedia;
17
+ }
18
+ //# sourceMappingURL=addAssortmentMedia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addAssortmentMedia.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/assortments/addAssortmentMedia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE7E,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,OAAgB;IACpG,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC9C,GAAG,CAAC,+BAA+B,YAAY,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAE/D,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,uBAAuB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CACpD;QACE,aAAa,EAAE,kBAAkB;QACjC,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,EAAE;KACT,EACD,OAAO,CACR,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAEpG,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"addProductAssignment.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/mutations/products/addProductAssignment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,wBAA8B,oBAAoB,CAChD,IAAI,EAAE,KAAK,EACX,MAAM,EAAE;IACN,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;CACtC,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,2DA8B7B"}
1
+ {"version":3,"file":"addProductAssignment.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/mutations/products/addProductAssignment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAQpE,wBAA8B,oBAAoB,CAChD,IAAI,EAAE,KAAK,EACX,MAAM,EAAE;IACN,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;CACtC,EACD,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,2DAgC7B"}
@@ -1,6 +1,6 @@
1
1
  import { log } from '@unchainedshop/logger';
2
2
  import { ProductTypes } from '@unchainedshop/core-products';
3
- import { ProductNotFoundError, InvalidIdError, ProductWrongTypeError } from '../../../errors.js';
3
+ import { ProductNotFoundError, InvalidIdError, ProductWrongTypeError, ProductVariationInfinityLoop, } from '../../../errors.js';
4
4
  export default async function addProductAssignment(root, params, { modules, userId }) {
5
5
  const { proxyId, productId, vectors } = params;
6
6
  log(`mutation addProductAssignment ${proxyId} ${productId}`, { userId });
@@ -15,6 +15,8 @@ export default async function addProductAssignment(root, params, { modules, user
15
15
  });
16
16
  if (!proxyProduct)
17
17
  throw new ProductNotFoundError({ proxyId });
18
+ if (productId === proxyId)
19
+ throw new ProductVariationInfinityLoop({ productId });
18
20
  if (proxyProduct.type !== ProductTypes.ConfigurableProduct)
19
21
  throw new ProductWrongTypeError({
20
22
  proxyId,
@@ -1 +1 @@
1
- {"version":3,"file":"addProductAssignment.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/products/addProductAssignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,oBAAoB,CAChD,IAAW,EACX,MAIC,EACD,EAAE,OAAO,EAAE,MAAM,EAAW;IAE5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE/C,GAAG,CAAC,iCAAiC,OAAO,IAAI,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAExD,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAEhD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,SAAS,EAAE,OAAO;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE/D,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,mBAAmB;QACxD,MAAM,IAAI,qBAAqB,CAAC;YAC9B,OAAO;YACP,QAAQ,EAAE,YAAY,CAAC,IAAI;YAC3B,QAAQ,EAAE,YAAY,CAAC,mBAAmB;SAC3C,CAAC,CAAC;IAEL,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,EAAE;QAC/D,OAAO;QACP,OAAO;KACR,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"addProductAssignment.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/products/addProductAssignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,oBAAoB,CAChD,IAAW,EACX,MAIC,EACD,EAAE,OAAO,EAAE,MAAM,EAAW;IAE5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAE/C,GAAG,CAAC,iCAAiC,OAAO,IAAI,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAExD,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;QACxD,MAAM,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAEhD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,SAAS,EAAE,OAAO;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAE/D,IAAI,SAAS,KAAK,OAAO;QAAE,MAAM,IAAI,4BAA4B,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAEjF,IAAI,YAAY,CAAC,IAAI,KAAK,YAAY,CAAC,mBAAmB;QACxD,MAAM,IAAI,qBAAqB,CAAC;YAC9B,OAAO;YACP,QAAQ,EAAE,YAAY,CAAC,IAAI;YAC3B,QAAQ,EAAE,YAAY,CAAC,mBAAmB;SAC3C,CAAC,CAAC;IAEL,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,EAAE;QAC/D,OAAO;QACP,OAAO;KACR,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Context, Root } from '@unchainedshop/types/api.js';
2
+ export default function addProductMedia(root: Root, { media, productId }: {
3
+ media: any;
4
+ productId: any;
5
+ }, context: Context): Promise<import("@unchainedshop/types/products.media.js").ProductMedia>;
6
+ //# sourceMappingURL=addProductMedia.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addProductMedia.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/mutations/products/addProductMedia.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAG5D,wBAA8B,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;;;CAAA,EAAE,OAAO,EAAE,OAAO,0EAmB/F"}
@@ -0,0 +1,18 @@
1
+ import { log } from '@unchainedshop/logger';
2
+ import { ProductNotFoundError, InvalidIdError } from '../../../errors.js';
3
+ export default async function addProductMedia(root, { media, productId }, context) {
4
+ const { modules, services, userId } = context;
5
+ log(`mutation addProductMedia ${productId}`, { userId });
6
+ if (!productId)
7
+ throw new InvalidIdError({ productId });
8
+ const product = await modules.products.findProduct({ productId });
9
+ if (!product)
10
+ throw new ProductNotFoundError({ productId });
11
+ const file = await services.files.uploadFileFromStream({
12
+ directoryName: 'product-media',
13
+ rawFile: media,
14
+ meta: { productId },
15
+ }, context);
16
+ return modules.products.media.create({ productId, mediaId: file._id });
17
+ }
18
+ //# sourceMappingURL=addProductMedia.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addProductMedia.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/products/addProductMedia.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,OAAgB;IAC9F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC9C,GAAG,CAAC,4BAA4B,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,cAAc,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CACpD;QACE,aAAa,EAAE,eAAe;QAC9B,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,EAAE,SAAS,EAAE;KACpB,EACD,OAAO,CACR,CAAC;IAEF,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Context, Root } from '@unchainedshop/types/api.js';
2
+ export default function updateUserAvatar(root: Root, params: {
3
+ avatar: any;
4
+ userId: string;
5
+ }, context: Context): Promise<import("@unchainedshop/types/user.js").User>;
6
+ //# sourceMappingURL=updateUserAvatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateUserAvatar.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/mutations/users/updateUserAvatar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAG5D,wBAA8B,gBAAgB,CAC5C,IAAI,EAAE,IAAI,EACV,MAAM,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACvC,OAAO,EAAE,OAAO,wDA+BjB"}
@@ -0,0 +1,22 @@
1
+ import { log } from '@unchainedshop/logger';
2
+ import { UserNotFoundError } from '../../../errors.js';
3
+ export default async function updateUserAvatar(root, params, context) {
4
+ const { modules, services, userId } = context;
5
+ const normalizedUserId = params.userId || userId;
6
+ log(`mutation updateUserAvatar ${normalizedUserId}`, { userId });
7
+ if (!(await modules.users.userExists({ userId: normalizedUserId })))
8
+ throw new UserNotFoundError({ userId: normalizedUserId });
9
+ const user = await modules.users.findUserById(normalizedUserId);
10
+ const file = await services.files.uploadFileFromStream({
11
+ directoryName: 'user-avatars',
12
+ rawFile: params.avatar,
13
+ meta: { userId: normalizedUserId },
14
+ }, context);
15
+ if (user?.avatarId) {
16
+ await services.files.removeFiles({
17
+ fileIds: [user.avatarId],
18
+ }, context);
19
+ }
20
+ return modules.users.updateAvatar(normalizedUserId, file._id);
21
+ }
22
+ //# sourceMappingURL=updateUserAvatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateUserAvatar.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/users/updateUserAvatar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,gBAAgB,CAC5C,IAAU,EACV,MAAuC,EACvC,OAAgB;IAEhB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC9C,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC;IAEjD,GAAG,CAAC,6BAA6B,gBAAgB,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEjE,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACjE,MAAM,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAEhE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CACpD;QACE,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE,MAAM,CAAC,MAAM;QACtB,IAAI,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE;KACnC,EACD,OAAO,CACR,CAAC;IAEF,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;QACnB,MAAM,QAAQ,CAAC,KAAK,CAAC,WAAW,CAC9B;YACE,OAAO,EAAE,CAAC,IAAI,CAAC,QAAkB,CAAC;SACnC,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAChE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Context } from '@unchainedshop/types/api.js';
2
+ import { User } from '@unchainedshop/types/user.js';
3
+ export declare const getOrderCart: (params: {
4
+ orderId?: string;
5
+ user: User;
6
+ }, context: Context) => Promise<import("@unchainedshop/types/orders.js").Order>;
7
+ //# sourceMappingURL=getOrderCart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCart.d.ts","sourceRoot":"","sources":["../../../../src/resolvers/mutations/utils/getOrderCart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAGpD,eAAO,MAAM,YAAY,WAAkB;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,WAAW,OAAO,4DAc5F,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { OrderNotFoundError } from '../../../errors.js';
2
+ export const getOrderCart = async (params, context) => {
3
+ const { modules, services } = context;
4
+ const { orderId, user } = params;
5
+ if (orderId) {
6
+ const order = await modules.orders.findOrder({ orderId });
7
+ if (!order)
8
+ throw new OrderNotFoundError({ orderId });
9
+ return order;
10
+ }
11
+ return services.orders.nextUserCart({ user, countryCode: context.countryContext, forceCartCreation: true }, context);
12
+ };
13
+ //# sourceMappingURL=getOrderCart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getOrderCart.js","sourceRoot":"","sources":["../../../../src/resolvers/mutations/utils/getOrderCart.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,MAAwC,EAAE,OAAgB,EAAE,EAAE;IAC/F,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IAEjC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,kBAAkB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,CAAC,YAAY,CACjC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,IAAI,EAAE,EACtE,OAAO,CACR,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { DeliveryProvider } from '@unchainedshop/types/delivery.js';
2
+ import { Product } from '@unchainedshop/types/products.js';
3
+ import { WarehousingProvider } from '@unchainedshop/types/warehousing.js';
4
+ export declare const Dispatch: {
5
+ _id: (params: {
6
+ product: Product;
7
+ deliveryProvider: DeliveryProvider;
8
+ warehousingProvider: WarehousingProvider;
9
+ referenceDate: Date;
10
+ quantity: number;
11
+ country: string;
12
+ userId?: string;
13
+ }) => string;
14
+ };
15
+ //# sourceMappingURL=dispatch-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch-types.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/dispatch-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,eAAO,MAAM,QAAQ;kBACL;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,gBAAgB,CAAC;QACnC,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,aAAa,EAAE,IAAI,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;CAeF,CAAC"}
@@ -0,0 +1,16 @@
1
+ import crypto from 'crypto';
2
+ export const Dispatch = {
3
+ _id: (params) => crypto
4
+ .createHash('sha256')
5
+ .update([
6
+ params.product._id,
7
+ params.deliveryProvider._id,
8
+ params.warehousingProvider._id,
9
+ params.referenceDate,
10
+ params.quantity,
11
+ params.country,
12
+ params.userId || 'ANONYMOUS',
13
+ ].join(''))
14
+ .digest('hex'),
15
+ };
16
+ //# sourceMappingURL=dispatch-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/dispatch-types.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAK5B,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,GAAG,EAAE,CAAC,MAQL,EAAE,EAAE,CACH,MAAM;SACH,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CACL;QACE,MAAM,CAAC,OAAO,CAAC,GAAG;QAClB,MAAM,CAAC,gBAAgB,CAAC,GAAG;QAC3B,MAAM,CAAC,mBAAmB,CAAC,GAAG;QAC9B,MAAM,CAAC,aAAa;QACpB,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,MAAM,IAAI,WAAW;KAC7B,CAAC,IAAI,CAAC,EAAE,CAAC,CACX;SACA,MAAM,CAAC,KAAK,CAAC;CACnB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Context } from '@unchainedshop/types/api.js';
2
+ export declare const OAuthAccount: {
3
+ _id: (account: any) => any;
4
+ provider: (account: any, _: never, { modules }: Context) => Promise<import("@unchainedshop/types/accounts.js").IOAuth2Adapter>;
5
+ };
6
+ //# sourceMappingURL=oauth-account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-account.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/oauth-account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,eAAO,MAAM,YAAY;;gCAEM,KAAK,eAAe,OAAO;CAGzD,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const OAuthAccount = {
2
+ _id: (account) => account.id,
3
+ provider: async (account, _, { modules }) => {
4
+ return modules.accounts.oAuth2.getProvider(account.provider);
5
+ },
6
+ };
7
+ //# sourceMappingURL=oauth-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-account.js","sourceRoot":"","sources":["../../../src/resolvers/type/oauth-account.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE;IAC5B,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAQ,EAAE,EAAE,OAAO,EAAW,EAAE,EAAE;QAC1D,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/D,CAAC;CACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const OAuthProvider: {
2
+ _id: (adapter: any) => any;
3
+ clientId: (adapter: any) => any;
4
+ scopes: (adapter: any) => any;
5
+ };
6
+ //# sourceMappingURL=oauth-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-provider.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/oauth-provider.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;;CAIzB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const OAuthProvider = {
2
+ _id: (adapter) => adapter.provider,
3
+ clientId: (adapter) => adapter.config?.clientId,
4
+ scopes: (adapter) => adapter.config?.scopes || [],
5
+ };
6
+ //# sourceMappingURL=oauth-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-provider.js","sourceRoot":"","sources":["../../../src/resolvers/type/oauth-provider.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ;IAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ;IAC/C,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE;CAClD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { DeliveryProvider } from '@unchainedshop/types/delivery.js';
2
+ import { Product } from '@unchainedshop/types/products.js';
3
+ import { WarehousingProvider } from '@unchainedshop/types/warehousing.js';
4
+ export declare const Stock: {
5
+ _id: (params: {
6
+ product: Product;
7
+ deliveryProvider: DeliveryProvider;
8
+ warehousingProvider: WarehousingProvider;
9
+ referenceDate: Date;
10
+ country: string;
11
+ userId?: string;
12
+ }) => string;
13
+ };
14
+ //# sourceMappingURL=stock-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stock-types.d.ts","sourceRoot":"","sources":["../../../src/resolvers/type/stock-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,eAAO,MAAM,KAAK;kBACF;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,gBAAgB,EAAE,gBAAgB,CAAC;QACnC,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,aAAa,EAAE,IAAI,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;CAcF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import crypto from 'crypto';
2
+ export const Stock = {
3
+ _id: (params) => crypto
4
+ .createHash('sha256')
5
+ .update([
6
+ params.product._id,
7
+ params.deliveryProvider._id,
8
+ params.warehousingProvider._id,
9
+ params.referenceDate,
10
+ params.country,
11
+ params.userId || 'ANONYMOUS',
12
+ ].join(''))
13
+ .digest('hex'),
14
+ };
15
+ //# sourceMappingURL=stock-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stock-types.js","sourceRoot":"","sources":["../../../src/resolvers/type/stock-types.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAK5B,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,GAAG,EAAE,CAAC,MAOL,EAAE,EAAE,CACH,MAAM;SACH,UAAU,CAAC,QAAQ,CAAC;SACpB,MAAM,CACL;QACE,MAAM,CAAC,OAAO,CAAC,GAAG;QAClB,MAAM,CAAC,gBAAgB,CAAC,GAAG;QAC3B,MAAM,CAAC,mBAAmB,CAAC,GAAG;QAC9B,MAAM,CAAC,aAAa;QACpB,MAAM,CAAC,OAAO;QACd,MAAM,CAAC,MAAM,IAAI,WAAW;KAC7B,CAAC,IAAI,CAAC,EAAE,CAAC,CACX;SACA,MAAM,CAAC,KAAK,CAAC;CACnB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { IncomingMessage, OutgoingMessage } from 'http';
2
+ import { UnchainedUserContext } from '@unchainedshop/types/api.js';
3
+ import { UnchainedCore } from '@unchainedshop/types/core.js';
4
+ export declare const getUserContext: (req: IncomingMessage & {
5
+ cookies?: any;
6
+ }, res: OutgoingMessage, unchainedAPI: UnchainedCore) => Promise<UnchainedUserContext>;
7
+ //# sourceMappingURL=user-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-context.d.ts","sourceRoot":"","sources":["../src/user-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AA0C7D,eAAO,MAAM,cAAc,QACpB,eAAe,GAAG;IAAE,OAAO,CAAC,EAAE,GAAG,CAAA;CAAE,OACnC,eAAe,gBACN,aAAa,KAC1B,OAAO,CAAC,oBAAoB,CAsD9B,CAAC"}
@@ -0,0 +1,76 @@
1
+ import cookie from 'cookie';
2
+ function isString(input) {
3
+ return typeof input === 'string' && Object.prototype.toString.call(input) === '[object String]';
4
+ }
5
+ const { UNCHAINED_COOKIE_NAME = 'unchained_token', UNCHAINED_COOKIE_PATH = '/', UNCHAINED_COOKIE_DOMAIN, UNCHAINED_COOKIE_SAMESITE, UNCHAINED_COOKIE_INSECURE, } = process.env;
6
+ function setLoginToken(res, token, expires) {
7
+ const cookieName = UNCHAINED_COOKIE_NAME;
8
+ const domain = UNCHAINED_COOKIE_DOMAIN;
9
+ const path = UNCHAINED_COOKIE_PATH;
10
+ const secure = UNCHAINED_COOKIE_INSECURE ? false : true;
11
+ const sameSite = ({
12
+ none: 'none',
13
+ lax: 'lax',
14
+ strict: 'strict',
15
+ '1': true,
16
+ '0': false,
17
+ }[UNCHAINED_COOKIE_SAMESITE?.trim()?.toLowerCase()] || false);
18
+ if (!cookieName)
19
+ return;
20
+ const authCookie = cookie.serialize(cookieName, token || null, {
21
+ domain,
22
+ httpOnly: true,
23
+ path,
24
+ expires: token && expires ? expires : undefined,
25
+ maxAge: token ? undefined : -1,
26
+ sameSite,
27
+ secure,
28
+ });
29
+ res.setHeader('Set-Cookie', authCookie);
30
+ }
31
+ export const getUserContext = async (req, res, unchainedAPI) => {
32
+ // there is a possible current user connected!
33
+ const cookieName = UNCHAINED_COOKIE_NAME;
34
+ let loginToken = req.cookies?.[cookieName];
35
+ if (req.headers.authorization) {
36
+ const [type, token] = req.headers.authorization.split(' ');
37
+ if (type === 'Bearer') {
38
+ loginToken = token;
39
+ }
40
+ }
41
+ if (loginToken) {
42
+ // throw an error if the token is not a string
43
+ if (!isString(loginToken))
44
+ throw new Error('Access Token is not a string');
45
+ // the hashed token is the key to find the possible current user in the db
46
+ const hashedToken = unchainedAPI.modules.accounts.createHashLoginToken(loginToken);
47
+ const currentUser = await unchainedAPI.modules.users.findUserByToken({
48
+ hashedToken,
49
+ });
50
+ // the current user exists
51
+ if (currentUser) {
52
+ // find the right login token corresponding, the current user may have
53
+ // several sessions logged on different browsers / computers
54
+ const tokenInformation = currentUser.services.resume.loginTokens.find((tokenInfo) => tokenInfo.hashedToken === hashedToken); // eslint-disable-line
55
+ // true if the token is expired
56
+ const isExpired = new Date(tokenInformation.when) < new Date();
57
+ // if the token is still valid, give access to the current user
58
+ // information in the resolvers context
59
+ if (!isExpired) {
60
+ // return a new context object with the current user & her id
61
+ return {
62
+ user: currentUser,
63
+ userId: currentUser._id,
64
+ loginToken: loginToken,
65
+ setLoginToken,
66
+ };
67
+ }
68
+ }
69
+ // If there is no user with this token or the token is expires/invalid,
70
+ // we should remove that cookie from the client
71
+ setLoginToken(res, null);
72
+ return { loginToken: loginToken, setLoginToken };
73
+ }
74
+ return { setLoginToken };
75
+ };
76
+ //# sourceMappingURL=user-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-context.js","sourceRoot":"","sources":["../src/user-context.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/api",
3
- "version": "3.1.12",
3
+ "version": "3.1.13",
4
4
  "main": "lib/api-index.js",
5
5
  "types": "lib/api-index.d.ts",
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  },
32
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
33
33
  "peerDependencies": {
34
- "@ethereumjs/util": ">= 8 < 10",
34
+ "@ethereumjs/util": ">= 8 < 11",
35
35
  "@fastify/cookie": ">= 11.0 < 12",
36
36
  "@fastify/session": ">= 11.0 < 12",
37
37
  "connect-mongo": ">= 5.1.0 < 6",
@@ -71,11 +71,11 @@
71
71
  }
72
72
  },
73
73
  "dependencies": {
74
- "@unchainedshop/core": "^3.1.7",
75
- "@unchainedshop/events": "^3.1.7",
76
- "@unchainedshop/logger": "^3.1.7",
77
- "@unchainedshop/roles": "^3.1.7",
78
- "@unchainedshop/utils": "^3.1.7",
74
+ "@unchainedshop/core": "^3.1.13",
75
+ "@unchainedshop/events": "^3.1.13",
76
+ "@unchainedshop/logger": "^3.1.13",
77
+ "@unchainedshop/roles": "^3.1.13",
78
+ "@unchainedshop/utils": "^3.1.13",
79
79
  "accounting": "0.4.1",
80
80
  "dataloader": "^2.2.3",
81
81
  "expiry-map": "^2.0.0",
@@ -84,16 +84,16 @@
84
84
  "p-memoize": "^7.1.1"
85
85
  },
86
86
  "devDependencies": {
87
- "@ethereumjs/util": "^9.1.0",
87
+ "@ethereumjs/util": "^10.0.0",
88
88
  "@fastify/cookie": "^11.0.2",
89
89
  "@fastify/session": "^11.1.0",
90
- "@types/express": "^5.0.1",
91
- "@types/node": "^22.13.14",
90
+ "@types/express": "^5.0.3",
91
+ "@types/node": "^24.0.4",
92
92
  "express": "^5.1.0",
93
93
  "express-session": "^1.18.1",
94
- "fastify": "^5.2.2",
94
+ "fastify": "^5.4.0",
95
95
  "passport": "^0.7.0",
96
- "tsx": "^4.19.3",
97
- "typescript": "^5.8.2"
96
+ "tsx": "^4.20.3",
97
+ "typescript": "^5.8.3"
98
98
  }
99
99
  }
package/src/errors.ts CHANGED
@@ -40,6 +40,11 @@ export const ProductWrongTypeError = createError(
40
40
  'The current type of the product does not allow this operation',
41
41
  );
42
42
 
43
+ export const ProductVariationInfinityLoop = createError(
44
+ 'ProductInfinityLoop',
45
+ 'Assigning the proxy to itself as child in product assignments is not allowed, this would create an infinite loop',
46
+ );
47
+
43
48
  export const AssortmentNotFoundError = createError('AssortmentNotFoundError', 'Assortment not found');
44
49
 
45
50
  export const AssortmentFilterNotFoundError = createError(
@@ -6,7 +6,7 @@ const testTexts = [
6
6
  // 1 has translations in French and German
7
7
  { locale: 'fr', _id: '1', entityId: '1' },
8
8
  { locale: 'de', _id: '2', entityId: '1' },
9
-
9
+
10
10
  // 2 only has Ialien translations
11
11
  { locale: 'it', _id: '3', entityId: '2' },
12
12
 
@@ -19,52 +19,41 @@ const testTexts = [
19
19
 
20
20
  describe('buildLocaleMap', () => {
21
21
  it('Mixed usage of default locale and forced languages', () => {
22
- const queries = [
23
- { locale: 'de-CH' },
24
- { locale: 'fr' },
25
- { locale: 'it' },
26
- ];
22
+ const queries = [{ locale: 'de-CH' }, { locale: 'fr' }, { locale: 'it' }];
27
23
  const expected = {
28
- 'de': ['de-CH', 'fr', 'it'],
29
- 'fr': ['fr'],
30
- 'it': ['it'],
24
+ de: ['de-CH', 'fr', 'it'],
25
+ fr: ['fr'],
26
+ it: ['it'],
31
27
  };
32
28
  const result = buildLocaleMap(queries, testTexts);
33
29
  assert.deepStrictEqual(result, expected);
34
30
  });
35
31
 
36
32
  it('Mixed usage of forced languages', () => {
37
- const queries = [
38
- { locale: 'fr' },
39
- { locale: 'it' },
40
- ];
33
+ const queries = [{ locale: 'fr' }, { locale: 'it' }];
41
34
  const expected = {
42
- 'de': ['fr', 'it'],
43
- 'fr': ['fr'],
44
- 'it': ['it'],
35
+ de: ['fr', 'it'],
36
+ fr: ['fr'],
37
+ it: ['it'],
45
38
  };
46
39
  const result = buildLocaleMap(queries, testTexts);
47
40
  assert.deepStrictEqual(result, expected);
48
41
  });
49
42
 
50
43
  it('Only default locale', () => {
51
- const queries = [
52
- { locale: 'de_CH' },
53
- ];
44
+ const queries = [{ locale: 'de_CH' }];
54
45
  const expected = {
55
- 'de': ['de_CH'],
46
+ de: ['de_CH'],
56
47
  };
57
48
  const result = buildLocaleMap(queries, testTexts);
58
49
  assert.deepStrictEqual(result, expected);
59
50
  });
60
51
 
61
52
  it('Only one forced language locale', () => {
62
- const queries = [
63
- { locale: 'fr' },
64
- ];
53
+ const queries = [{ locale: 'fr' }];
65
54
  const expected = {
66
- 'fr': ['fr'],
67
- 'de': ['fr'],
55
+ fr: ['fr'],
56
+ de: ['fr'],
68
57
  };
69
58
  const result = buildLocaleMap(queries, testTexts);
70
59
  assert.deepStrictEqual(result, expected);
@@ -36,4 +36,4 @@ export default function buildLocaleMap(
36
36
  }
37
37
  }
38
38
  return localeMap;
39
- }
39
+ }