@hszrdm/core 1.6.0 → 1.8.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.
- package/.medusa/server/src/admin/index.js +7481 -5872
- package/.medusa/server/src/admin/index.mjs +7482 -5873
- package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/arukereso/marketplace-preview/route.js +26 -0
- package/.medusa/server/src/api/admin/billingo/advance/route.d.ts +8 -0
- package/.medusa/server/src/api/admin/billingo/advance/route.js +55 -0
- package/.medusa/server/src/api/admin/billingo/partial-credit/route.d.ts +8 -0
- package/.medusa/server/src/api/admin/billingo/partial-credit/route.js +69 -0
- package/.medusa/server/src/api/admin/documents/[id]/route.d.ts +22 -0
- package/.medusa/server/src/api/admin/documents/[id]/route.js +107 -0
- package/.medusa/server/src/api/admin/documents/route.d.ts +21 -0
- package/.medusa/server/src/api/admin/documents/route.js +117 -0
- package/.medusa/server/src/api/admin/google-ads/diagnostics/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-ads/diagnostics/route.js +26 -0
- package/.medusa/server/src/api/admin/google-ads/oauth/start/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-ads/oauth/start/route.js +27 -0
- package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-merchant/data-source/sync/route.js +69 -0
- package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-merchant/diagnostics/route.js +26 -0
- package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/google-merchant/oauth/start/route.js +25 -0
- package/.medusa/server/src/api/admin/orders/[id]/shipping/route.js +28 -28
- package/.medusa/server/src/api/admin/shipping/mpl/close/route.d.ts +1 -1
- package/.medusa/server/src/api/admin/shipping/mpl/close/route.js +48 -70
- package/.medusa/server/src/api/auth/google-ads/callback/route.d.ts +2 -0
- package/.medusa/server/src/api/auth/google-ads/callback/route.js +58 -0
- package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.d.ts +2 -0
- package/.medusa/server/src/api/feeds/arukereso-marketplace.xml/route.js +33 -0
- package/.medusa/server/src/api/feeds/google-merchant.xml/route.js +5 -3
- package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.d.ts +2 -0
- package/.medusa/server/src/api/hooks/arukereso/marketplace/order/route.js +211 -0
- package/.medusa/server/src/api/hooks/simplepay/ipn/route.js +113 -23
- package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.d.ts +2 -0
- package/.medusa/server/src/api/store/account/orders/[id]/reorder/route.js +113 -0
- package/.medusa/server/src/api/store/arukereso/backlink/route.d.ts +2 -0
- package/.medusa/server/src/api/store/arukereso/backlink/route.js +73 -0
- package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.d.ts +2 -0
- package/.medusa/server/src/api/store/arukereso/trusted-shop/[id]/route.js +84 -0
- package/.medusa/server/src/api/store/arukereso/widget/route.d.ts +2 -0
- package/.medusa/server/src/api/store/arukereso/widget/route.js +64 -0
- package/.medusa/server/src/api/store/documents/route.d.ts +2 -0
- package/.medusa/server/src/api/store/documents/route.js +84 -0
- package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.d.ts +2 -0
- package/.medusa/server/src/api/store/google-merchant/oauth/callback/route.js +50 -0
- package/.medusa/server/src/config.d.ts +3 -3
- package/.medusa/server/src/config.js +64 -87
- package/.medusa/server/src/core/documents.d.ts +31 -0
- package/.medusa/server/src/core/documents.js +47 -0
- package/.medusa/server/src/core/version.d.ts +2 -2
- package/.medusa/server/src/core/version.js +2 -2
- package/.medusa/server/src/lib/modules/arukereso/index.d.ts +1 -0
- package/.medusa/server/src/lib/modules/arukereso/index.js +2 -1
- package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.d.ts +19 -0
- package/.medusa/server/src/lib/modules/arukereso/marketplace-feed.js +100 -0
- package/.medusa/server/src/lib/modules/billingo/actions.js +42 -12
- package/.medusa/server/src/lib/modules/billingo/advance.d.ts +68 -0
- package/.medusa/server/src/lib/modules/billingo/advance.js +309 -0
- package/.medusa/server/src/lib/modules/billingo/automation.js +49 -9
- package/.medusa/server/src/lib/modules/billingo/client.d.ts +5 -1
- package/.medusa/server/src/lib/modules/billingo/client.js +12 -6
- package/.medusa/server/src/lib/modules/billingo/index.d.ts +2 -0
- package/.medusa/server/src/lib/modules/billingo/index.js +3 -1
- package/.medusa/server/src/lib/modules/billingo/mapper.d.ts +38 -1
- package/.medusa/server/src/lib/modules/billingo/mapper.js +32 -1
- package/.medusa/server/src/lib/modules/billingo/partial-credit.d.ts +55 -0
- package/.medusa/server/src/lib/modules/billingo/partial-credit.js +338 -0
- package/.medusa/server/src/lib/modules/billingo/types.d.ts +7 -2
- package/.medusa/server/src/lib/modules/google-ads/adjustments.d.ts +21 -0
- package/.medusa/server/src/lib/modules/google-ads/adjustments.js +146 -0
- package/.medusa/server/src/lib/modules/google-ads/api.d.ts +23 -0
- package/.medusa/server/src/lib/modules/google-ads/api.js +171 -0
- package/.medusa/server/src/lib/modules/google-ads/diagnostics.d.ts +47 -0
- package/.medusa/server/src/lib/modules/google-ads/diagnostics.js +164 -0
- package/.medusa/server/src/lib/modules/google-merchant/category-fields.d.ts +7 -0
- package/.medusa/server/src/lib/modules/google-merchant/category-fields.js +210 -0
- package/.medusa/server/src/lib/modules/google-merchant/data-source.d.ts +17 -0
- package/.medusa/server/src/lib/modules/google-merchant/data-source.js +132 -0
- package/.medusa/server/src/lib/modules/google-merchant/diagnostics.d.ts +33 -0
- package/.medusa/server/src/lib/modules/google-merchant/diagnostics.js +113 -0
- package/.medusa/server/src/lib/modules/google-merchant/index.d.ts +5 -0
- package/.medusa/server/src/lib/modules/google-merchant/index.js +6 -1
- package/.medusa/server/src/lib/modules/google-merchant/merchant-api.d.ts +18 -0
- package/.medusa/server/src/lib/modules/google-merchant/merchant-api.js +120 -0
- package/.medusa/server/src/lib/modules/google-merchant/shipping.d.ts +13 -0
- package/.medusa/server/src/lib/modules/google-merchant/shipping.js +97 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/api.d.ts +1 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/api.js +3 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/index.d.ts +1 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/index.js +3 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/sync.d.ts +1 -0
- package/.medusa/server/src/lib/modules/google-tag-manager/sync.js +3 -0
- package/.medusa/server/src/lib/modules/shipping/actions.js +163 -352
- package/.medusa/server/src/lib/modules/shipping/durable-create.d.ts +2 -1
- package/.medusa/server/src/lib/modules/shipping/durable-create.js +33 -5
- package/.medusa/server/src/lib/modules/shipping/idempotency.js +4 -2
- package/.medusa/server/src/lib/modules/shipping/types.d.ts +1 -1
- package/.medusa/server/src/modules/core-documents/index.d.ts +38 -0
- package/.medusa/server/src/modules/core-documents/index.js +18 -0
- package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.d.ts +5 -0
- package/.medusa/server/src/modules/core-documents/migrations/Migration20261102190000.js +22 -0
- package/.medusa/server/src/modules/core-documents/models/core-document-assignment.d.ts +9 -0
- package/.medusa/server/src/modules/core-documents/models/core-document-assignment.js +18 -0
- package/.medusa/server/src/modules/core-documents/models/core-document.d.ts +18 -0
- package/.medusa/server/src/modules/core-documents/models/core-document.js +27 -0
- package/.medusa/server/src/modules/core-documents/service.d.ts +38 -0
- package/.medusa/server/src/modules/core-documents/service.js +13 -0
- package/.medusa/server/src/modules/integration-operation/state.d.ts +1 -0
- package/.medusa/server/src/modules/integration-operation/state.js +11 -50
- package/.medusa/server/src/modules/integration-operation/types.d.ts +1 -1
- package/.medusa/server/src/modules/integration-settings/arukereso-registration.js +19 -2
- package/.medusa/server/src/modules/integration-settings/connection-test.js +14 -1
- package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.d.ts +2 -0
- package/.medusa/server/src/modules/integration-settings/csomagpiac-definition.js +49 -0
- package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/csomagpiac-registration.js +35 -0
- package/.medusa/server/src/modules/integration-settings/google-merchant-registration.js +23 -2
- package/.medusa/server/src/modules/integration-settings/hot-reload-registration.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/hot-reload-registration.js +23 -0
- package/.medusa/server/src/modules/integration-settings/index.d.ts +4 -0
- package/.medusa/server/src/modules/integration-settings/index.js +5 -1
- package/.medusa/server/src/modules/integration-settings/manager.js +38 -4
- package/.medusa/server/src/modules/integration-settings/reloadable.d.ts +10 -0
- package/.medusa/server/src/modules/integration-settings/reloadable.js +58 -0
- package/.medusa/server/src/modules/integration-settings/runtime-snapshot.d.ts +9 -0
- package/.medusa/server/src/modules/integration-settings/runtime-snapshot.js +48 -3
- package/.medusa/server/src/modules/integration-settings/simplepay-registration.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/simplepay-registration.js +18 -0
- package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -5
- package/.medusa/server/src/providers/csomagpiac/client.d.ts +25 -0
- package/.medusa/server/src/providers/csomagpiac/client.js +144 -0
- package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.d.ts +45 -0
- package/.medusa/server/src/providers/csomagpiac/fulfillment-provider.js +221 -0
- package/.medusa/server/src/providers/csomagpiac/index.d.ts +7 -0
- package/.medusa/server/src/providers/csomagpiac/index.js +30 -0
- package/.medusa/server/src/providers/csomagpiac/service.d.ts +46 -0
- package/.medusa/server/src/providers/csomagpiac/service.js +226 -0
- package/.medusa/server/src/providers/csomagpiac/types.d.ts +65 -0
- package/.medusa/server/src/providers/csomagpiac/types.js +27 -0
- package/.medusa/server/src/providers/dpd/fulfillment-provider.d.ts +2 -1
- package/.medusa/server/src/providers/dpd/fulfillment-provider.js +83 -25
- package/.medusa/server/src/providers/dpd/service.js +5 -3
- package/.medusa/server/src/providers/email/service.d.ts +7 -6
- package/.medusa/server/src/providers/email/service.js +51 -25
- package/.medusa/server/src/providers/foxpost/foxpost-service.js +5 -9
- package/.medusa/server/src/providers/foxpost/fulfillment-provider.d.ts +1 -0
- package/.medusa/server/src/providers/foxpost/fulfillment-provider.js +76 -66
- package/.medusa/server/src/providers/gls/fulfillment-provider.d.ts +1 -0
- package/.medusa/server/src/providers/gls/fulfillment-provider.js +76 -13
- package/.medusa/server/src/providers/gls/gls-service.d.ts +16 -0
- package/.medusa/server/src/providers/gls/gls-service.js +26 -65
- package/.medusa/server/src/providers/gls/types.d.ts +15 -0
- package/.medusa/server/src/providers/mpl/fulfillment-provider.d.ts +1 -0
- package/.medusa/server/src/providers/mpl/fulfillment-provider.js +61 -186
- package/.medusa/server/src/providers/mpl/index.d.ts +2 -0
- package/.medusa/server/src/providers/mpl/index.js +7 -2
- package/.medusa/server/src/providers/mpl/service.d.ts +35 -1
- package/.medusa/server/src/providers/mpl/service.js +82 -370
- package/.medusa/server/src/providers/mpl/types.d.ts +18 -0
- package/.medusa/server/src/providers/mpl/types.js +1 -1
- package/.medusa/server/src/providers/packeta/client.d.ts +2 -1
- package/.medusa/server/src/providers/packeta/client.js +24 -2
- package/.medusa/server/src/providers/packeta/fulfillment-provider.d.ts +1 -0
- package/.medusa/server/src/providers/packeta/fulfillment-provider.js +73 -5
- package/.medusa/server/src/providers/packeta/service.d.ts +1 -0
- package/.medusa/server/src/providers/packeta/service.js +85 -22
- package/.medusa/server/src/providers/packeta/types.d.ts +26 -0
- package/.medusa/server/src/providers/packeta/types.js +1 -1
- package/.medusa/server/src/providers/resilient-stripe/index.d.ts +19 -1
- package/.medusa/server/src/providers/resilient-stripe/index.js +55 -3
- package/.medusa/server/src/providers/simplepay/config.js +11 -1
- package/.medusa/server/src/providers/simplepay/index.d.ts +2 -0
- package/.medusa/server/src/providers/simplepay/index.js +5 -3
- package/.medusa/server/src/providers/simplepay/runtime-service.d.ts +13 -0
- package/.medusa/server/src/providers/simplepay/runtime-service.js +55 -0
- package/.medusa/server/src/providers/simplepay/service.d.ts +2 -0
- package/.medusa/server/src/providers/simplepay/service.js +40 -5
- package/.medusa/server/src/subscribers/google-ads-order-canceled.d.ts +7 -0
- package/.medusa/server/src/subscribers/google-ads-order-canceled.js +50 -0
- package/.medusa/server/src/subscribers/google-ads-payment-refunded.d.ts +7 -0
- package/.medusa/server/src/subscribers/google-ads-payment-refunded.js +181 -0
- package/.medusa/server/src/subscribers/simplepay-paid-order-recovery.js +14 -1
- package/package.json +6 -2
|
@@ -12,7 +12,40 @@ export declare class MplService {
|
|
|
12
12
|
codAmount: number;
|
|
13
13
|
status: string;
|
|
14
14
|
};
|
|
15
|
-
createShipment(order: Record<string, any>): Promise<MplShipmentData
|
|
15
|
+
createShipment(order: Record<string, any>): Promise<MplShipmentData | {
|
|
16
|
+
codAmount: number;
|
|
17
|
+
trackingNumber: string;
|
|
18
|
+
trackingUrl: string;
|
|
19
|
+
packageTrackingNumbers: string[] | undefined;
|
|
20
|
+
labelBase64: string | undefined;
|
|
21
|
+
returnContext: {
|
|
22
|
+
senderName: any;
|
|
23
|
+
senderEmail: string;
|
|
24
|
+
senderPhone: string;
|
|
25
|
+
senderPostCode: string;
|
|
26
|
+
senderCity: string;
|
|
27
|
+
senderAddress: string;
|
|
28
|
+
};
|
|
29
|
+
status: string;
|
|
30
|
+
createdAt: string;
|
|
31
|
+
statusUpdatedAt: string;
|
|
32
|
+
closedAt: undefined;
|
|
33
|
+
lastEvent: undefined;
|
|
34
|
+
lastEventCategory: undefined;
|
|
35
|
+
lastEventAt: undefined;
|
|
36
|
+
trackingCategoryCode: undefined;
|
|
37
|
+
returnTrackingNumber: undefined;
|
|
38
|
+
returnLabelBase64: undefined;
|
|
39
|
+
returnCreatedAt: undefined;
|
|
40
|
+
returnClosedAt: undefined;
|
|
41
|
+
deliveryType: MplDeliveryType;
|
|
42
|
+
pickupPoint: MplPickupPoint | null;
|
|
43
|
+
weightKg: number;
|
|
44
|
+
deliveredAt?: string;
|
|
45
|
+
returnedAt?: string;
|
|
46
|
+
trackingSource?: string;
|
|
47
|
+
}>;
|
|
48
|
+
createReturn(data: MplShipmentData, orderId: string): Promise<MplShipmentData>;
|
|
16
49
|
refreshStatus(data: MplShipmentData): Promise<MplShipmentData>;
|
|
17
50
|
cancelShipment(data: MplShipmentData): Promise<MplShipmentData>;
|
|
18
51
|
getLabel(data: MplShipmentData): Promise<Buffer<ArrayBuffer>>;
|
|
@@ -25,6 +58,7 @@ export declare class MplService {
|
|
|
25
58
|
trackingNumbers?: string[];
|
|
26
59
|
tag?: string;
|
|
27
60
|
checkList?: boolean;
|
|
61
|
+
requestId?: string;
|
|
28
62
|
}): Promise<Record<string, unknown>>;
|
|
29
63
|
extractShipment(orderOrCart: {
|
|
30
64
|
metadata?: Record<string, unknown> | null;
|
|
@@ -10,382 +10,94 @@ const store_reference_1 = require("../../core/store-reference");
|
|
|
10
10
|
const tracking_1 = require("../../lib/modules/shipping/tracking");
|
|
11
11
|
const client_1 = require("./client");
|
|
12
12
|
const types_1 = require("./types");
|
|
13
|
-
const SANDBOX_API_URL = "https://sandbox.api.posta.hu/v2/mplapi";
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
const PROD_TRACKING_API_URL = "https://core.api.posta.hu/v2/nyomkovetes";
|
|
17
|
-
const SANDBOX_PUSH_TRACKING_API_URL = "https://sandbox.api.posta.hu/v2/mplapi-tracking";
|
|
18
|
-
const PROD_PUSH_TRACKING_API_URL = "https://core.api.posta.hu/v2/mplapi-tracking";
|
|
19
|
-
const DEFAULT_PUSH_TRACKING_STREAM_URL = "https://net.posta.hu/tracking/public/tracking/TrackingData";
|
|
20
|
-
const SANDBOX_TOKEN_URL = "https://sandbox.api.posta.hu/oauth2/token";
|
|
21
|
-
const PROD_TOKEN_URL = "https://core.api.posta.hu/oauth2/token";
|
|
22
|
-
const PUBLIC_TRACKING_URL = "https://www.posta.hu/nyomkovetes/nyitooldal";
|
|
23
|
-
function loadMplConfig(env = process.env) {
|
|
24
|
-
const sandbox = env.MPL_SANDBOX !== "false";
|
|
25
|
-
const paymentMode = env.MPL_PAYMENT_MODE?.trim() || "";
|
|
26
|
-
if (env.MPL_ENABLED === "true" && !paymentMode) {
|
|
27
|
-
throw new types_1.MplConfigError("MPL_ENABLED=true esetén az MPL_PAYMENT_MODE explicit, szerződés szerinti beállítása kötelező.");
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
apiUrl: env.MPL_API_URL?.trim() || (sandbox ? SANDBOX_API_URL : PROD_API_URL),
|
|
31
|
-
trackingApiUrl: env.MPL_TRACKING_API_URL?.trim() || (sandbox ? SANDBOX_TRACKING_API_URL : PROD_TRACKING_API_URL),
|
|
32
|
-
pushTrackingApiUrl: env.MPL_PUSH_TRACKING_API_URL?.trim() || (sandbox ? SANDBOX_PUSH_TRACKING_API_URL : PROD_PUSH_TRACKING_API_URL),
|
|
33
|
-
pushTrackingStreamUrl: env.MPL_PUSH_TRACKING_STREAM_URL?.trim() || DEFAULT_PUSH_TRACKING_STREAM_URL,
|
|
34
|
-
tokenUrl: env.MPL_TOKEN_URL?.trim() || (sandbox ? SANDBOX_TOKEN_URL : PROD_TOKEN_URL),
|
|
35
|
-
clientId: env.MPL_API_KEY?.trim() || "",
|
|
36
|
-
clientSecret: env.MPL_API_SECRET?.trim() || "",
|
|
37
|
-
sandbox,
|
|
38
|
-
developer: env.MPL_DEVELOPER?.trim() || "MEDUSA WEBSHOP CORE",
|
|
39
|
-
agreement: env.MPL_AGREEMENT?.trim() || "",
|
|
40
|
-
accountNo: env.MPL_ACCOUNT_NO?.trim() || undefined,
|
|
41
|
-
senderName: env.MPL_SENDER_NAME?.trim() || "",
|
|
42
|
-
senderEmail: env.MPL_SENDER_EMAIL?.trim() || "",
|
|
43
|
-
senderPhone: env.MPL_SENDER_PHONE?.trim() || "",
|
|
44
|
-
senderPostCode: env.MPL_SENDER_POST_CODE?.trim() || "",
|
|
45
|
-
senderCity: env.MPL_SENDER_CITY?.trim() || "",
|
|
46
|
-
senderAddress: env.MPL_SENDER_ADDRESS?.trim() || "",
|
|
47
|
-
paymentMode,
|
|
48
|
-
tag: env.MPL_TAG?.trim() || undefined,
|
|
49
|
-
basicServiceCode: env.MPL_BASIC_SERVICE_CODE?.trim() || "",
|
|
50
|
-
extraServices: splitCsv(env.MPL_EXTRA_SERVICES),
|
|
51
|
-
homeDeliveryMode: env.MPL_HOME_DELIVERY_MODE?.trim() || "HA",
|
|
52
|
-
homeDeliveryPriceHuf: numberFromEnv(env.MPL_HOME_DELIVERY_PRICE_HUF, 1990),
|
|
53
|
-
pointPriceHuf: numberFromEnv(env.MPL_POINT_PRICE_HUF, 1290),
|
|
54
|
-
freeShippingThresholdHuf: optionalNumber(env.MPL_FREE_SHIPPING_THRESHOLD_HUF),
|
|
55
|
-
timeoutMs: numberFromEnv(env.MPL_TIMEOUT_MS, 15000),
|
|
56
|
-
defaultWeightKg: numberFromEnv(env.MPL_DEFAULT_WEIGHT_KG, 1),
|
|
57
|
-
labelType: labelTypeFromEnv(env.MPL_LABEL_TYPE),
|
|
58
|
-
packageRetention: integerFromEnv(env.MPL_PACKAGE_RETENTION, 5),
|
|
59
|
-
trackingEnabled: env.MPL_TRACKING_ENABLED === "true",
|
|
60
|
-
pushTrackingEnabled: env.MPL_PUSH_TRACKING_ENABLED === "true",
|
|
61
|
-
trackingAccountCode: env.MPL_TRACKING_ACCOUNT_CODE?.trim() || undefined,
|
|
62
|
-
pushReadWindowMs: integerFromEnv(env.MPL_PUSH_READ_WINDOW_MS, 8000),
|
|
63
|
-
trackingLanguage: trackingLanguage(env.MPL_TRACKING_LANGUAGE),
|
|
64
|
-
};
|
|
65
|
-
}
|
|
13
|
+
const SANDBOX_API_URL = "https://sandbox.api.posta.hu/v2/mplapi", PROD_API_URL = "https://core.api.posta.hu/v2/mplapi", SANDBOX_TRACKING_API_URL = "https://sandbox.api.posta.hu/v2/nyomkovetes", PROD_TRACKING_API_URL = "https://core.api.posta.hu/v2/nyomkovetes", SANDBOX_PUSH_TRACKING_API_URL = "https://sandbox.api.posta.hu/v2/mplapi-tracking", PROD_PUSH_TRACKING_API_URL = "https://core.api.posta.hu/v2/mplapi-tracking", DEFAULT_PUSH_TRACKING_STREAM_URL = "https://net.posta.hu/tracking/public/tracking/TrackingData", SANDBOX_TOKEN_URL = "https://sandbox.api.posta.hu/oauth2/token", PROD_TOKEN_URL = "https://core.api.posta.hu/oauth2/token", PUBLIC_TRACKING_URL = "https://www.posta.hu/nyomkovetes/nyitooldal";
|
|
14
|
+
function loadMplConfig(env = process.env) { const sandbox = env.MPL_SANDBOX !== "false", paymentMode = env.MPL_PAYMENT_MODE?.trim() || ""; if (env.MPL_ENABLED === "true" && !paymentMode)
|
|
15
|
+
throw new types_1.MplConfigError("MPL_ENABLED=true esetén az MPL_PAYMENT_MODE explicit, szerződés szerinti beállítása kötelező."); return { apiUrl: env.MPL_API_URL?.trim() || (sandbox ? SANDBOX_API_URL : PROD_API_URL), trackingApiUrl: env.MPL_TRACKING_API_URL?.trim() || (sandbox ? SANDBOX_TRACKING_API_URL : PROD_TRACKING_API_URL), pushTrackingApiUrl: env.MPL_PUSH_TRACKING_API_URL?.trim() || (sandbox ? SANDBOX_PUSH_TRACKING_API_URL : PROD_PUSH_TRACKING_API_URL), pushTrackingStreamUrl: env.MPL_PUSH_TRACKING_STREAM_URL?.trim() || DEFAULT_PUSH_TRACKING_STREAM_URL, tokenUrl: env.MPL_TOKEN_URL?.trim() || (sandbox ? SANDBOX_TOKEN_URL : PROD_TOKEN_URL), clientId: env.MPL_API_KEY?.trim() || "", clientSecret: env.MPL_API_SECRET?.trim() || "", sandbox, developer: env.MPL_DEVELOPER?.trim() || "MEDUSA WEBSHOP CORE", agreement: env.MPL_AGREEMENT?.trim() || "", accountNo: env.MPL_ACCOUNT_NO?.trim() || undefined, senderName: env.MPL_SENDER_NAME?.trim() || "", senderEmail: env.MPL_SENDER_EMAIL?.trim() || "", senderPhone: env.MPL_SENDER_PHONE?.trim() || "", senderPostCode: env.MPL_SENDER_POST_CODE?.trim() || "", senderCity: env.MPL_SENDER_CITY?.trim() || "", senderAddress: env.MPL_SENDER_ADDRESS?.trim() || "", paymentMode, tag: env.MPL_TAG?.trim() || undefined, basicServiceCode: env.MPL_BASIC_SERVICE_CODE?.trim() || "", extraServices: splitCsv(env.MPL_EXTRA_SERVICES), homeDeliveryMode: env.MPL_HOME_DELIVERY_MODE?.trim() || "HA", homeDeliveryPriceHuf: numberFromEnv(env.MPL_HOME_DELIVERY_PRICE_HUF, 1990), pointPriceHuf: numberFromEnv(env.MPL_POINT_PRICE_HUF, 1290), freeShippingThresholdHuf: optionalNumber(env.MPL_FREE_SHIPPING_THRESHOLD_HUF), timeoutMs: numberFromEnv(env.MPL_TIMEOUT_MS, 15000), defaultWeightKg: numberFromEnv(env.MPL_DEFAULT_WEIGHT_KG, 1), labelType: labelTypeFromEnv(env.MPL_LABEL_TYPE), packageRetention: integerFromEnv(env.MPL_PACKAGE_RETENTION, 5), trackingEnabled: env.MPL_TRACKING_ENABLED === "true", pushTrackingEnabled: env.MPL_PUSH_TRACKING_ENABLED === "true", trackingAccountCode: env.MPL_TRACKING_ACCOUNT_CODE?.trim() || undefined, pushReadWindowMs: integerFromEnv(env.MPL_PUSH_READ_WINDOW_MS, 8000), trackingLanguage: trackingLanguage(env.MPL_TRACKING_LANGUAGE) }; }
|
|
66
16
|
class MplService {
|
|
67
|
-
constructor(config = loadMplConfig()) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
async createShipment(order) {
|
|
82
|
-
if (!this.client.isConfigured())
|
|
83
|
-
throw new types_1.MplConfigError();
|
|
84
|
-
const existing = this.extractShipment(order);
|
|
85
|
-
if (!existing)
|
|
86
|
-
throw new types_1.MplValidationError("A rendelés nem MPL szállítású.");
|
|
87
|
-
if (existing.trackingNumber && existing.status !== "CANCELLED")
|
|
88
|
-
return existing;
|
|
89
|
-
const reference = (0, store_reference_1.createStoreReference)(order?.display_id ?? order?.id ?? Date.now(), 30);
|
|
90
|
-
const recipientAddress = order?.shipping_address ?? {};
|
|
91
|
-
const recipientName = [recipientAddress.first_name, recipientAddress.last_name]
|
|
92
|
-
.filter(Boolean)
|
|
93
|
-
.join(" ")
|
|
94
|
-
.trim() || recipientAddress.company;
|
|
95
|
-
if (!recipientName) {
|
|
96
|
-
throw new types_1.MplValidationError("Címzettnév szükséges az MPL feladáshoz.");
|
|
97
|
-
}
|
|
98
|
-
if (!isEmail(order?.email)) {
|
|
99
|
-
throw new types_1.MplValidationError("Érvényes e-mail-cím szükséges az MPL feladáshoz.");
|
|
100
|
-
}
|
|
101
|
-
const delivery = recipientDelivery(existing, recipientAddress, this.config.homeDeliveryMode);
|
|
102
|
-
const codAmount = positiveAmount(existing.codAmount);
|
|
103
|
-
const request = {
|
|
104
|
-
developer: this.config.developer,
|
|
105
|
-
webshopId: reference,
|
|
106
|
-
orderId: reference,
|
|
107
|
-
sender: {
|
|
108
|
-
agreement: this.config.agreement,
|
|
109
|
-
...(this.config.accountNo ? { accountNo: this.config.accountNo } : {}),
|
|
110
|
-
contact: {
|
|
111
|
-
name: this.config.senderName,
|
|
112
|
-
email: this.config.senderEmail,
|
|
113
|
-
phone: normalizeMplPhone(this.config.senderPhone),
|
|
114
|
-
},
|
|
115
|
-
address: {
|
|
116
|
-
postCode: this.config.senderPostCode,
|
|
117
|
-
city: this.config.senderCity,
|
|
118
|
-
address: this.config.senderAddress,
|
|
119
|
-
},
|
|
120
|
-
},
|
|
121
|
-
paymentMode: this.config.paymentMode,
|
|
122
|
-
...(this.config.tag ? { tag: this.config.tag } : {}),
|
|
123
|
-
recipient: {
|
|
124
|
-
contact: {
|
|
125
|
-
name: recipientName,
|
|
126
|
-
email: String(order.email).trim(),
|
|
127
|
-
phone: normalizeMplPhone(recipientAddress.phone),
|
|
128
|
-
},
|
|
129
|
-
address: delivery.address,
|
|
130
|
-
...(delivery.parcelPickupSite ? { parcelPickupSite: delivery.parcelPickupSite } : {}),
|
|
131
|
-
},
|
|
132
|
-
item: [
|
|
133
|
-
{
|
|
134
|
-
customData1: `Rendelés: ${reference}`,
|
|
135
|
-
weight: {
|
|
136
|
-
value: Math.max(1, Math.round(validateWeight(existing.weightKg) * 1000)),
|
|
137
|
-
unit: "G",
|
|
138
|
-
},
|
|
139
|
-
services: {
|
|
140
|
-
basic: this.config.basicServiceCode,
|
|
141
|
-
...(this.config.extraServices.length ? { extra: this.config.extraServices } : {}),
|
|
142
|
-
...(codAmount > 0 ? { cod: codAmount } : {}),
|
|
143
|
-
deliveryMode: delivery.deliveryMode,
|
|
144
|
-
},
|
|
145
|
-
...(delivery.size ? { size: delivery.size } : {}),
|
|
146
|
-
},
|
|
147
|
-
],
|
|
148
|
-
packageRetention: this.config.packageRetention,
|
|
149
|
-
};
|
|
150
|
-
const response = await this.client.createShipments([request]);
|
|
151
|
-
const result = response?.[0];
|
|
152
|
-
const trackingNumber = result?.trackingNumber?.trim();
|
|
153
|
-
if (!trackingNumber) {
|
|
154
|
-
throw new types_1.MplValidationError("Az MPL nem adott vissza ragszámot a feladáshoz.");
|
|
155
|
-
}
|
|
156
|
-
const createdAt = new Date().toISOString();
|
|
157
|
-
return {
|
|
158
|
-
...existing,
|
|
159
|
-
codAmount,
|
|
160
|
-
trackingNumber,
|
|
161
|
-
trackingUrl: PUBLIC_TRACKING_URL,
|
|
162
|
-
packageTrackingNumbers: result.packageTrackingNumbers,
|
|
163
|
-
labelBase64: result.label,
|
|
164
|
-
status: "CREATED",
|
|
165
|
-
createdAt,
|
|
166
|
-
statusUpdatedAt: createdAt,
|
|
167
|
-
closedAt: undefined,
|
|
168
|
-
lastEvent: undefined,
|
|
169
|
-
lastEventCategory: undefined,
|
|
170
|
-
lastEventAt: undefined,
|
|
171
|
-
trackingCategoryCode: undefined,
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
async refreshStatus(data) {
|
|
175
|
-
const trackingNumber = requireTrackingNumber(data);
|
|
176
|
-
if (this.config.trackingEnabled) {
|
|
177
|
-
const response = await this.client.trackShipment(trackingNumber);
|
|
178
|
-
const event = response.trackAndTrace?.at(-1);
|
|
179
|
-
if (!event)
|
|
180
|
-
return data;
|
|
181
|
-
const eventAt = trackingTimestamp(event) || new Date().toISOString();
|
|
182
|
-
const status = (0, tracking_1.mapMplPullStatus)({
|
|
183
|
-
categoryCode: event.c61 ?? event.c43,
|
|
184
|
-
category: event.c10,
|
|
185
|
-
description: event.c9,
|
|
186
|
-
});
|
|
187
|
-
return {
|
|
188
|
-
...data,
|
|
189
|
-
trackingUrl: data.trackingUrl || PUBLIC_TRACKING_URL,
|
|
190
|
-
status: status || data.status,
|
|
191
|
-
lastEvent: event.c9,
|
|
192
|
-
lastEventCategory: event.c10,
|
|
193
|
-
lastEventAt: eventAt,
|
|
194
|
-
trackingCategoryCode: event.c61 ?? event.c43,
|
|
195
|
-
...(status ? { statusUpdatedAt: eventAt } : {}),
|
|
196
|
-
trackingSource: "pull",
|
|
197
|
-
...(status === "DELIVERED" ? { deliveredAt: eventAt } : {}),
|
|
198
|
-
...(status === "RETURNED" ? { returnedAt: eventAt } : {}),
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
await this.client.getShipment(trackingNumber);
|
|
202
|
-
return {
|
|
203
|
-
...data,
|
|
204
|
-
trackingUrl: data.trackingUrl || PUBLIC_TRACKING_URL,
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
async cancelShipment(data) {
|
|
208
|
-
const trackingNumber = requireTrackingNumber(data);
|
|
209
|
-
if (data.status === "CANCELLED")
|
|
17
|
+
constructor(config = loadMplConfig()) { this.config = config; this.client = new client_1.MplClient(config); }
|
|
18
|
+
validateSelection(deliveryType, pickupPoint, weight) { const type = validateDeliveryType(deliveryType); return { deliveryType: type, pickupPoint: type === "POINT" ? validatePickupPoint(pickupPoint) : null, weightKg: validateWeight(weight ?? this.config.defaultWeightKg), codAmount: 0, status: "CREATED" }; }
|
|
19
|
+
async createShipment(order) { if (!this.client.isConfigured())
|
|
20
|
+
throw new types_1.MplConfigError(); const existing = this.extractShipment(order); if (!existing)
|
|
21
|
+
throw new types_1.MplValidationError("A rendelés nem MPL szállítású."); if (existing.trackingNumber && existing.status !== "CANCELLED")
|
|
22
|
+
return existing; const reference = (0, store_reference_1.createStoreReference)(order?.display_id ?? order?.id ?? Date.now(), 30), a = order?.shipping_address ?? {}, recipientName = [a.first_name, a.last_name].filter(Boolean).join(" ").trim() || a.company; if (!recipientName)
|
|
23
|
+
throw new types_1.MplValidationError("Címzettnév szükséges az MPL feladáshoz."); if (!isEmail(order?.email))
|
|
24
|
+
throw new types_1.MplValidationError("Érvényes e-mail-cím szükséges az MPL feladáshoz."); const delivery = recipientDelivery(existing, a, this.config.homeDeliveryMode), phone = normalizeMplPhone(a.phone), codAmount = positiveAmount(existing.codAmount), request = { developer: this.config.developer, webshopId: reference, orderId: reference, sender: storeSender(this.config), paymentMode: this.config.paymentMode, ...(this.config.tag ? { tag: this.config.tag } : {}), recipient: { contact: { name: recipientName, email: String(order.email).trim(), phone }, address: delivery.address, ...(delivery.parcelPickupSite ? { parcelPickupSite: delivery.parcelPickupSite } : {}) }, item: [{ customData1: `Rendelés: ${reference}`, weight: { value: Math.max(1, Math.round(validateWeight(existing.weightKg) * 1000)), unit: "G" }, services: { basic: this.config.basicServiceCode, ...(this.config.extraServices.length ? { extra: this.config.extraServices } : {}), ...(codAmount > 0 ? { cod: codAmount } : {}), deliveryMode: delivery.deliveryMode }, ...(delivery.size ? { size: delivery.size } : {}) }], packageRetention: this.config.packageRetention }; const response = await this.client.createShipments([request]), result = response?.[0], trackingNumber = result?.trackingNumber?.trim(); if (!trackingNumber)
|
|
25
|
+
throw uncertain("Az MPL csomaglétrehozási válasza nem tartalmazott ragszámot; szolgáltatói egyeztetés szükséges."); const createdAt = new Date().toISOString(); return { ...existing, codAmount, trackingNumber, trackingUrl: PUBLIC_TRACKING_URL, packageTrackingNumbers: result.packageTrackingNumbers, labelBase64: result.label, returnContext: { senderName: recipientName, senderEmail: String(order.email).trim(), senderPhone: phone, senderPostCode: delivery.address.postCode, senderCity: delivery.address.city, senderAddress: delivery.address.address }, status: "CREATED", createdAt, statusUpdatedAt: createdAt, closedAt: undefined, lastEvent: undefined, lastEventCategory: undefined, lastEventAt: undefined, trackingCategoryCode: undefined, returnTrackingNumber: undefined, returnLabelBase64: undefined, returnCreatedAt: undefined, returnClosedAt: undefined }; }
|
|
26
|
+
async createReturn(data, orderId) { if (!this.client.isConfigured())
|
|
27
|
+
throw new types_1.MplConfigError(); const c = data.returnContext; if (!c)
|
|
28
|
+
throw new types_1.MplValidationError("Az MPL INVERZ visszáruhoz hiányoznak az eredeti címzett adatai."); if (data.returnTrackingNumber) {
|
|
29
|
+
if (data.returnClosedAt)
|
|
210
30
|
return data;
|
|
211
|
-
|
|
212
|
-
|
|
31
|
+
try {
|
|
32
|
+
await this.client.closeShipments({ trackingNumbers: [data.returnTrackingNumber], checkList: false });
|
|
213
33
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
async getLabel(data) {
|
|
218
|
-
if (data.labelBase64)
|
|
219
|
-
return decodeBase64Pdf(data.labelBase64);
|
|
220
|
-
const trackingNumber = requireTrackingNumber(data);
|
|
221
|
-
const response = await this.client.getLabels([trackingNumber], this.config.labelType);
|
|
222
|
-
const label = response.find((item) => item.label)?.label;
|
|
223
|
-
if (!label)
|
|
224
|
-
throw new types_1.MplValidationError("Az MPL nem adott vissza PDF címiratot.");
|
|
225
|
-
return decodeBase64Pdf(label);
|
|
226
|
-
}
|
|
227
|
-
async listDeliveryPlaces(input = {}) {
|
|
228
|
-
const deliveryplacesQuery = {};
|
|
229
|
-
if (input.city?.trim())
|
|
230
|
-
deliveryplacesQuery.city = input.city.trim();
|
|
231
|
-
if (input.postCode?.trim())
|
|
232
|
-
deliveryplacesQuery.postCode = input.postCode.trim();
|
|
233
|
-
return this.client.listDeliveryPlaces({
|
|
234
|
-
...(Object.keys(deliveryplacesQuery).length ? { deliveryplacesQuery } : {}),
|
|
235
|
-
...(input.servicePointType?.length ? { servicePointType: input.servicePointType } : {}),
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
async closeShipments(input) {
|
|
239
|
-
if (!input.trackingNumbers?.length && !input.tag) {
|
|
240
|
-
throw new types_1.MplValidationError("MPL jegyzékzáráshoz ragszám vagy tag szükséges.");
|
|
34
|
+
catch (error) {
|
|
35
|
+
throw uncertainFrom(error, "Az MPL INVERZ visszáru már létrejött, de a jegyzékzárás sikertelen; szolgáltatói egyeztetés szükséges.");
|
|
241
36
|
}
|
|
242
|
-
return
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
return raw && typeof raw === "object" ? raw : null;
|
|
37
|
+
return { ...data, returnClosedAt: new Date().toISOString() };
|
|
38
|
+
} const reference = (0, store_reference_1.createStoreReference)(`${orderId}-RETURN`, 30), request = { developer: this.config.developer, webshopId: reference, orderId: reference, labelType: "A4", sender: { agreement: this.config.agreement, ...(this.config.accountNo ? { accountNo: this.config.accountNo } : {}), contact: { name: c.senderName, email: c.senderEmail, phone: c.senderPhone }, address: { postCode: c.senderPostCode, city: c.senderCity, address: c.senderAddress } }, paymentMode: this.config.paymentMode, ...(this.config.tag ? { tag: this.config.tag } : {}), recipient: { contact: { name: this.config.senderName, email: this.config.senderEmail, phone: normalizeMplPhone(this.config.senderPhone) }, address: { postCode: this.config.senderPostCode, city: this.config.senderCity, address: this.config.senderAddress } }, item: [{ customData1: `Visszáru: ${orderId}`, weight: { value: 1, unit: "G" }, services: { basic: this.config.basicServiceCode, extra: ["K_INV"], deliveryMode: this.config.homeDeliveryMode } }], packageRetention: this.config.packageRetention }; const response = await this.client.createShipments([request]), result = response?.[0], tn = result?.trackingNumber?.trim() || result?.replacementTrackingNumber?.trim(); if (!tn)
|
|
39
|
+
throw uncertain("Az MPL INVERZ visszáru létrehozása után nem érkezett ragszám; szolgáltatói egyeztetés szükséges."); const label = result?.label || result?.replacementLabels?.find((x) => x.trackingNumber === tn)?.label, created = new Date().toISOString(); try {
|
|
40
|
+
await this.client.closeShipments({ trackingNumbers: [tn], checkList: false });
|
|
247
41
|
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
throw uncertainFrom(error, `Az MPL INVERZ visszáru (${tn}) létrejött, de a jegyzékzárás sikertelen; szolgáltatói egyeztetés szükséges.`);
|
|
44
|
+
} return { ...data, returnTrackingNumber: tn, returnLabelBase64: label, returnCreatedAt: created, returnClosedAt: new Date().toISOString() }; }
|
|
45
|
+
async refreshStatus(data) { const trackingNumber = requireTrackingNumber(data); if (this.config.trackingEnabled) {
|
|
46
|
+
const response = await this.client.trackShipment(trackingNumber), event = response.trackAndTrace?.at(-1);
|
|
47
|
+
if (!event)
|
|
48
|
+
return data;
|
|
49
|
+
const eventAt = trackingTimestamp(event) || new Date().toISOString(), status = (0, tracking_1.mapMplPullStatus)({ categoryCode: event.c61 ?? event.c43, category: event.c10, description: event.c9 });
|
|
50
|
+
return { ...data, trackingUrl: data.trackingUrl || PUBLIC_TRACKING_URL, status: status || data.status, lastEvent: event.c9, lastEventCategory: event.c10, lastEventAt: eventAt, trackingCategoryCode: event.c61 ?? event.c43, ...(status ? { statusUpdatedAt: eventAt } : {}), trackingSource: "pull", ...(status === "DELIVERED" ? { deliveredAt: eventAt } : {}), ...(status === "RETURNED" ? { returnedAt: eventAt } : {}) };
|
|
51
|
+
} await this.client.getShipment(trackingNumber); return { ...data, trackingUrl: data.trackingUrl || PUBLIC_TRACKING_URL }; }
|
|
52
|
+
async cancelShipment(data) { const trackingNumber = requireTrackingNumber(data); if (data.status === "CANCELLED")
|
|
53
|
+
return data; if (data.closedAt)
|
|
54
|
+
throw new types_1.MplValidationError("Lezárt MPL feladási jegyzékből a Core nem töröl küldeményt."); await this.client.deleteShipment(trackingNumber); return { ...data, status: "CANCELLED", statusUpdatedAt: new Date().toISOString() }; }
|
|
55
|
+
async getLabel(data) { if (data.labelBase64)
|
|
56
|
+
return decodeBase64Pdf(data.labelBase64); const r = await this.client.getLabels([requireTrackingNumber(data)], this.config.labelType), label = r.find((x) => x.label)?.label; if (!label)
|
|
57
|
+
throw new types_1.MplValidationError("Az MPL nem adott vissza PDF címiratot."); return decodeBase64Pdf(label); }
|
|
58
|
+
async listDeliveryPlaces(input = {}) { const q = {}; if (input.city?.trim())
|
|
59
|
+
q.city = input.city.trim(); if (input.postCode?.trim())
|
|
60
|
+
q.postCode = input.postCode.trim(); return this.client.listDeliveryPlaces({ ...Object.keys(q).length ? { deliveryplacesQuery: q } : {}, ...(input.servicePointType?.length ? { servicePointType: input.servicePointType } : {}) }); }
|
|
61
|
+
async closeShipments(input) { if (!input.trackingNumbers?.length && !input.tag && !input.requestId)
|
|
62
|
+
throw new types_1.MplValidationError("MPL jegyzékzáráshoz ragszám, tag vagy requestId szükséges."); return this.client.closeShipments({ ...input, checkList: input.checkList ?? true }); }
|
|
63
|
+
extractShipment(orderOrCart) { const raw = orderOrCart.metadata?.mpl; return raw && typeof raw === "object" ? raw : null; }
|
|
248
64
|
}
|
|
249
65
|
exports.MplService = MplService;
|
|
250
|
-
function validateDeliveryType(value) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
throw new types_1.MplValidationError("
|
|
254
|
-
}
|
|
255
|
-
function
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
return
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
function
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
return number;
|
|
286
|
-
}
|
|
287
|
-
function normalizeMplPhone(value) {
|
|
288
|
-
const raw = String(value ?? "").trim();
|
|
289
|
-
if (!raw)
|
|
290
|
-
throw new types_1.MplValidationError("Telefonszám szükséges az MPL szállításhoz.");
|
|
291
|
-
const compact = raw.replace(/[\s()-]/g, "");
|
|
292
|
-
if (compact.startsWith("+"))
|
|
293
|
-
return compact;
|
|
294
|
-
if (compact.startsWith("06"))
|
|
295
|
-
return `+36${compact.slice(2)}`;
|
|
296
|
-
if (compact.startsWith("36"))
|
|
297
|
-
return `+${compact}`;
|
|
298
|
-
return compact;
|
|
299
|
-
}
|
|
300
|
-
function recipientDelivery(data, address, homeDeliveryMode) {
|
|
301
|
-
if (data.deliveryType === "POINT") {
|
|
302
|
-
const point = validatePickupPoint(data.pickupPoint);
|
|
303
|
-
return {
|
|
304
|
-
deliveryMode: point.deliveryMode,
|
|
305
|
-
size: point.size,
|
|
306
|
-
parcelPickupSite: point.id,
|
|
307
|
-
address: { postCode: point.postCode, city: point.city, address: point.address },
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
const postCode = text(address.postal_code);
|
|
311
|
-
const city = text(address.city);
|
|
312
|
-
const streetAddress = text(address.address_1);
|
|
313
|
-
if (!postCode || !city || !streetAddress) {
|
|
314
|
-
throw new types_1.MplValidationError("Hiányos szállítási cím az MPL házhozszállításhoz.");
|
|
315
|
-
}
|
|
316
|
-
return {
|
|
317
|
-
deliveryMode: homeDeliveryMode,
|
|
318
|
-
address: {
|
|
319
|
-
postCode,
|
|
320
|
-
city,
|
|
321
|
-
address: [streetAddress, optionalText(address.address_2)].filter(Boolean).join(" "),
|
|
322
|
-
},
|
|
323
|
-
};
|
|
324
|
-
}
|
|
325
|
-
function requireTrackingNumber(data) {
|
|
326
|
-
const value = data.trackingNumber?.trim();
|
|
327
|
-
if (!value)
|
|
328
|
-
throw new types_1.MplValidationError("Hiányzik az MPL ragszám.");
|
|
329
|
-
return value;
|
|
330
|
-
}
|
|
331
|
-
function trackingTimestamp(event) {
|
|
332
|
-
const date = event.c11?.trim();
|
|
333
|
-
const time = event.c12?.trim();
|
|
334
|
-
const raw = [date, time].filter(Boolean).join(" ");
|
|
335
|
-
if (!raw)
|
|
336
|
-
return undefined;
|
|
337
|
-
const parsed = new Date(raw);
|
|
338
|
-
return Number.isNaN(parsed.getTime()) ? raw : parsed.toISOString();
|
|
339
|
-
}
|
|
340
|
-
function decodeBase64Pdf(value) {
|
|
341
|
-
const base64 = value.includes(",") ? value.slice(value.indexOf(",") + 1) : value;
|
|
342
|
-
return Buffer.from(base64.replace(/\s+/g, ""), "base64");
|
|
343
|
-
}
|
|
344
|
-
function isEmail(value) {
|
|
345
|
-
return /^\S+@\S+\.\S+$/.test(String(value ?? "").trim());
|
|
346
|
-
}
|
|
347
|
-
function text(value) {
|
|
348
|
-
return String(value ?? "").trim();
|
|
349
|
-
}
|
|
350
|
-
function optionalText(value) {
|
|
351
|
-
const valueText = text(value);
|
|
352
|
-
return valueText || undefined;
|
|
353
|
-
}
|
|
354
|
-
function splitCsv(value) {
|
|
355
|
-
return value?.split(",").map((item) => item.trim()).filter(Boolean) ?? [];
|
|
356
|
-
}
|
|
357
|
-
function positiveAmount(value) {
|
|
358
|
-
const number = Number(value);
|
|
359
|
-
return Number.isFinite(number) && number > 0 ? number : 0;
|
|
360
|
-
}
|
|
361
|
-
function numberFromEnv(value, fallback) {
|
|
362
|
-
const number = Number(value);
|
|
363
|
-
return Number.isFinite(number) && number > 0 ? number : fallback;
|
|
364
|
-
}
|
|
365
|
-
function optionalNumber(value) {
|
|
366
|
-
const number = Number(value);
|
|
367
|
-
return value?.trim() && Number.isFinite(number) && number >= 0 ? number : undefined;
|
|
368
|
-
}
|
|
369
|
-
function integerFromEnv(value, fallback) {
|
|
370
|
-
const number = Number(value);
|
|
371
|
-
return Number.isInteger(number) && number > 0 ? number : fallback;
|
|
372
|
-
}
|
|
373
|
-
function labelTypeFromEnv(value) {
|
|
374
|
-
const allowed = [
|
|
375
|
-
"A4",
|
|
376
|
-
"A5",
|
|
377
|
-
"A5inA4",
|
|
378
|
-
"A5E",
|
|
379
|
-
"A5E_EXTRA",
|
|
380
|
-
"A5E_STAND",
|
|
381
|
-
"A6",
|
|
382
|
-
"A6inA4",
|
|
383
|
-
];
|
|
384
|
-
return allowed.includes(value) ? value : "A6";
|
|
385
|
-
}
|
|
386
|
-
function trackingLanguage(value) {
|
|
387
|
-
return value === "en" || value === "de" ? value : "hu";
|
|
388
|
-
}
|
|
66
|
+
function validateDeliveryType(value) { if (value === "HOME" || value === "POINT")
|
|
67
|
+
return value; throw new types_1.MplValidationError("Ismeretlen MPL szállítási mód."); }
|
|
68
|
+
function validatePickupPoint(value) { if (!value || typeof value !== "object")
|
|
69
|
+
throw new types_1.MplValidationError("MPL átvételi pont kiválasztása kötelező."); const p = value, id = text(p.id ?? p.parcelPickupSite ?? p.parcel_pickup_site), name = text(p.name ?? p.displayName ?? p.display_name), deliveryMode = text(p.deliveryMode ?? p.delivery_mode), postCode = text(p.postCode ?? p.postalCode ?? p.post_code ?? p.postal_code), city = text(p.city), address = text(p.address ?? p.streetAddress ?? p.street_address); if (!id || !name || !deliveryMode || !postCode || !city || !address)
|
|
70
|
+
throw new types_1.MplValidationError("Az MPL fixpont adatai hiányosak (id, name, deliveryMode, postCode, city, address szükséges)."); return { id, name, deliveryMode, servicePointType: optionalText(p.servicePointType ?? p.service_point_type), postCode, city, address, size: optionalText(p.size) }; }
|
|
71
|
+
function validateWeight(value) { const n = Number(value); if (!Number.isFinite(n) || n <= 0)
|
|
72
|
+
throw new types_1.MplValidationError("Az MPL csomagsúlynak pozitív számnak kell lennie."); return n; }
|
|
73
|
+
function normalizeMplPhone(value) { const raw = String(value ?? "").trim(); if (!raw)
|
|
74
|
+
throw new types_1.MplValidationError("Telefonszám szükséges az MPL szállításhoz."); const c = raw.replace(/[\s()-]/g, ""); if (c.startsWith("+"))
|
|
75
|
+
return c; if (c.startsWith("06"))
|
|
76
|
+
return `+36${c.slice(2)}`; if (c.startsWith("36"))
|
|
77
|
+
return `+${c}`; return c; }
|
|
78
|
+
function recipientDelivery(data, address, homeDeliveryMode) { if (data.deliveryType === "POINT") {
|
|
79
|
+
const p = validatePickupPoint(data.pickupPoint);
|
|
80
|
+
return { deliveryMode: p.deliveryMode, size: p.size, parcelPickupSite: p.id, address: { postCode: p.postCode, city: p.city, address: p.address } };
|
|
81
|
+
} const postCode = text(address.postal_code), city = text(address.city), street = text(address.address_1); if (!postCode || !city || !street)
|
|
82
|
+
throw new types_1.MplValidationError("Hiányos szállítási cím az MPL házhozszállításhoz."); return { deliveryMode: homeDeliveryMode, address: { postCode, city, address: [street, optionalText(address.address_2)].filter(Boolean).join(" ") } }; }
|
|
83
|
+
function storeSender(c) { return { agreement: c.agreement, ...(c.accountNo ? { accountNo: c.accountNo } : {}), contact: { name: c.senderName, email: c.senderEmail, phone: normalizeMplPhone(c.senderPhone) }, address: { postCode: c.senderPostCode, city: c.senderCity, address: c.senderAddress } }; }
|
|
84
|
+
function requireTrackingNumber(data) { const v = data.trackingNumber?.trim(); if (!v)
|
|
85
|
+
throw new types_1.MplValidationError("Hiányzik az MPL ragszám."); return v; }
|
|
86
|
+
function trackingTimestamp(e) { const raw = [e.c11?.trim(), e.c12?.trim()].filter(Boolean).join(" "); if (!raw)
|
|
87
|
+
return undefined; const d = new Date(raw); return Number.isNaN(d.getTime()) ? raw : d.toISOString(); }
|
|
88
|
+
function decodeBase64Pdf(v) { const b = v.includes(",") ? v.slice(v.indexOf(",") + 1) : v; return Buffer.from(b.replace(/\s+/g, ""), "base64"); }
|
|
89
|
+
function uncertain(message) { const e = new types_1.MplValidationError(message); e.remoteOutcomeUncertain = true; return e; }
|
|
90
|
+
function uncertainFrom(error, message) { const e = error instanceof Error ? error : new Error(message); const wrapped = new types_1.MplValidationError(`${message}${error instanceof Error ? ` ${error.message}` : ""}`); wrapped.remoteOutcomeUncertain = true; wrapped.cause = e; return wrapped; }
|
|
91
|
+
function isEmail(v) { return /^\S+@\S+\.\S+$/.test(String(v ?? "").trim()); }
|
|
92
|
+
function text(v) { return String(v ?? "").trim(); }
|
|
93
|
+
function optionalText(v) { const t = text(v); return t || undefined; }
|
|
94
|
+
function splitCsv(v) { return v?.split(",").map((x) => x.trim()).filter(Boolean) ?? []; }
|
|
95
|
+
function positiveAmount(v) { const n = Number(v); return Number.isFinite(n) && n > 0 ? n : 0; }
|
|
96
|
+
function numberFromEnv(v, f) { const n = Number(v); return Number.isFinite(n) && n > 0 ? n : f; }
|
|
97
|
+
function optionalNumber(v) { const n = Number(v); return v?.trim() && Number.isFinite(n) && n >= 0 ? n : undefined; }
|
|
98
|
+
function integerFromEnv(v, f) { const n = Number(v); return Number.isInteger(n) && n > 0 ? n : f; }
|
|
99
|
+
function labelTypeFromEnv(v) { const a = ["A4", "A5", "A5inA4", "A5E", "A5E_EXTRA", "A5E_STAND", "A6", "A6inA4"]; return a.includes(v) ? v : "A6"; }
|
|
100
|
+
function trackingLanguage(v) { return v === "en" || v === "de" ? v : "hu"; }
|
|
389
101
|
exports.mplService = new MplService(loadMplConfig());
|
|
390
102
|
exports.MPL_PUBLIC_TRACKING_URL = PUBLIC_TRACKING_URL;
|
|
391
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbXBsL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBMEJBLHNDQTZDQztBQXFNRCxvREFHQztBQUVELGtEQTZCQztBQUVELHdDQU1DO0FBRUQsOENBUUM7QUFoVUQsZ0VBQWlFO0FBQ2pFLGtFQUFzRTtBQUN0RSxxQ0FBb0M7QUFDcEMsbUNBVWdCO0FBRWhCLE1BQU0sZUFBZSxHQUFHLHdDQUF3QyxDQUFBO0FBQ2hFLE1BQU0sWUFBWSxHQUFHLHFDQUFxQyxDQUFBO0FBQzFELE1BQU0sd0JBQXdCLEdBQUcsNkNBQTZDLENBQUE7QUFDOUUsTUFBTSxxQkFBcUIsR0FBRywwQ0FBMEMsQ0FBQTtBQUN4RSxNQUFNLDZCQUE2QixHQUFHLGlEQUFpRCxDQUFBO0FBQ3ZGLE1BQU0sMEJBQTBCLEdBQUcsOENBQThDLENBQUE7QUFDakYsTUFBTSxnQ0FBZ0MsR0FBRyw0REFBNEQsQ0FBQTtBQUNyRyxNQUFNLGlCQUFpQixHQUFHLDJDQUEyQyxDQUFBO0FBQ3JFLE1BQU0sY0FBYyxHQUFHLHdDQUF3QyxDQUFBO0FBQy9ELE1BQU0sbUJBQW1CLEdBQUcsNkNBQTZDLENBQUE7QUFFekUsU0FBZ0IsYUFBYSxDQUFDLE1BQTBDLE9BQU8sQ0FBQyxHQUFHO0lBQ2pGLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEtBQUssT0FBTyxDQUFBO0lBQzNDLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDdEQsSUFBSSxHQUFHLENBQUMsV0FBVyxLQUFLLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxzQkFBYyxDQUN0QiwrRkFBK0YsQ0FDaEcsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxFQUFFLEdBQUcsQ0FB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
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvbXBsL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0Esc0NBQW11RTtBQUVudUUsb0RBQW1MO0FBQUEsa0RBQTgwQjtBQUFBLHdDQUE0TDtBQUFBLDhDQUFvVTtBQVBqZ0QsZ0VBQWlFO0FBQ2pFLGtFQUFzRTtBQUN0RSxxQ0FBb0M7QUFDcEMsbUNBQXNOO0FBQ3ROLE1BQU0sZUFBZSxHQUFDLHdDQUF3QyxFQUFDLFlBQVksR0FBQyxxQ0FBcUMsRUFBQyx3QkFBd0IsR0FBQyw2Q0FBNkMsRUFBQyxxQkFBcUIsR0FBQywwQ0FBMEMsRUFBQyw2QkFBNkIsR0FBQyxpREFBaUQsRUFBQywwQkFBMEIsR0FBQyw4Q0FBOEMsRUFBQyxnQ0FBZ0MsR0FBQyw0REFBNEQsRUFBQyxpQkFBaUIsR0FBQywyQ0FBMkMsRUFBQyxjQUFjLEdBQUMsd0NBQXdDLEVBQUMsbUJBQW1CLEdBQUMsNkNBQTZDLENBQUE7QUFDenFCLFNBQWdCLGFBQWEsQ0FBQyxNQUFvQyxPQUFPLENBQUMsR0FBRyxJQUFZLE1BQU0sT0FBTyxHQUFDLEdBQUcsQ0FBQyxXQUFXLEtBQUcsT0FBTyxFQUFDLFdBQVcsR0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLElBQUUsRUFBRSxDQUFDLENBQUEsSUFBRyxHQUFHLENBQUMsV0FBVyxLQUFHLE1BQU0sSUFBRSxDQUFDLFdBQVc7SUFBQyxNQUFNLElBQUksc0JBQWMsQ0FBQywrRkFBK0YsQ0FBQyxDQUFDLENBQUEsT0FBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxJQUFFLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQSxlQUFlLENBQUEsQ0FBQyxDQUFBLFlBQVksQ0FBQyxFQUFDLGNBQWMsRUFBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxFQUFF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QU8sRUFBQyxFQUFDLElBQUksRUFBQyxhQUFhLEVBQUMsS0FBSyxFQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUMsS0FBSyxFQUFDLEVBQUMsT0FBTyxFQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQSxDQUFDLENBQUEsRUFBQyxnQkFBZ0IsRUFBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUMsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxhQUFhLFNBQVMsRUFBRSxFQUFDLE1BQU0sRUFBQyxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFDLEVBQUMsUUFBUSxFQUFDLEVBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQSxDQUFDLENBQUEsRUFBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUMsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDLEVBQUMsR0FBRyxDQUFDLFNBQVMsR0FBQyxDQUFDLENBQUEsQ0FBQyxDQUFBLEVBQUMsR0FBRyxFQUFDLFNBQVMsRUFBQyxDQUFBLENBQUMsQ0FBQSxFQUFFLENBQUMsRUFBQyxZQUFZLEVBQUMsUUFBUSxDQUFDLFlBQVksRUFBQyxFQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQSxFQUFDLElBQUksRUFBQyxRQUFRLENBQUMsSUFBSSxFQUFDLENBQUEsQ0FBQyxDQUFBLEVBQUUsQ0FBQyxFQUFDLENBQUMsRUFBQyxnQkFB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QUMsU0FBUyxFQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUEsRUFBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUMsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUMsRUFBQyxPQUFPLEVBQUMsRUFBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBQyxFQUFDLEVBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQSxDQUFDLENBQUEsRUFBQyxHQUFHLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUMsQ0FBQSxDQUFDLENBQUEsRUFBRSxDQUFDLEVBQUMsU0FBUyxFQUFDLEVBQUMsT0FBTyxFQUFDLEVBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBQyxLQUFLLEVBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBQyxFQUFDLE9BQU8sRUFBQyxFQUFDLFFBQVEsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxhQUFhLE9BQU8sRUFBRSxFQUFDLE1BQU0s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QUFDLE9BQU8sRUFBQyxFQUFDLENBQUE7QUFBQSxDQUFDLENBQUEsTUFBTSxRQUFRLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBQyxJQUFJLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBQyxNQUFNLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBLElBQUcsQ0FBQyxRQUFRLElBQUUsQ0FBQyxJQUFJLElBQUUsQ0FBQyxNQUFNO0lBQUMsTUFBTSxJQUFJLDBCQUFrQixDQUFDLG1EQUFtRCxDQUFDLENBQUMsQ0FBQSxPQUFNLEVBQUMsWUFBWSxFQUFDLGdCQUFnQixFQUFDLE9BQU8sRUFBQyxFQUFDLFFBQVEsRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFDLENBQUMsTUFBTSxFQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLEVBQUMsQ0FBQSxDQUFBLENBQUM7QUFBQSxTQUFTLFdBQVcsQ0FBQyxDQUFXLElBQUUsT0FBTSxFQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQSxFQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUEsQ0FBQyxDQUFBLEVBQUUsQ0FBQyxFQUFDLE9BQU8sRUFBQyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsVUFBVSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsV0FBVyxFQUFDLEtBQUssRUFBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUMsRUFBQyxPQUFPLEVBQUMsRUFBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBQyxFQUFDLENBQUEsQ0FBQSxDQUFDO0FBQUEsU0FBUyxxQkFBcUIsQ0FBQyxJQUFvQixJQUFFLE1BQU0sQ0FBQyxHQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQSxJQUFHLENBQUMsQ0FBQztJQUFDLE1BQU0sSUFBSSwwQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUEsT0FBTyxDQUFDLENBQUEsQ0FBQSxDQUFDO0FBQUEsU0FBUyxpQkFBaUIsQ0FBQyxDQUFrQixJQUFFLE1BQU0sR0FBRyxHQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLElBQUcsQ0FBQyxHQUFHO0lBQUMsT0FBTyxTQUFTLENBQUMsQ0FBQSxNQUFNLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQSxDQUFDLENBQUEsR0FBRyxDQUFBLENBQUMsQ0FBQSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUEsQ0FBQSxDQUFDO0FBQUEsU0FBUyxlQUFlLENBQUMsQ0FBUSxJQUFFLE1BQU0sQ0FBQyxHQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUEsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFDLEVBQUUsQ0FBQyxFQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQztBQUFBLFNBQVMsU0FBUyxDQUFDLE9BQWMsSUFBRSxNQUFNLENBQUMsR0FB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
|