@hszrdm/core 1.7.0 → 1.9.0

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 (233) hide show
  1. package/.medusa/server/src/admin/index.js +6832 -5418
  2. package/.medusa/server/src/admin/index.mjs +6834 -5420
  3. package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.d.ts +2 -0
  4. package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.js +26 -0
  5. package/.medusa/server/src/api/admin/billingo/advance/route.d.ts +8 -0
  6. package/.medusa/server/src/api/admin/billingo/advance/route.js +55 -0
  7. package/.medusa/server/src/api/admin/billingo/partial-credit/route.d.ts +8 -0
  8. package/.medusa/server/src/api/admin/billingo/partial-credit/route.js +69 -0
  9. package/.medusa/server/src/api/admin/documents/[id]/route.d.ts +22 -0
  10. package/.medusa/server/src/api/admin/documents/[id]/route.js +107 -0
  11. package/.medusa/server/src/api/admin/documents/route.d.ts +21 -0
  12. package/.medusa/server/src/api/admin/documents/route.js +117 -0
  13. package/.medusa/server/src/api/admin/google-ads/diagnostics/route.d.ts +2 -0
  14. package/.medusa/server/src/api/admin/google-ads/diagnostics/route.js +26 -0
  15. package/.medusa/server/src/api/admin/google-ads/oauth/start/route.d.ts +2 -0
  16. package/.medusa/server/src/api/admin/google-ads/oauth/start/route.js +27 -0
  17. package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.d.ts +2 -0
  18. package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.js +69 -0
  19. package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.d.ts +2 -0
  20. package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.js +26 -0
  21. package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.d.ts +2 -0
  22. package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.js +25 -0
  23. package/.medusa/server/src/api/admin/integrations/[key]/verify/route.d.ts +2 -0
  24. package/.medusa/server/src/api/admin/integrations/[key]/verify/route.js +79 -0
  25. package/.medusa/server/src/api/admin/orders/[id]/billingo/route.js +10 -1
  26. package/.medusa/server/src/api/admin/orders/[id]/foxpost/create/route.d.ts +3 -5
  27. package/.medusa/server/src/api/admin/orders/[id]/foxpost/create/route.js +7 -14
  28. package/.medusa/server/src/api/admin/orders/[id]/foxpost/label/route.js +12 -6
  29. package/.medusa/server/src/api/admin/orders/[id]/gls/create/route.d.ts +2 -1
  30. package/.medusa/server/src/api/admin/orders/[id]/gls/create/route.js +6 -14
  31. package/.medusa/server/src/api/admin/orders/[id]/gls/label/route.js +9 -4
  32. package/.medusa/server/src/api/admin/orders/[id]/shipping/label/route.js +4 -2
  33. package/.medusa/server/src/api/admin/orders/[id]/shipping/route.d.ts +1 -2
  34. package/.medusa/server/src/api/admin/orders/[id]/shipping/route.js +46 -8
  35. package/.medusa/server/src/api/admin/shipping/bulk/create/route.d.ts +3 -6
  36. package/.medusa/server/src/api/admin/shipping/bulk/create/route.js +6 -57
  37. package/.medusa/server/src/api/admin/shipping/bulk/labels/route.js +4 -2
  38. package/.medusa/server/src/api/admin/shipping/mpl/close/route.d.ts +1 -1
  39. package/.medusa/server/src/api/admin/shipping/mpl/close/route.js +48 -70
  40. package/.medusa/server/src/api/admin/shipping/orders/route.js +19 -4
  41. package/.medusa/server/src/api/auth/google-ads/callback/route.d.ts +2 -0
  42. package/.medusa/server/src/api/auth/google-ads/callback/route.js +58 -0
  43. package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.d.ts +2 -0
  44. package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.js +33 -0
  45. package/.medusa/server/src/api/feeds/google-merchant.xml/route.js +5 -3
  46. package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.d.ts +2 -0
  47. package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.js +211 -0
  48. package/.medusa/server/src/api/hooks/simplepay/ipn/route.js +113 -23
  49. package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.d.ts +2 -0
  50. package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.js +113 -0
  51. package/.medusa/server/src/api/store/arukereso/backlink/route.d.ts +2 -0
  52. package/.medusa/server/src/api/store/arukereso/backlink/route.js +73 -0
  53. package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.d.ts +2 -0
  54. package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.js +84 -0
  55. package/.medusa/server/src/api/store/arukereso/widget/route.d.ts +2 -0
  56. package/.medusa/server/src/api/store/arukereso/widget/route.js +64 -0
  57. package/.medusa/server/src/api/store/cms/entries/[slug]/route.js +3 -2
  58. package/.medusa/server/src/api/store/cms/entries/route.js +3 -2
  59. package/.medusa/server/src/api/store/documents/route.d.ts +2 -0
  60. package/.medusa/server/src/api/store/documents/route.js +84 -0
  61. package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.d.ts +2 -0
  62. package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.js +50 -0
  63. package/.medusa/server/src/config.d.ts +3 -3
  64. package/.medusa/server/src/config.js +70 -87
  65. package/.medusa/server/src/core/documents.d.ts +31 -0
  66. package/.medusa/server/src/core/documents.js +47 -0
  67. package/.medusa/server/src/core/version.d.ts +2 -2
  68. package/.medusa/server/src/core/version.js +2 -2
  69. package/.medusa/server/src/jobs/mpl-status-sync.js +10 -6
  70. package/.medusa/server/src/jobs/shipping-status-sync-eligibility.d.ts +5 -0
  71. package/.medusa/server/src/jobs/shipping-status-sync-eligibility.js +26 -0
  72. package/.medusa/server/src/jobs/shipping-status-sync.d.ts +6 -0
  73. package/.medusa/server/src/jobs/shipping-status-sync.js +63 -28
  74. package/.medusa/server/src/lib/modules/arukereso/index.d.ts +1 -0
  75. package/.medusa/server/src/lib/modules/arukereso/index.js +2 -1
  76. package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.d.ts +19 -0
  77. package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.js +100 -0
  78. package/.medusa/server/src/lib/modules/billingo/actions.js +42 -12
  79. package/.medusa/server/src/lib/modules/billingo/advance.d.ts +68 -0
  80. package/.medusa/server/src/lib/modules/billingo/advance.js +309 -0
  81. package/.medusa/server/src/lib/modules/billingo/automation.js +49 -9
  82. package/.medusa/server/src/lib/modules/billingo/client.d.ts +5 -2
  83. package/.medusa/server/src/lib/modules/billingo/client.js +17 -8
  84. package/.medusa/server/src/lib/modules/billingo/index.d.ts +2 -0
  85. package/.medusa/server/src/lib/modules/billingo/index.js +3 -1
  86. package/.medusa/server/src/lib/modules/billingo/mapper.d.ts +42 -2
  87. package/.medusa/server/src/lib/modules/billingo/mapper.js +77 -4
  88. package/.medusa/server/src/lib/modules/billingo/partial-credit.d.ts +55 -0
  89. package/.medusa/server/src/lib/modules/billingo/partial-credit.js +338 -0
  90. package/.medusa/server/src/lib/modules/billingo/types.d.ts +21 -2
  91. package/.medusa/server/src/lib/modules/google-ads/adjustments.d.ts +21 -0
  92. package/.medusa/server/src/lib/modules/google-ads/adjustments.js +146 -0
  93. package/.medusa/server/src/lib/modules/google-ads/api.d.ts +23 -0
  94. package/.medusa/server/src/lib/modules/google-ads/api.js +171 -0
  95. package/.medusa/server/src/lib/modules/google-ads/diagnostics.d.ts +47 -0
  96. package/.medusa/server/src/lib/modules/google-ads/diagnostics.js +164 -0
  97. package/.medusa/server/src/lib/modules/google-merchant/category-fields.d.ts +7 -0
  98. package/.medusa/server/src/lib/modules/google-merchant/category-fields.js +210 -0
  99. package/.medusa/server/src/lib/modules/google-merchant/data-source.d.ts +17 -0
  100. package/.medusa/server/src/lib/modules/google-merchant/data-source.js +132 -0
  101. package/.medusa/server/src/lib/modules/google-merchant/diagnostics.d.ts +33 -0
  102. package/.medusa/server/src/lib/modules/google-merchant/diagnostics.js +113 -0
  103. package/.medusa/server/src/lib/modules/google-merchant/index.d.ts +5 -0
  104. package/.medusa/server/src/lib/modules/google-merchant/index.js +6 -1
  105. package/.medusa/server/src/lib/modules/google-merchant/merchant-api.d.ts +18 -0
  106. package/.medusa/server/src/lib/modules/google-merchant/merchant-api.js +120 -0
  107. package/.medusa/server/src/lib/modules/google-merchant/shipping.d.ts +13 -0
  108. package/.medusa/server/src/lib/modules/google-merchant/shipping.js +97 -0
  109. package/.medusa/server/src/lib/modules/google-tag-manager/api.d.ts +1 -0
  110. package/.medusa/server/src/lib/modules/google-tag-manager/api.js +3 -0
  111. package/.medusa/server/src/lib/modules/google-tag-manager/index.d.ts +1 -0
  112. package/.medusa/server/src/lib/modules/google-tag-manager/index.js +3 -0
  113. package/.medusa/server/src/lib/modules/google-tag-manager/sync.d.ts +1 -0
  114. package/.medusa/server/src/lib/modules/google-tag-manager/sync.js +3 -0
  115. package/.medusa/server/src/lib/modules/shipping/actions.d.ts +2 -2
  116. package/.medusa/server/src/lib/modules/shipping/actions.js +171 -352
  117. package/.medusa/server/src/lib/modules/shipping/durable-create.d.ts +2 -1
  118. package/.medusa/server/src/lib/modules/shipping/durable-create.js +33 -5
  119. package/.medusa/server/src/lib/modules/shipping/idempotency.js +4 -2
  120. package/.medusa/server/src/lib/modules/shipping/index.d.ts +1 -0
  121. package/.medusa/server/src/lib/modules/shipping/index.js +2 -1
  122. package/.medusa/server/src/lib/modules/shipping/native-fulfillment.d.ts +73 -0
  123. package/.medusa/server/src/lib/modules/shipping/native-fulfillment.js +191 -0
  124. package/.medusa/server/src/lib/modules/shipping/operations.d.ts +28 -0
  125. package/.medusa/server/src/lib/modules/shipping/operations.js +9 -1
  126. package/.medusa/server/src/lib/modules/shipping/print-eligibility.d.ts +12 -0
  127. package/.medusa/server/src/lib/modules/shipping/print-eligibility.js +34 -0
  128. package/.medusa/server/src/lib/modules/shipping/recipient-email.d.ts +18 -0
  129. package/.medusa/server/src/lib/modules/shipping/recipient-email.js +29 -0
  130. package/.medusa/server/src/lib/modules/shipping/resolve.d.ts +9 -0
  131. package/.medusa/server/src/lib/modules/shipping/resolve.js +65 -0
  132. package/.medusa/server/src/lib/modules/shipping/types.d.ts +1 -1
  133. package/.medusa/server/src/modules/core-documents/index.d.ts +38 -0
  134. package/.medusa/server/src/modules/core-documents/index.js +18 -0
  135. package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.d.ts +5 -0
  136. package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.js +22 -0
  137. package/.medusa/server/src/modules/core-documents/models/core-document-assignment.d.ts +9 -0
  138. package/.medusa/server/src/modules/core-documents/models/core-document-assignment.js +18 -0
  139. package/.medusa/server/src/modules/core-documents/models/core-document.d.ts +18 -0
  140. package/.medusa/server/src/modules/core-documents/models/core-document.js +27 -0
  141. package/.medusa/server/src/modules/core-documents/service.d.ts +38 -0
  142. package/.medusa/server/src/modules/core-documents/service.js +13 -0
  143. package/.medusa/server/src/modules/integration-operation/migrations/Migration20261104010000.d.ts +5 -0
  144. package/.medusa/server/src/modules/integration-operation/migrations/Migration20261104010000.js +34 -0
  145. package/.medusa/server/src/modules/integration-operation/models/integration-operation.d.ts +1 -1
  146. package/.medusa/server/src/modules/integration-operation/models/integration-operation.js +2 -2
  147. package/.medusa/server/src/modules/integration-operation/service.d.ts +1 -1
  148. package/.medusa/server/src/modules/integration-operation/state.d.ts +1 -0
  149. package/.medusa/server/src/modules/integration-operation/state.js +11 -50
  150. package/.medusa/server/src/modules/integration-operation/types.d.ts +1 -1
  151. package/.medusa/server/src/modules/integration-settings/arukereso-registration.js +19 -2
  152. package/.medusa/server/src/modules/integration-settings/connection-test.js +20 -4
  153. package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.d.ts +2 -0
  154. package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.js +49 -0
  155. package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.d.ts +1 -0
  156. package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.js +35 -0
  157. package/.medusa/server/src/modules/integration-settings/google-merchant-registration.js +23 -2
  158. package/.medusa/server/src/modules/integration-settings/hot-reload-registration.d.ts +1 -0
  159. package/.medusa/server/src/modules/integration-settings/hot-reload-registration.js +23 -0
  160. package/.medusa/server/src/modules/integration-settings/index.d.ts +4 -0
  161. package/.medusa/server/src/modules/integration-settings/index.js +5 -1
  162. package/.medusa/server/src/modules/integration-settings/manager.js +38 -4
  163. package/.medusa/server/src/modules/integration-settings/registry.js +1 -14
  164. package/.medusa/server/src/modules/integration-settings/reloadable.d.ts +10 -0
  165. package/.medusa/server/src/modules/integration-settings/reloadable.js +58 -0
  166. package/.medusa/server/src/modules/integration-settings/runtime-snapshot.d.ts +9 -0
  167. package/.medusa/server/src/modules/integration-settings/runtime-snapshot.js +48 -3
  168. package/.medusa/server/src/modules/integration-settings/simplepay-registration.d.ts +1 -0
  169. package/.medusa/server/src/modules/integration-settings/simplepay-registration.js +18 -0
  170. package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -5
  171. package/.medusa/server/src/providers/csomagpiac/client.d.ts +25 -0
  172. package/.medusa/server/src/providers/csomagpiac/client.js +144 -0
  173. package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.d.ts +50 -0
  174. package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.js +248 -0
  175. package/.medusa/server/src/providers/csomagpiac/index.d.ts +7 -0
  176. package/.medusa/server/src/providers/csomagpiac/index.js +30 -0
  177. package/.medusa/server/src/providers/csomagpiac/service.d.ts +60 -0
  178. package/.medusa/server/src/providers/csomagpiac/service.js +296 -0
  179. package/.medusa/server/src/providers/csomagpiac/types.d.ts +66 -0
  180. package/.medusa/server/src/providers/csomagpiac/types.js +27 -0
  181. package/.medusa/server/src/providers/dpd/fulfillment-provider.d.ts +5 -1
  182. package/.medusa/server/src/providers/dpd/fulfillment-provider.js +94 -27
  183. package/.medusa/server/src/providers/dpd/service.d.ts +2 -0
  184. package/.medusa/server/src/providers/dpd/service.js +32 -4
  185. package/.medusa/server/src/providers/dpd/types.d.ts +1 -0
  186. package/.medusa/server/src/providers/dpd/types.js +1 -1
  187. package/.medusa/server/src/providers/email/service.d.ts +7 -6
  188. package/.medusa/server/src/providers/email/service.js +51 -25
  189. package/.medusa/server/src/providers/foxpost/foxpost-service.d.ts +3 -1
  190. package/.medusa/server/src/providers/foxpost/foxpost-service.js +19 -17
  191. package/.medusa/server/src/providers/foxpost/fulfillment-provider.d.ts +10 -3
  192. package/.medusa/server/src/providers/foxpost/fulfillment-provider.js +99 -69
  193. package/.medusa/server/src/providers/foxpost/types.d.ts +1 -0
  194. package/.medusa/server/src/providers/gls/fulfillment-provider.d.ts +4 -0
  195. package/.medusa/server/src/providers/gls/fulfillment-provider.js +87 -17
  196. package/.medusa/server/src/providers/gls/gls-service.d.ts +19 -1
  197. package/.medusa/server/src/providers/gls/gls-service.js +32 -64
  198. package/.medusa/server/src/providers/gls/types.d.ts +16 -0
  199. package/.medusa/server/src/providers/mpl/fulfillment-provider.d.ts +4 -0
  200. package/.medusa/server/src/providers/mpl/fulfillment-provider.js +67 -176
  201. package/.medusa/server/src/providers/mpl/index.d.ts +2 -0
  202. package/.medusa/server/src/providers/mpl/index.js +7 -2
  203. package/.medusa/server/src/providers/mpl/service.d.ts +37 -1
  204. package/.medusa/server/src/providers/mpl/service.js +113 -366
  205. package/.medusa/server/src/providers/mpl/types.d.ts +19 -0
  206. package/.medusa/server/src/providers/mpl/types.js +1 -1
  207. package/.medusa/server/src/providers/packeta/client.d.ts +2 -1
  208. package/.medusa/server/src/providers/packeta/client.js +24 -2
  209. package/.medusa/server/src/providers/packeta/fulfillment-provider.d.ts +4 -0
  210. package/.medusa/server/src/providers/packeta/fulfillment-provider.js +84 -9
  211. package/.medusa/server/src/providers/packeta/point-validation.d.ts +2 -0
  212. package/.medusa/server/src/providers/packeta/point-validation.js +99 -0
  213. package/.medusa/server/src/providers/packeta/service.d.ts +1 -0
  214. package/.medusa/server/src/providers/packeta/service.js +91 -23
  215. package/.medusa/server/src/providers/packeta/types.d.ts +27 -0
  216. package/.medusa/server/src/providers/packeta/types.js +1 -1
  217. package/.medusa/server/src/providers/resilient-stripe/index.d.ts +19 -1
  218. package/.medusa/server/src/providers/resilient-stripe/index.js +59 -12
  219. package/.medusa/server/src/providers/simplepay/config.js +11 -1
  220. package/.medusa/server/src/providers/simplepay/index.d.ts +2 -0
  221. package/.medusa/server/src/providers/simplepay/index.js +5 -3
  222. package/.medusa/server/src/providers/simplepay/runtime-service.d.ts +13 -0
  223. package/.medusa/server/src/providers/simplepay/runtime-service.js +55 -0
  224. package/.medusa/server/src/providers/simplepay/service.d.ts +2 -0
  225. package/.medusa/server/src/providers/simplepay/service.js +40 -5
  226. package/.medusa/server/src/scripts/verify-runtime-modules.d.ts +7 -0
  227. package/.medusa/server/src/scripts/verify-runtime-modules.js +46 -0
  228. package/.medusa/server/src/subscribers/google-ads-order-canceled.d.ts +7 -0
  229. package/.medusa/server/src/subscribers/google-ads-order-canceled.js +50 -0
  230. package/.medusa/server/src/subscribers/google-ads-payment-refunded.d.ts +7 -0
  231. package/.medusa/server/src/subscribers/google-ads-payment-refunded.js +181 -0
  232. package/.medusa/server/src/subscribers/simplepay-paid-order-recovery.js +14 -1
  233. package/package.json +23 -18
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGoogleMerchantDiagnostics = getGoogleMerchantDiagnostics;
4
+ const merchant_api_1 = require("./merchant-api");
5
+ const MERCHANT_API_BASE = "https://merchantapi.googleapis.com";
6
+ async function getGoogleMerchantDiagnostics(env) {
7
+ const accountId = required(env, "GOOGLE_MERCHANT_ACCOUNT_ID").replace(/^accounts\//, "");
8
+ const accessToken = await (0, merchant_api_1.getGoogleMerchantAccessToken)(env);
9
+ const languageCode = normalizeLanguage(env.GOOGLE_MERCHANT_LOCALE);
10
+ const timeZone = env.GOOGLE_MERCHANT_DATA_SOURCE_TIME_ZONE?.trim() || "Europe/Budapest";
11
+ const [accountIssues, productResult] = await Promise.all([
12
+ listAccountIssues({ accountId, accessToken, languageCode, timeZone }),
13
+ listProductIssues({ accountId, accessToken }),
14
+ ]);
15
+ return {
16
+ accountIssues,
17
+ productIssues: productResult.issues,
18
+ productsScanned: productResult.productsScanned,
19
+ generatedAt: new Date().toISOString(),
20
+ };
21
+ }
22
+ async function listAccountIssues(input) {
23
+ const out = [];
24
+ let pageToken = "";
25
+ do {
26
+ const url = new URL(`${MERCHANT_API_BASE}/accounts/v1/accounts/${encodeURIComponent(input.accountId)}/issues`);
27
+ url.searchParams.set("page_size", "1000");
28
+ url.searchParams.set("language_code", input.languageCode);
29
+ url.searchParams.set("time_zone.id", input.timeZone);
30
+ if (pageToken)
31
+ url.searchParams.set("page_token", pageToken);
32
+ const data = await merchantGet(url.toString(), input.accessToken);
33
+ const issues = Array.isArray(data.accountIssues) ? data.accountIssues : [];
34
+ for (const issue of issues) {
35
+ out.push({
36
+ name: String(issue?.name || ""),
37
+ title: String(issue?.title || issue?.name || "Merchant account issue"),
38
+ detail: stringValue(issue?.detail),
39
+ severity: stringValue(issue?.severity),
40
+ documentationUri: stringValue(issue?.documentationUri),
41
+ impactedDestinations: Array.isArray(issue?.impactedDestinations)
42
+ ? issue.impactedDestinations
43
+ : [],
44
+ });
45
+ }
46
+ pageToken = String(data.nextPageToken || "");
47
+ } while (pageToken);
48
+ return out;
49
+ }
50
+ async function listProductIssues(input) {
51
+ const issues = [];
52
+ let productsScanned = 0;
53
+ let pageToken = "";
54
+ do {
55
+ const url = new URL(`${MERCHANT_API_BASE}/products/v1/accounts/${encodeURIComponent(input.accountId)}/products`);
56
+ url.searchParams.set("pageSize", "250");
57
+ if (pageToken)
58
+ url.searchParams.set("pageToken", pageToken);
59
+ const data = await merchantGet(url.toString(), input.accessToken);
60
+ const products = Array.isArray(data.products) ? data.products : [];
61
+ productsScanned += products.length;
62
+ for (const product of products) {
63
+ const productName = String(product?.name || product?.productName || "");
64
+ const offerId = stringValue(product?.offerId || product?.productInput?.offerId || product?.offer_id);
65
+ const itemLevelIssues = Array.isArray(product?.productStatus?.itemLevelIssues)
66
+ ? product.productStatus.itemLevelIssues
67
+ : Array.isArray(product?.itemLevelIssues)
68
+ ? product.itemLevelIssues
69
+ : [];
70
+ for (const issue of itemLevelIssues) {
71
+ issues.push({
72
+ productName,
73
+ offerId,
74
+ title: String(issue?.description || issue?.detail || issue?.code || "Product issue"),
75
+ detail: stringValue(issue?.detail || issue?.description),
76
+ severity: stringValue(issue?.severity),
77
+ code: stringValue(issue?.code),
78
+ attribute: stringValue(issue?.attribute),
79
+ documentationUri: stringValue(issue?.documentationUri),
80
+ destination: stringValue(issue?.destination),
81
+ resolution: stringValue(issue?.resolution),
82
+ });
83
+ }
84
+ }
85
+ pageToken = String(data.nextPageToken || "");
86
+ } while (pageToken);
87
+ return { issues, productsScanned };
88
+ }
89
+ async function merchantGet(url, accessToken) {
90
+ const response = await fetch(url, {
91
+ headers: { Authorization: `Bearer ${accessToken}` },
92
+ signal: AbortSignal.timeout(15000),
93
+ });
94
+ const data = (await response.json().catch(() => ({})));
95
+ if (!response.ok) {
96
+ throw new Error(data?.error?.message || `Merchant API hiba (${response.status}).`);
97
+ }
98
+ return data;
99
+ }
100
+ function normalizeLanguage(value) {
101
+ const raw = String(value || "hu-HU").trim();
102
+ return raw || "hu-HU";
103
+ }
104
+ function required(env, key) {
105
+ const value = String(env[key] || "").trim();
106
+ if (!value)
107
+ throw new Error(`Hiányzó Google Merchant API beállítás: ${key}`);
108
+ return value;
109
+ }
110
+ function stringValue(value) {
111
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
112
+ }
113
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc3RpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvZ29vZ2xlLW1lcmNoYW50L2RpYWdub3N0aWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUNBLG9FQWlCQztBQWxERCxpREFBd0Y7QUFFeEYsTUFBTSxpQkFBaUIsR0FBRyxvQ0FBb0MsQ0FBQTtBQStCdkQsS0FBSyxVQUFVLDRCQUE0QixDQUFDLEdBQXlCO0lBQzFFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3hGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSwyQ0FBNEIsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUMzRCxNQUFNLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtJQUNsRSxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMscUNBQXFDLEVBQUUsSUFBSSxFQUFFLElBQUksaUJBQWlCLENBQUE7SUFFdkYsTUFBTSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDdkQsaUJBQWlCLENBQUMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNyRSxpQkFBaUIsQ0FBQyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztLQUM5QyxDQUFDLENBQUE7SUFFRixPQUFPO1FBQ0wsYUFBYTtRQUNiLGFBQWEsRUFBRSxhQUFhLENBQUMsTUFBTTtRQUNuQyxlQUFlLEVBQUUsYUFBYSxDQUFDLGVBQWU7UUFDOUMsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO0tBQ0YsQ0FBQTtBQUN2QyxDQUFDO0FBRUQsS0FBSyxVQUFVLGlCQUFpQixDQUFDLEtBS2hDO0lBQ0MsTUFBTSxHQUFHLEdBQTJCLEVBQUUsQ0FBQTtJQUN0QyxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFFbEIsR0FBRyxDQUFDO1FBQ0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQ2pCLEdBQUcsaUJBQWlCLHlCQUF5QixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FDMUYsQ0FBQTtRQUNELEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUN6QyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3pELEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDcEQsSUFBSSxTQUFTO1lBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBRTVELE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDakUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUMxRSxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksd0JBQXdCLENBQUM7Z0JBQ3RFLE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztnQkFDbEMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO2dCQUN0QyxnQkFBZ0IsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDO2dCQUN0RCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxvQkFBb0IsQ0FBQztvQkFDOUQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0I7b0JBQzVCLENBQUMsQ0FBQyxFQUFFO2FBQ1AsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUNELFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUM5QyxDQUFDLFFBQVEsU0FBUyxFQUFDO0lBRW5CLE9BQU8sR0FBRyxDQUFBO0FBQ1osQ0FBQztBQUVELEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxLQUFpRDtJQUNoRixNQUFNLE1BQU0sR0FBMkIsRUFBRSxDQUFBO0lBQ3pDLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQTtJQUN2QixJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFFbEIsR0FBRyxDQUFDO1FBQ0YsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQ2pCLEdBQUcsaUJBQWlCLHlCQUF5QixrQkFBa0IsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FDNUYsQ0FBQTtRQUNELEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN2QyxJQUFJLFNBQVM7WUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFFM0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUNqRSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQ2xFLGVBQWUsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFBO1FBRWxDLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDL0IsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksT0FBTyxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUN2RSxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQ3pCLE9BQU8sRUFBRSxPQUFPLElBQUksT0FBTyxFQUFFLFlBQVksRUFBRSxPQUFPLElBQUksT0FBTyxFQUFFLFFBQVEsQ0FDeEUsQ0FBQTtZQUNELE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUM7Z0JBQzVFLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGVBQWU7Z0JBQ3ZDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxlQUFlLENBQUM7b0JBQ3ZDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZTtvQkFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtZQUVSLEtBQUssTUFBTSxLQUFLLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ1YsV0FBVztvQkFDWCxPQUFPO29CQUNQLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLEtBQUssRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDO29CQUNwRixNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLElBQUksS0FBSyxFQUFFLFdBQVcsQ0FBQztvQkFDeEQsUUFBUSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO29CQUN0QyxJQUFJLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7b0JBQzlCLFNBQVMsRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQztvQkFDeEMsZ0JBQWdCLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztvQkFDdEQsV0FBVyxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDO29CQUM1QyxVQUFVLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUM7aUJBQzNDLENBQUMsQ0FBQTtZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQzlDLENBQUMsUUFBUSxTQUFTLEVBQUM7SUFFbkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxlQUFlLEVBQUUsQ0FBQTtBQUNwQyxDQUFDO0FBRUQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxHQUFXLEVBQUUsV0FBbUI7SUFDekQsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxFQUFFO1FBQ2hDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLFdBQVcsRUFBRSxFQUFFO1FBQ25ELE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztLQUNuQyxDQUFDLENBQUE7SUFDRixNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQXdCLENBQUE7SUFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLHNCQUFzQixRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQTtJQUNwRixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxLQUFjO0lBQ3ZDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDM0MsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUF5QixFQUFFLEdBQVc7SUFDdEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQyxJQUFJLENBQUMsS0FBSztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDNUUsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsS0FBYztJQUNqQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBO0FBQzdFLENBQUMifQ==
@@ -1,2 +1,7 @@
1
1
  export * from "./config";
2
2
  export * from "./feed";
3
+ export * from "./shipping";
4
+ export * from "./category-fields";
5
+ export * from "./merchant-api";
6
+ export * from "./data-source";
7
+ export * from "./diagnostics";
@@ -16,4 +16,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./config"), exports);
18
18
  __exportStar(require("./feed"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvZ29vZ2xlLW1lcmNoYW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBd0I7QUFDeEIseUNBQXNCIn0=
19
+ __exportStar(require("./shipping"), exports);
20
+ __exportStar(require("./category-fields"), exports);
21
+ __exportStar(require("./merchant-api"), exports);
22
+ __exportStar(require("./data-source"), exports);
23
+ __exportStar(require("./diagnostics"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvZ29vZ2xlLW1lcmNoYW50L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBd0I7QUFDeEIseUNBQXNCO0FBQ3RCLDZDQUEwQjtBQUMxQixvREFBaUM7QUFDakMsaURBQThCO0FBQzlCLGdEQUE2QjtBQUM3QixnREFBNkIifQ==
@@ -0,0 +1,18 @@
1
+ export declare const GOOGLE_MERCHANT_SCOPE = "https://www.googleapis.com/auth/content";
2
+ export type GoogleMerchantApiEnv = Record<string, string>;
3
+ export declare function buildGoogleMerchantAuthorizationUrl(env: GoogleMerchantApiEnv, state: string): string;
4
+ export declare function exchangeGoogleMerchantAuthorizationCode(env: GoogleMerchantApiEnv, code: string): Promise<{
5
+ access_token?: string;
6
+ refresh_token?: string;
7
+ error?: string;
8
+ error_description?: string;
9
+ }>;
10
+ export declare function getGoogleMerchantAccessToken(env: GoogleMerchantApiEnv): Promise<string>;
11
+ export declare function getGoogleMerchantAccount(env: GoogleMerchantApiEnv): Promise<Record<string, any>>;
12
+ export declare function createGoogleMerchantOAuthState(input: {
13
+ actorId?: string | null;
14
+ }): string;
15
+ export declare function verifyGoogleMerchantOAuthState(state: string): {
16
+ ts?: number;
17
+ actorId?: string | null;
18
+ };
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GOOGLE_MERCHANT_SCOPE = void 0;
4
+ exports.buildGoogleMerchantAuthorizationUrl = buildGoogleMerchantAuthorizationUrl;
5
+ exports.exchangeGoogleMerchantAuthorizationCode = exchangeGoogleMerchantAuthorizationCode;
6
+ exports.getGoogleMerchantAccessToken = getGoogleMerchantAccessToken;
7
+ exports.getGoogleMerchantAccount = getGoogleMerchantAccount;
8
+ exports.createGoogleMerchantOAuthState = createGoogleMerchantOAuthState;
9
+ exports.verifyGoogleMerchantOAuthState = verifyGoogleMerchantOAuthState;
10
+ const node_crypto_1 = require("node:crypto");
11
+ exports.GOOGLE_MERCHANT_SCOPE = "https://www.googleapis.com/auth/content";
12
+ const GOOGLE_AUTH_URL = "https://accounts.google.com/o/oauth2/v2/auth";
13
+ const GOOGLE_TOKEN_URL = "https://oauth2.googleapis.com/token";
14
+ const MERCHANT_API_BASE = "https://merchantapi.googleapis.com";
15
+ function buildGoogleMerchantAuthorizationUrl(env, state) {
16
+ const clientId = required(env, "GOOGLE_MERCHANT_API_CLIENT_ID");
17
+ const redirectUri = required(env, "GOOGLE_MERCHANT_API_REDIRECT_URI");
18
+ const url = new URL(GOOGLE_AUTH_URL);
19
+ url.searchParams.set("client_id", clientId);
20
+ url.searchParams.set("redirect_uri", redirectUri);
21
+ url.searchParams.set("response_type", "code");
22
+ url.searchParams.set("scope", exports.GOOGLE_MERCHANT_SCOPE);
23
+ url.searchParams.set("access_type", "offline");
24
+ url.searchParams.set("prompt", "consent");
25
+ url.searchParams.set("include_granted_scopes", "true");
26
+ url.searchParams.set("state", state);
27
+ return url.toString();
28
+ }
29
+ async function exchangeGoogleMerchantAuthorizationCode(env, code) {
30
+ const body = new URLSearchParams({
31
+ client_id: required(env, "GOOGLE_MERCHANT_API_CLIENT_ID"),
32
+ client_secret: required(env, "GOOGLE_MERCHANT_API_CLIENT_SECRET"),
33
+ redirect_uri: required(env, "GOOGLE_MERCHANT_API_REDIRECT_URI"),
34
+ code,
35
+ grant_type: "authorization_code",
36
+ });
37
+ const response = await fetch(GOOGLE_TOKEN_URL, {
38
+ method: "POST",
39
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
40
+ body,
41
+ signal: AbortSignal.timeout(10000),
42
+ });
43
+ const data = (await response.json().catch(() => ({})));
44
+ if (!response.ok || !data.refresh_token) {
45
+ throw new Error(data.error_description || data.error || "A Google OAuth refresh token nem kérhető le.");
46
+ }
47
+ return data;
48
+ }
49
+ async function getGoogleMerchantAccessToken(env) {
50
+ const body = new URLSearchParams({
51
+ client_id: required(env, "GOOGLE_MERCHANT_API_CLIENT_ID"),
52
+ client_secret: required(env, "GOOGLE_MERCHANT_API_CLIENT_SECRET"),
53
+ refresh_token: required(env, "GOOGLE_MERCHANT_API_REFRESH_TOKEN"),
54
+ grant_type: "refresh_token",
55
+ });
56
+ const response = await fetch(GOOGLE_TOKEN_URL, {
57
+ method: "POST",
58
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
59
+ body,
60
+ signal: AbortSignal.timeout(10000),
61
+ });
62
+ const data = (await response.json().catch(() => ({})));
63
+ if (!response.ok || !data.access_token) {
64
+ throw new Error(data.error_description || data.error || "A Google OAuth access token nem kérhető le.");
65
+ }
66
+ return data.access_token;
67
+ }
68
+ async function getGoogleMerchantAccount(env) {
69
+ const accountId = required(env, "GOOGLE_MERCHANT_ACCOUNT_ID").replace(/^accounts\//, "");
70
+ const accessToken = await getGoogleMerchantAccessToken(env);
71
+ const response = await fetch(`${MERCHANT_API_BASE}/accounts/v1/accounts/${encodeURIComponent(accountId)}`, {
72
+ headers: { Authorization: `Bearer ${accessToken}` },
73
+ signal: AbortSignal.timeout(10000),
74
+ });
75
+ const data = (await response.json().catch(() => ({})));
76
+ if (!response.ok) {
77
+ throw new Error(data?.error?.message || `Merchant API hiba (${response.status}).`);
78
+ }
79
+ return data;
80
+ }
81
+ function createGoogleMerchantOAuthState(input) {
82
+ const secret = oauthStateSecret();
83
+ const payload = Buffer.from(JSON.stringify({ ts: Date.now(), actorId: input.actorId || null })).toString("base64url");
84
+ const signature = (0, node_crypto_1.createHmac)("sha256", secret).update(payload).digest("base64url");
85
+ return `${payload}.${signature}`;
86
+ }
87
+ function verifyGoogleMerchantOAuthState(state) {
88
+ const [payload, suppliedSignature] = state.split(".");
89
+ if (!payload || !suppliedSignature)
90
+ throw new Error("Érvénytelen OAuth state.");
91
+ const expected = (0, node_crypto_1.createHmac)("sha256", oauthStateSecret()).update(payload).digest();
92
+ let supplied;
93
+ try {
94
+ supplied = Buffer.from(suppliedSignature, "base64url");
95
+ }
96
+ catch {
97
+ throw new Error("Érvénytelen OAuth state.");
98
+ }
99
+ if (expected.length !== supplied.length || !(0, node_crypto_1.timingSafeEqual)(expected, supplied)) {
100
+ throw new Error("Érvénytelen OAuth state aláírás.");
101
+ }
102
+ const parsed = JSON.parse(Buffer.from(payload, "base64url").toString("utf8"));
103
+ if (!parsed.ts || Date.now() - parsed.ts > 10 * 60 * 1000) {
104
+ throw new Error("Az OAuth state lejárt.");
105
+ }
106
+ return parsed;
107
+ }
108
+ function required(env, key) {
109
+ const value = String(env[key] || "").trim();
110
+ if (!value)
111
+ throw new Error(`Hiányzó Google Merchant API beállítás: ${key}`);
112
+ return value;
113
+ }
114
+ function oauthStateSecret() {
115
+ const secret = String(process.env.COOKIE_SECRET || process.env.JWT_SECRET || "").trim();
116
+ if (!secret)
117
+ throw new Error("COOKIE_SECRET vagy JWT_SECRET szükséges a Google OAuth state aláírásához.");
118
+ return secret;
119
+ }
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyY2hhbnQtYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGVzL2dvb2dsZS1tZXJjaGFudC9tZXJjaGFudC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0Esa0ZBYUM7QUFFRCwwRkE2QkM7QUFFRCxvRUF3QkM7QUFFRCw0REFpQkM7QUFFRCx3RUFPQztBQUVELHdFQXFCQztBQWxJRCw2Q0FBeUQ7QUFFNUMsUUFBQSxxQkFBcUIsR0FBRyx5Q0FBeUMsQ0FBQTtBQUM5RSxNQUFNLGVBQWUsR0FBRyw4Q0FBOEMsQ0FBQTtBQUN0RSxNQUFNLGdCQUFnQixHQUFHLHFDQUFxQyxDQUFBO0FBQzlELE1BQU0saUJBQWlCLEdBQUcsb0NBQW9DLENBQUE7QUFJOUQsU0FBZ0IsbUNBQW1DLENBQUMsR0FBeUIsRUFBRSxLQUFhO0lBQzFGLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUMsQ0FBQTtJQUMvRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLGtDQUFrQyxDQUFDLENBQUE7SUFDckUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDcEMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQzNDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUNqRCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDN0MsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLDZCQUFxQixDQUFDLENBQUE7SUFDcEQsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzlDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN6QyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUN0RCxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDcEMsT0FBTyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUE7QUFDdkIsQ0FBQztBQUVNLEtBQUssVUFBVSx1Q0FBdUMsQ0FDM0QsR0FBeUIsRUFDekIsSUFBWTtJQUVaLE1BQU0sSUFBSSxHQUFHLElBQUksZUFBZSxDQUFDO1FBQy9CLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLCtCQUErQixDQUFDO1FBQ3pELGFBQWEsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLG1DQUFtQyxDQUFDO1FBQ2pFLFlBQVksRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLGtDQUFrQyxDQUFDO1FBQy9ELElBQUk7UUFDSixVQUFVLEVBQUUsb0JBQW9CO0tBQ2pDLENBQUMsQ0FBQTtJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLGdCQUFnQixFQUFFO1FBQzdDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLG1DQUFtQyxFQUFFO1FBQ2hFLElBQUk7UUFDSixNQUFNLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7S0FDbkMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUtwRCxDQUFBO0lBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FDYixJQUFJLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSw4Q0FBOEMsQ0FDdkYsQ0FBQTtJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFTSxLQUFLLFVBQVUsNEJBQTRCLENBQUMsR0FBeUI7SUFDMUUsTUFBTSxJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUM7UUFDL0IsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLENBQUM7UUFDekQsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsbUNBQW1DLENBQUM7UUFDakUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxHQUFHLEVBQUUsbUNBQW1DLENBQUM7UUFDakUsVUFBVSxFQUFFLGVBQWU7S0FDNUIsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLEVBQUU7UUFDN0MsTUFBTSxFQUFFLE1BQU07UUFDZCxPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsbUNBQW1DLEVBQUU7UUFDaEUsSUFBSTtRQUNKLE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztLQUNuQyxDQUFDLENBQUE7SUFDRixNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBSXBELENBQUE7SUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxNQUFNLElBQUksS0FBSyxDQUNiLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLDZDQUE2QyxDQUN0RixDQUFBO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQTtBQUMxQixDQUFDO0FBRU0sS0FBSyxVQUFVLHdCQUF3QixDQUFDLEdBQXlCO0lBQ3RFLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3hGLE1BQU0sV0FBVyxHQUFHLE1BQU0sNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQzFCLEdBQUcsaUJBQWlCLHlCQUF5QixrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUM1RTtRQUNFLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLFdBQVcsRUFBRSxFQUFFO1FBQ25ELE1BQU0sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztLQUNuQyxDQUNGLENBQUE7SUFDRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQXdCLENBQUE7SUFDN0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNqQixNQUFNLElBQUksS0FBSyxDQUNiLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLHNCQUFzQixRQUFRLENBQUMsTUFBTSxJQUFJLENBQ2xFLENBQUE7SUFDSCxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsU0FBZ0IsOEJBQThCLENBQUMsS0FBa0M7SUFDL0UsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQTtJQUNqQyxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUNuRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFBLHdCQUFVLEVBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDbEYsT0FBTyxHQUFHLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQTtBQUNsQyxDQUFDO0FBRUQsU0FBZ0IsOEJBQThCLENBQUMsS0FBYTtJQUMxRCxNQUFNLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNyRCxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsaUJBQWlCO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO0lBQy9FLE1BQU0sUUFBUSxHQUFHLElBQUEsd0JBQVUsRUFBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNsRixJQUFJLFFBQWdCLENBQUE7SUFDcEIsSUFBSSxDQUFDO1FBQ0gsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFBLDZCQUFlLEVBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDaEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FHM0UsQ0FBQTtJQUNELElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBQzNDLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUM7QUFFRCxTQUFTLFFBQVEsQ0FBQyxHQUF5QixFQUFFLEdBQVc7SUFDdEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMzQyxJQUFJLENBQUMsS0FBSztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLEdBQUcsRUFBRSxDQUFDLENBQUE7SUFDNUUsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsU0FBUyxnQkFBZ0I7SUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3ZGLElBQUksQ0FBQyxNQUFNO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFBO0lBQ3pHLE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyJ9
@@ -0,0 +1,13 @@
1
+ export type GoogleMerchantShippingConfig = {
2
+ enabled: boolean;
3
+ country: string;
4
+ service?: string;
5
+ price: string;
6
+ minHandlingTime?: number;
7
+ maxHandlingTime?: number;
8
+ minTransitTime?: number;
9
+ maxTransitTime?: number;
10
+ };
11
+ export declare function applyGoogleMerchantShipping(container: {
12
+ resolve(name: string): unknown;
13
+ }, xml: string): Promise<string>;
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyGoogleMerchantShipping = applyGoogleMerchantShipping;
4
+ const integration_settings_1 = require("../../../modules/integration-settings");
5
+ async function applyGoogleMerchantShipping(container, xml) {
6
+ const store = container.resolve(integration_settings_1.INTEGRATION_SETTINGS_MODULE);
7
+ const resolved = await (0, integration_settings_1.resolvedIntegrationEnvironment)(store, "google-merchant");
8
+ const shipping = getShippingConfig(resolved.env);
9
+ if (!shipping.enabled)
10
+ return xml;
11
+ const fragment = buildShippingXml(shipping);
12
+ return xml.replaceAll("</item>", `${fragment}</item>`);
13
+ }
14
+ function getShippingConfig(env) {
15
+ const enabled = env.GOOGLE_MERCHANT_SHIPPING_ENABLED === "true";
16
+ const country = String(env.GOOGLE_MERCHANT_SHIPPING_COUNTRY ||
17
+ env.GOOGLE_MERCHANT_COUNTRY_CODE ||
18
+ process.env.STORE_DEFAULT_COUNTRY ||
19
+ "HU")
20
+ .trim()
21
+ .toUpperCase();
22
+ const currency = String(env.GOOGLE_MERCHANT_CURRENCY_CODE || process.env.STORE_DEFAULT_CURRENCY || "HUF")
23
+ .trim()
24
+ .toUpperCase();
25
+ const rawPrice = String(env.GOOGLE_MERCHANT_SHIPPING_PRICE || "").trim();
26
+ const service = String(env.GOOGLE_MERCHANT_SHIPPING_SERVICE || "").trim() || undefined;
27
+ if (!enabled) {
28
+ return { enabled: false, country, price: "" };
29
+ }
30
+ if (!/^[A-Z]{2}$/.test(country)) {
31
+ throw new Error("A Google Merchant szállítási célország kétbetűs ISO kód legyen, például HU.");
32
+ }
33
+ if (!/^[A-Z]{3}$/.test(currency)) {
34
+ throw new Error("A Google Merchant szállítás pénzneme hárombetűs ISO kód legyen, például HUF.");
35
+ }
36
+ const amount = Number(rawPrice.replace(",", "."));
37
+ if (!rawPrice || !Number.isFinite(amount) || amount < 0) {
38
+ throw new Error("Bekapcsolt Merchant szállításnál érvényes, nem negatív szállítási díj szükséges.");
39
+ }
40
+ const minHandlingTime = optionalNonNegativeInteger(env.GOOGLE_MERCHANT_MIN_HANDLING_TIME, "minimum kezelési idő");
41
+ const maxHandlingTime = optionalNonNegativeInteger(env.GOOGLE_MERCHANT_MAX_HANDLING_TIME, "maximum kezelési idő");
42
+ const minTransitTime = optionalNonNegativeInteger(env.GOOGLE_MERCHANT_MIN_TRANSIT_TIME, "minimum szállítási idő");
43
+ const maxTransitTime = optionalNonNegativeInteger(env.GOOGLE_MERCHANT_MAX_TRANSIT_TIME, "maximum szállítási idő");
44
+ if (minHandlingTime != null &&
45
+ maxHandlingTime != null &&
46
+ minHandlingTime > maxHandlingTime) {
47
+ throw new Error("A minimum kezelési idő nem lehet nagyobb a maximumnál.");
48
+ }
49
+ if (minTransitTime != null &&
50
+ maxTransitTime != null &&
51
+ minTransitTime > maxTransitTime) {
52
+ throw new Error("A minimum szállítási idő nem lehet nagyobb a maximumnál.");
53
+ }
54
+ return {
55
+ enabled: true,
56
+ country,
57
+ service,
58
+ price: `${amount.toFixed(2)} ${currency}`,
59
+ minHandlingTime,
60
+ maxHandlingTime,
61
+ minTransitTime,
62
+ maxTransitTime,
63
+ };
64
+ }
65
+ function buildShippingXml(config) {
66
+ const optional = (name, value) => value === undefined || value === ""
67
+ ? ""
68
+ : `<g:${name}>${xmlEscape(String(value))}</g:${name}>`;
69
+ return (`<g:shipping>` +
70
+ `<g:country>${xmlEscape(config.country)}</g:country>` +
71
+ optional("service", config.service) +
72
+ `<g:price>${xmlEscape(config.price)}</g:price>` +
73
+ optional("min_handling_time", config.minHandlingTime) +
74
+ optional("max_handling_time", config.maxHandlingTime) +
75
+ optional("min_transit_time", config.minTransitTime) +
76
+ optional("max_transit_time", config.maxTransitTime) +
77
+ `</g:shipping>`);
78
+ }
79
+ function optionalNonNegativeInteger(value, label) {
80
+ const raw = String(value || "").trim();
81
+ if (!raw)
82
+ return undefined;
83
+ const parsed = Number(raw);
84
+ if (!Number.isInteger(parsed) || parsed < 0) {
85
+ throw new Error(`A Google Merchant ${label} csak nem negatív egész szám lehet.`);
86
+ }
87
+ return parsed;
88
+ }
89
+ function xmlEscape(value) {
90
+ return value
91
+ .replace(/&/g, "&amp;")
92
+ .replace(/</g, "&lt;")
93
+ .replace(/>/g, "&gt;")
94
+ .replace(/"/g, "&quot;")
95
+ .replace(/'/g, "&apos;");
96
+ }
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvZ29vZ2xlLW1lcmNoYW50L3NoaXBwaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBaUJBLGtFQWNDO0FBL0JELGdGQUk4QztBQWF2QyxLQUFLLFVBQVUsMkJBQTJCLENBQy9DLFNBQTZDLEVBQzdDLEdBQVc7SUFFWCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUM3QixrREFBMkIsQ0FDVyxDQUFBO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxxREFBOEIsRUFBQyxLQUFLLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUMvRSxNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUE7SUFFaEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO1FBQUUsT0FBTyxHQUFHLENBQUE7SUFFakMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDM0MsT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxHQUFHLFFBQVEsU0FBUyxDQUFDLENBQUE7QUFDeEQsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsR0FBMkI7SUFDcEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLGdDQUFnQyxLQUFLLE1BQU0sQ0FBQTtJQUMvRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQ3BCLEdBQUcsQ0FBQyxnQ0FBZ0M7UUFDbEMsR0FBRyxDQUFDLDRCQUE0QjtRQUNoQyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQjtRQUNqQyxJQUFJLENBQ1A7U0FDRSxJQUFJLEVBQUU7U0FDTixXQUFXLEVBQUUsQ0FBQTtJQUNoQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQ3JCLEdBQUcsQ0FBQyw2QkFBNkIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixJQUFJLEtBQUssQ0FDakY7U0FDRSxJQUFJLEVBQUU7U0FDTixXQUFXLEVBQUUsQ0FBQTtJQUNoQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDhCQUE4QixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3hFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksU0FBUyxDQUFBO0lBRXRGLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFDL0MsQ0FBQztJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2RUFBNkUsQ0FBQyxDQUFBO0lBQ2hHLENBQUM7SUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEVBQThFLENBQUMsQ0FBQTtJQUNqRyxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDakQsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsa0ZBQWtGLENBQUMsQ0FBQTtJQUNyRyxDQUFDO0lBRUQsTUFBTSxlQUFlLEdBQUcsMEJBQTBCLENBQ2hELEdBQUcsQ0FBQyxpQ0FBaUMsRUFDckMsc0JBQXNCLENBQ3ZCLENBQUE7SUFDRCxNQUFNLGVBQWUsR0FBRywwQkFBMEIsQ0FDaEQsR0FBRyxDQUFDLGlDQUFpQyxFQUNyQyxzQkFBc0IsQ0FDdkIsQ0FBQTtJQUNELE1BQU0sY0FBYyxHQUFHLDBCQUEwQixDQUMvQyxHQUFHLENBQUMsZ0NBQWdDLEVBQ3BDLHdCQUF3QixDQUN6QixDQUFBO0lBQ0QsTUFBTSxjQUFjLEdBQUcsMEJBQTBCLENBQy9DLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFDcEMsd0JBQXdCLENBQ3pCLENBQUE7SUFFRCxJQUNFLGVBQWUsSUFBSSxJQUFJO1FBQ3ZCLGVBQWUsSUFBSSxJQUFJO1FBQ3ZCLGVBQWUsR0FBRyxlQUFlLEVBQ2pDLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUE7SUFDM0UsQ0FBQztJQUNELElBQ0UsY0FBYyxJQUFJLElBQUk7UUFDdEIsY0FBYyxJQUFJLElBQUk7UUFDdEIsY0FBYyxHQUFHLGNBQWMsRUFDL0IsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTztRQUNQLE9BQU87UUFDUCxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRTtRQUN6QyxlQUFlO1FBQ2YsZUFBZTtRQUNmLGNBQWM7UUFDZCxjQUFjO0tBQ2YsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLE1BQW9DO0lBQzVELE1BQU0sUUFBUSxHQUFHLENBQUMsSUFBWSxFQUFFLEtBQWtDLEVBQUUsRUFBRSxDQUNwRSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxFQUFFO1FBQ2pDLENBQUMsQ0FBQyxFQUFFO1FBQ0osQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxJQUFJLEdBQUcsQ0FBQTtJQUUxRCxPQUFPLENBQ0wsY0FBYztRQUNkLGNBQWMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYztRQUNyRCxRQUFRLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDbkMsWUFBWSxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZO1FBQy9DLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ3JELFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ3JELFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ25ELFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQ25ELGVBQWUsQ0FDaEIsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLDBCQUEwQixDQUFDLEtBQXlCLEVBQUUsS0FBYTtJQUMxRSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQ3RDLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFDMUIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixLQUFLLHFDQUFxQyxDQUFDLENBQUE7SUFDbEYsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQWE7SUFDOUIsT0FBTyxLQUFLO1NBQ1QsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7U0FDdEIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7U0FDckIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7U0FDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUM1QixDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tb2R1bGVzL2dvb2dsZS10YWctbWFuYWdlci9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvZ29vZ2xlLXRhZy1tYW5hZ2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbW9kdWxlcy9nb29nbGUtdGFnLW1hbmFnZXIvc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -33,12 +33,12 @@ export declare function executeShippingAction(input: {
33
33
  } | null;
34
34
  alreadyExisted?: undefined;
35
35
  }>;
36
- export declare function labelsForOrders(orderService: ShippingOrderService, orderIds: string[], requestedFormat: unknown, actorId?: string): Promise<{
36
+ export declare function labelsForOrders(orderService: ShippingOrderService, orderIds: string[], requestedFormat: unknown, actorId?: string, operationStore?: IntegrationOperationStore): Promise<{
37
37
  pdf: Buffer<ArrayBuffer>;
38
38
  format: ShippingLabelFormat;
39
39
  count: number;
40
40
  }>;
41
- export declare function labelForOrder(orderService: ShippingOrderService, orderId: string, requestedFormat: unknown, actorId?: string): Promise<{
41
+ export declare function labelForOrder(orderService: ShippingOrderService, orderId: string, requestedFormat: unknown, actorId?: string, operationStore?: IntegrationOperationStore): Promise<{
42
42
  pdf: Buffer<ArrayBuffer>;
43
43
  format: ShippingLabelFormat;
44
44
  count: number;