@hszrdm/core 1.4.0 → 1.5.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 +5582 -3769
- package/.medusa/server/src/admin/index.mjs +5582 -3769
- package/.medusa/server/src/api/admin/back-in-stock/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/back-in-stock/route.js +70 -0
- package/.medusa/server/src/api/admin/customer-activation/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/customer-activation/route.js +97 -0
- package/.medusa/server/src/api/admin/customer-import/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/customer-import/route.js +166 -0
- package/.medusa/server/src/api/admin/order-export/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/order-export/route.js +88 -0
- package/.medusa/server/src/api/admin/product-migration/inventory/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/product-migration/inventory/route.js +164 -0
- package/.medusa/server/src/api/admin/product-migration/price-list-prices/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/product-migration/price-list-prices/route.js +204 -0
- package/.medusa/server/src/api/admin/product-migration/products/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/product-migration/products/route.js +24 -0
- package/.medusa/server/src/api/admin/product-reviews/[id]/route.js +36 -4
- package/.medusa/server/src/api/admin/product-reviews/settings/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/product-reviews/settings/route.js +63 -0
- package/.medusa/server/src/api/admin/system-runtime/route.d.ts +2 -0
- package/.medusa/server/src/api/admin/system-runtime/route.js +18 -0
- package/.medusa/server/src/api/hooks/packeta/status/route.d.ts +2 -0
- package/.medusa/server/src/api/hooks/packeta/status/route.js +55 -0
- package/.medusa/server/src/api/middlewares.js +16 -1
- package/.medusa/server/src/api/store/abandoned-cart/recover/route.d.ts +2 -0
- package/.medusa/server/src/api/store/abandoned-cart/recover/route.js +37 -0
- package/.medusa/server/src/api/store/back-in-stock/route.d.ts +8 -0
- package/.medusa/server/src/api/store/back-in-stock/route.js +124 -0
- package/.medusa/server/src/api/store/customer-activation/complete/route.d.ts +2 -0
- package/.medusa/server/src/api/store/customer-activation/complete/route.js +96 -0
- package/.medusa/server/src/api/store/customer-activation/route.d.ts +2 -0
- package/.medusa/server/src/api/store/customer-activation/route.js +34 -0
- package/.medusa/server/src/api/store/products/[id]/reviews/route.d.ts +1 -0
- package/.medusa/server/src/api/store/products/[id]/reviews/route.js +76 -34
- package/.medusa/server/src/api/store/review-request/route.d.ts +2 -0
- package/.medusa/server/src/api/store/review-request/route.js +60 -0
- package/.medusa/server/src/core/abandoned-cart.d.ts +64 -0
- package/.medusa/server/src/core/abandoned-cart.js +197 -0
- package/.medusa/server/src/core/back-in-stock.d.ts +51 -0
- package/.medusa/server/src/core/back-in-stock.js +107 -0
- package/.medusa/server/src/core/checkout-contract.d.ts +1 -0
- package/.medusa/server/src/core/checkout-contract.js +2 -1
- package/.medusa/server/src/core/customer-account-contract.d.ts +3 -0
- package/.medusa/server/src/core/customer-account-contract.js +4 -1
- package/.medusa/server/src/core/customer-activation.d.ts +120 -0
- package/.medusa/server/src/core/customer-activation.js +169 -0
- package/.medusa/server/src/core/customer-email.d.ts +1 -1
- package/.medusa/server/src/core/customer-email.js +4 -1
- package/.medusa/server/src/core/native-migration-export.d.ts +6 -0
- package/.medusa/server/src/core/native-migration-export.js +105 -0
- package/.medusa/server/src/core/order-export.d.ts +11 -0
- package/.medusa/server/src/core/order-export.js +297 -0
- package/.medusa/server/src/core/review-request.d.ts +61 -0
- package/.medusa/server/src/core/review-request.js +105 -0
- package/.medusa/server/src/core/review-reward.d.ts +94 -0
- package/.medusa/server/src/core/review-reward.js +124 -0
- package/.medusa/server/src/core/runtime-health.d.ts +39 -0
- package/.medusa/server/src/core/runtime-health.js +250 -0
- package/.medusa/server/src/core/storefront-core-config.d.ts +10 -0
- package/.medusa/server/src/core/storefront-core-config.js +26 -1
- package/.medusa/server/src/core/version.d.ts +2 -2
- package/.medusa/server/src/core/version.js +2 -2
- package/.medusa/server/src/jobs/abandoned-cart-recovery.d.ts +23 -0
- package/.medusa/server/src/jobs/abandoned-cart-recovery.js +138 -0
- package/.medusa/server/src/jobs/back-in-stock-reconciliation.d.ts +15 -0
- package/.medusa/server/src/jobs/back-in-stock-reconciliation.js +90 -0
- package/.medusa/server/src/jobs/dpd-statusdata-sync.d.ts +17 -0
- package/.medusa/server/src/jobs/dpd-statusdata-sync.js +107 -0
- package/.medusa/server/src/jobs/mpl-push-tracking.d.ts +19 -0
- package/.medusa/server/src/jobs/mpl-push-tracking.js +183 -0
- package/.medusa/server/src/jobs/mpl-status-sync.d.ts +8 -2
- package/.medusa/server/src/jobs/mpl-status-sync.js +12 -7
- package/.medusa/server/src/jobs/product-review-request-dispatch.d.ts +28 -0
- package/.medusa/server/src/jobs/product-review-request-dispatch.js +84 -0
- package/.medusa/server/src/jobs/runtime-heartbeat.d.ts +12 -0
- package/.medusa/server/src/jobs/runtime-heartbeat.js +13 -0
- package/.medusa/server/src/jobs/shipping-status-sync.d.ts +8 -2
- package/.medusa/server/src/jobs/shipping-status-sync.js +11 -14
- package/.medusa/server/src/lib/modules/shipping/idempotency.js +3 -3
- package/.medusa/server/src/lib/modules/shipping/index.d.ts +1 -0
- package/.medusa/server/src/lib/modules/shipping/index.js +2 -1
- package/.medusa/server/src/lib/modules/shipping/tracking.d.ts +48 -0
- package/.medusa/server/src/lib/modules/shipping/tracking.js +368 -0
- package/.medusa/server/src/lib/modules/shipping/webhooks.d.ts +6 -9
- package/.medusa/server/src/lib/modules/shipping/webhooks.js +24 -137
- package/.medusa/server/src/modules/back-in-stock/index.d.ts +23 -0
- package/.medusa/server/src/modules/back-in-stock/index.js +16 -0
- package/.medusa/server/src/modules/back-in-stock/migrations/Migration20261101202000.d.ts +5 -0
- package/.medusa/server/src/modules/back-in-stock/migrations/Migration20261101202000.js +18 -0
- package/.medusa/server/src/modules/back-in-stock/models/back-in-stock-subscription.d.ts +13 -0
- package/.medusa/server/src/modules/back-in-stock/models/back-in-stock-subscription.js +23 -0
- package/.medusa/server/src/modules/back-in-stock/service.d.ts +22 -0
- package/.medusa/server/src/modules/back-in-stock/service.js +12 -0
- package/.medusa/server/src/modules/email-center/abandoned-cart-registration.d.ts +1 -0
- package/.medusa/server/src/modules/email-center/abandoned-cart-registration.js +27 -0
- package/.medusa/server/src/modules/email-center/back-in-stock-registration.d.ts +1 -0
- package/.medusa/server/src/modules/email-center/back-in-stock-registration.js +27 -0
- package/.medusa/server/src/modules/email-center/defaults.js +7 -1
- package/.medusa/server/src/modules/email-center/index.d.ts +2 -0
- package/.medusa/server/src/modules/email-center/index.js +3 -1
- package/.medusa/server/src/modules/integration-settings/abandoned-cart-registration.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/abandoned-cart-registration.js +30 -0
- package/.medusa/server/src/modules/integration-settings/index.d.ts +1 -0
- package/.medusa/server/src/modules/integration-settings/index.js +2 -1
- package/.medusa/server/src/modules/integration-settings/storefront-public-registration.js +15 -1
- package/.medusa/server/src/modules/product-review/index.d.ts +14 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101113000.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101113000.js +28 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101114500.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101114500.js +20 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101121500.d.ts +5 -0
- package/.medusa/server/src/modules/product-review/migrations/Migration20261101121500.js +18 -0
- package/.medusa/server/src/modules/product-review/models/product-review-settings.d.ts +15 -0
- package/.medusa/server/src/modules/product-review/models/product-review-settings.js +19 -0
- package/.medusa/server/src/modules/product-review/models/product-review.d.ts +6 -2
- package/.medusa/server/src/modules/product-review/models/product-review.js +7 -3
- package/.medusa/server/src/modules/product-review/service.d.ts +22 -1
- package/.medusa/server/src/modules/product-review/service.js +3 -2
- package/.medusa/server/src/providers/dpd/index.d.ts +2 -0
- package/.medusa/server/src/providers/dpd/index.js +3 -1
- package/.medusa/server/src/providers/dpd/statusdata-ftp.d.ts +16 -0
- package/.medusa/server/src/providers/dpd/statusdata-ftp.js +268 -0
- package/.medusa/server/src/providers/dpd/statusdata.d.ts +14 -0
- package/.medusa/server/src/providers/dpd/statusdata.js +161 -0
- package/.medusa/server/src/providers/mpl/client.d.ts +3 -1
- package/.medusa/server/src/providers/mpl/client.js +154 -2
- package/.medusa/server/src/providers/mpl/service.js +31 -20
- package/.medusa/server/src/providers/mpl/types.d.ts +25 -0
- package/.medusa/server/src/providers/mpl/types.js +1 -1
- package/.medusa/server/src/providers/packeta/index.d.ts +1 -0
- package/.medusa/server/src/providers/packeta/index.js +2 -1
- package/.medusa/server/src/providers/packeta/push-tracking.d.ts +8 -0
- package/.medusa/server/src/providers/packeta/push-tracking.js +96 -0
- package/.medusa/server/src/providers/packeta/service.js +22 -2
- package/.medusa/server/src/scripts/core-init.d.ts +1 -1
- package/.medusa/server/src/scripts/core-init.js +3 -2
- package/.medusa/server/src/subscribers/back-in-stock-inventory-changed.d.ts +7 -0
- package/.medusa/server/src/subscribers/back-in-stock-inventory-changed.js +65 -0
- package/.medusa/server/src/workflows/link-migrated-customer.d.ts +8 -0
- package/.medusa/server/src/workflows/link-migrated-customer.js +17 -0
- package/package.json +2 -1
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { MedusaContainer } from "@medusajs/framework/types";
|
|
2
|
-
export default function mplStatusSync(container: MedusaContainer): Promise<
|
|
3
|
-
|
|
2
|
+
export default function mplStatusSync(container: MedusaContainer): Promise<{
|
|
3
|
+
scanned: number;
|
|
4
|
+
refreshed: number;
|
|
5
|
+
} | undefined>;
|
|
6
|
+
export declare function runBatch(container: MedusaContainer): Promise<{
|
|
7
|
+
scanned: number;
|
|
8
|
+
refreshed: number;
|
|
9
|
+
}>;
|
|
4
10
|
export declare const config: {
|
|
5
11
|
name: string;
|
|
6
12
|
schedule: string;
|
|
@@ -7,14 +7,13 @@ const utils_1 = require("@medusajs/framework/utils");
|
|
|
7
7
|
const shipping_1 = require("../lib/modules/shipping");
|
|
8
8
|
const TERMINAL = new Set(["DELIVERED", "RETURNED", "CANCELLED"]);
|
|
9
9
|
const PAGE_SIZE = 200;
|
|
10
|
-
const MAX_ORDERS_SCANNED = 2000;
|
|
11
10
|
async function mplStatusSync(container) {
|
|
12
11
|
if (process.env.MPL_ENABLED !== "true" || process.env.MPL_TRACKING_ENABLED !== "true") {
|
|
13
12
|
return;
|
|
14
13
|
}
|
|
15
14
|
const locking = container.resolve("locking");
|
|
16
15
|
try {
|
|
17
|
-
return await locking.execute("job:mpl-status-sync", () => runBatch(container), { timeout: 1, expire:
|
|
16
|
+
return await locking.execute("job:mpl-status-sync", () => runBatch(container), { timeout: 1, expire: 55 * 60 });
|
|
18
17
|
}
|
|
19
18
|
catch (error) {
|
|
20
19
|
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
@@ -27,9 +26,12 @@ async function mplStatusSync(container) {
|
|
|
27
26
|
}
|
|
28
27
|
async function runBatch(container) {
|
|
29
28
|
const orderService = container.resolve("order");
|
|
30
|
-
|
|
29
|
+
let scanned = 0;
|
|
30
|
+
let refreshed = 0;
|
|
31
|
+
for (let skip = 0;; skip += PAGE_SIZE) {
|
|
31
32
|
const orders = await orderService.listOrders({}, { take: PAGE_SIZE, skip, order: { created_at: "DESC" } });
|
|
32
33
|
for (const order of orders) {
|
|
34
|
+
scanned += 1;
|
|
33
35
|
if ((0, shipping_1.carrierForOrder)(order) !== "mpl")
|
|
34
36
|
continue;
|
|
35
37
|
const shipment = order.metadata?.mpl;
|
|
@@ -42,8 +44,9 @@ async function runBatch(container) {
|
|
|
42
44
|
orderService,
|
|
43
45
|
orderId: order.id,
|
|
44
46
|
action: "status",
|
|
45
|
-
actorId: "mpl-
|
|
47
|
+
actorId: "mpl-hourly-status-sync",
|
|
46
48
|
});
|
|
49
|
+
refreshed += 1;
|
|
47
50
|
}
|
|
48
51
|
catch (error) {
|
|
49
52
|
console.error(`[mpl-status-sync] ${order.id}:`, error instanceof Error ? error.message : error);
|
|
@@ -52,7 +55,9 @@ async function runBatch(container) {
|
|
|
52
55
|
if (orders.length < PAGE_SIZE)
|
|
53
56
|
break;
|
|
54
57
|
}
|
|
58
|
+
return { scanned, refreshed };
|
|
55
59
|
}
|
|
56
|
-
// Magyar Posta
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
// Magyar Posta PULL guidance says the same tracking ID must not be queried more
|
|
61
|
+
// often than once per hour. PUSH is the primary path; this hourly job is fallback.
|
|
62
|
+
exports.config = { name: "mpl-status-sync", schedule: "15 * * * *" };
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXBsLXN0YXR1cy1zeW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2pvYnMvbXBsLXN0YXR1cy1zeW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVdBLGdDQTZCQztBQUVELDRCQTJDQztBQXBGRCxxREFBcUU7QUFDckUsc0RBSWdDO0FBRWhDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO0FBQ2hFLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQTtBQUVOLEtBQUssVUFBVSxhQUFhLENBQUMsU0FBMEI7SUFDcEUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN0RixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQU0xQyxDQUFBO0lBRUQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzFCLHFCQUFxQixFQUNyQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUNoQyxDQUFBO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLEtBQUssRUFBRSw4QkFBOEI7WUFDckMsR0FBRyxFQUFFLGlCQUFpQjtZQUN0QixPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNoRSxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLFFBQVEsQ0FBQyxTQUEwQjtJQUN2RCxNQUFNLFlBQVksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBb0MsQ0FBQTtJQUNsRixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFDZixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUE7SUFFakIsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUksSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sWUFBWSxDQUFDLFVBQVUsQ0FDMUMsRUFBRSxFQUNGLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQ3pELENBQUE7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLENBQUE7WUFDWixJQUFJLElBQUEsMEJBQWUsRUFBQyxLQUFLLENBQUMsS0FBSyxLQUFLO2dCQUFFLFNBQVE7WUFFOUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxHQUEwQyxDQUFBO1lBQzNFLElBQ0UsQ0FBQyxRQUFRLEVBQUUsY0FBYztnQkFDekIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUN6RCxDQUFDO2dCQUNELFNBQVE7WUFDVixDQUFDO1lBRUQsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBQSxnQ0FBcUIsRUFBQztvQkFDMUIsWUFBWTtvQkFDWixPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7b0JBQ2pCLE1BQU0sRUFBRSxRQUFRO29CQUNoQixPQUFPLEVBQUUsd0JBQXdCO2lCQUNsQyxDQUFDLENBQUE7Z0JBQ0YsU0FBUyxJQUFJLENBQUMsQ0FBQTtZQUNoQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsS0FBSyxDQUNYLHFCQUFxQixLQUFLLENBQUMsRUFBRSxHQUFHLEVBQ2hDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDL0MsQ0FBQTtZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLFNBQVM7WUFBRSxNQUFLO0lBQ3RDLENBQUM7SUFFRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFBO0FBQy9CLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsbUZBQW1GO0FBQ3RFLFFBQUEsTUFBTSxHQUFHLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQSJ9
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { MedusaContainer } from "@medusajs/framework/types";
|
|
2
|
+
import { type ReviewRequestTrigger } from "../core/review-request";
|
|
3
|
+
export default function productReviewRequestDispatch(container: MedusaContainer): Promise<{
|
|
4
|
+
scanned: number;
|
|
5
|
+
sent: number;
|
|
6
|
+
trigger?: undefined;
|
|
7
|
+
delayDays?: undefined;
|
|
8
|
+
} | {
|
|
9
|
+
scanned: number;
|
|
10
|
+
sent: number;
|
|
11
|
+
trigger: ReviewRequestTrigger;
|
|
12
|
+
delayDays: number;
|
|
13
|
+
} | undefined>;
|
|
14
|
+
export declare function runBatch(container: MedusaContainer): Promise<{
|
|
15
|
+
scanned: number;
|
|
16
|
+
sent: number;
|
|
17
|
+
trigger?: undefined;
|
|
18
|
+
delayDays?: undefined;
|
|
19
|
+
} | {
|
|
20
|
+
scanned: number;
|
|
21
|
+
sent: number;
|
|
22
|
+
trigger: ReviewRequestTrigger;
|
|
23
|
+
delayDays: number;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const config: {
|
|
26
|
+
name: string;
|
|
27
|
+
schedule: string;
|
|
28
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = productReviewRequestDispatch;
|
|
5
|
+
exports.runBatch = runBatch;
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const product_review_1 = require("../modules/product-review");
|
|
8
|
+
const review_request_1 = require("../core/review-request");
|
|
9
|
+
const PAGE_SIZE = 100;
|
|
10
|
+
const MAX_ORDERS_SCANNED = 2000;
|
|
11
|
+
async function productReviewRequestDispatch(container) {
|
|
12
|
+
const locking = container.resolve("locking");
|
|
13
|
+
try {
|
|
14
|
+
return await locking.execute("job:product-review-request-dispatch", () => runBatch(container), { timeout: 1, expire: 3300 });
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
18
|
+
logger.info(JSON.stringify({
|
|
19
|
+
event: "scheduled_job_skipped_locked",
|
|
20
|
+
job: "product-review-request-dispatch",
|
|
21
|
+
message: error instanceof Error ? error.message : String(error),
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function runBatch(container) {
|
|
26
|
+
const reviewService = container.resolve(product_review_1.PRODUCT_REVIEW_MODULE);
|
|
27
|
+
const [settings] = await reviewService.listProductReviewSettings({}, { take: 1 });
|
|
28
|
+
if (!settings?.request_email_enabled)
|
|
29
|
+
return { scanned: 0, sent: 0 };
|
|
30
|
+
const trigger = normalizeTrigger(settings.request_trigger);
|
|
31
|
+
const delayDays = Math.max(0, Math.min(90, Math.trunc(Number(settings.request_delay_days) || 0)));
|
|
32
|
+
const orderService = container.resolve("order");
|
|
33
|
+
let scanned = 0;
|
|
34
|
+
let sent = 0;
|
|
35
|
+
for (let skip = 0; skip < MAX_ORDERS_SCANNED; skip += PAGE_SIZE) {
|
|
36
|
+
const orders = await orderService.listOrders({}, {
|
|
37
|
+
take: PAGE_SIZE,
|
|
38
|
+
skip,
|
|
39
|
+
order: { created_at: "DESC" },
|
|
40
|
+
relations: ["items", "customer", "fulfillments"],
|
|
41
|
+
});
|
|
42
|
+
for (const order of orders) {
|
|
43
|
+
scanned += 1;
|
|
44
|
+
if (!order.customer_id || !order.email)
|
|
45
|
+
continue;
|
|
46
|
+
if (order.canceled_at || String(order.status || "").toLowerCase() === "canceled")
|
|
47
|
+
continue;
|
|
48
|
+
if (order.metadata?.review_request_email_sent_at)
|
|
49
|
+
continue;
|
|
50
|
+
if (!Array.isArray(order.items) || !order.items.some((item) => item?.product_id))
|
|
51
|
+
continue;
|
|
52
|
+
const dueAt = (0, review_request_1.reviewRequestDueAt)(order, trigger, delayDays);
|
|
53
|
+
if (!dueAt || dueAt.getTime() > Date.now())
|
|
54
|
+
continue;
|
|
55
|
+
try {
|
|
56
|
+
const result = await (0, review_request_1.sendReviewRequestEmail)({ container: container, order: order });
|
|
57
|
+
if (result?.skipped)
|
|
58
|
+
continue;
|
|
59
|
+
await orderService.updateOrders([{
|
|
60
|
+
id: order.id,
|
|
61
|
+
metadata: {
|
|
62
|
+
...(order.metadata || {}),
|
|
63
|
+
review_request_email_sent_at: new Date().toISOString(),
|
|
64
|
+
review_request_trigger: trigger,
|
|
65
|
+
review_request_delay_days: delayDays,
|
|
66
|
+
},
|
|
67
|
+
}]);
|
|
68
|
+
sent += 1;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
|
|
72
|
+
logger.warn(`[product-review-request-dispatch] ${order.id}: ${error instanceof Error ? error.message : String(error)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (orders.length < PAGE_SIZE)
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
return { scanned, sent, trigger, delayDays };
|
|
79
|
+
}
|
|
80
|
+
function normalizeTrigger(value) {
|
|
81
|
+
return value === "order" || value === "fulfillment" || value === "delivery" ? value : "delivery";
|
|
82
|
+
}
|
|
83
|
+
exports.config = { name: "product-review-request-dispatch", schedule: "15 * * * *" };
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1yZXZpZXctcmVxdWVzdC1kaXNwYXRjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9qb2JzL3Byb2R1Y3QtcmV2aWV3LXJlcXVlc3QtZGlzcGF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBaUJBLCtDQWtCQztBQUVELDRCQXVEQztBQTNGRCxxREFBcUU7QUFDckUsOERBQTRGO0FBQzVGLDJEQUE4RztBQUU5RyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUE7QUFDckIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUE7QUFXaEIsS0FBSyxVQUFVLDRCQUE0QixDQUFDLFNBQTBCO0lBQ25GLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUUxQyxDQUFBO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLE9BQU8sQ0FBQyxPQUFPLENBQzFCLHFDQUFxQyxFQUNyQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQzdCLENBQUE7SUFDSCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDbEUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3pCLEtBQUssRUFBRSw4QkFBOEI7WUFDckMsR0FBRyxFQUFFLGlDQUFpQztZQUN0QyxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztTQUNoRSxDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLFFBQVEs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
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { MedusaContainer } from "@medusajs/framework/types";
|
|
2
|
+
export default function runtimeHeartbeat(_container: MedusaContainer): Promise<{
|
|
3
|
+
schema_version?: number;
|
|
4
|
+
job?: string;
|
|
5
|
+
schedule?: string;
|
|
6
|
+
last_seen_at?: string;
|
|
7
|
+
pid?: number;
|
|
8
|
+
}>;
|
|
9
|
+
export declare const config: {
|
|
10
|
+
name: string;
|
|
11
|
+
schedule: string;
|
|
12
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.config = void 0;
|
|
4
|
+
exports.default = runtimeHeartbeat;
|
|
5
|
+
const runtime_health_1 = require("../core/runtime-health");
|
|
6
|
+
async function runtimeHeartbeat(_container) {
|
|
7
|
+
return (0, runtime_health_1.writeRuntimeHeartbeat)();
|
|
8
|
+
}
|
|
9
|
+
exports.config = {
|
|
10
|
+
name: "runtime-heartbeat",
|
|
11
|
+
schedule: "*/5 * * * *",
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1oZWFydGJlYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9ydW50aW1lLWhlYXJ0YmVhdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxtQ0FFQztBQUpELDJEQUE4RDtBQUUvQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsVUFBMkI7SUFDeEUsT0FBTyxJQUFBLHNDQUFxQixHQUFFLENBQUE7QUFDaEMsQ0FBQztBQUVZLFFBQUEsTUFBTSxHQUFHO0lBQ3BCLElBQUksRUFBRSxtQkFBbUI7SUFDekIsUUFBUSxFQUFFLGFBQWE7Q0FDeEIsQ0FBQSJ9
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { MedusaContainer } from "@medusajs/framework/types";
|
|
2
|
-
export default function shippingStatusSync(container: MedusaContainer): Promise<
|
|
3
|
-
|
|
2
|
+
export default function shippingStatusSync(container: MedusaContainer): Promise<{
|
|
3
|
+
scanned: number;
|
|
4
|
+
refreshed: number;
|
|
5
|
+
} | undefined>;
|
|
6
|
+
export declare function runBatch(container: MedusaContainer): Promise<{
|
|
7
|
+
scanned: number;
|
|
8
|
+
refreshed: number;
|
|
9
|
+
}>;
|
|
4
10
|
export declare const config: {
|
|
5
11
|
name: string;
|
|
6
12
|
schedule: string;
|
|
@@ -7,7 +7,6 @@ const utils_1 = require("@medusajs/framework/utils");
|
|
|
7
7
|
const shipping_1 = require("../lib/modules/shipping");
|
|
8
8
|
const TERMINAL = new Set(["DELIVERED", "RETURNED", "CANCELLED"]);
|
|
9
9
|
const PAGE_SIZE = 200;
|
|
10
|
-
const MAX_ORDERS_SCANNED = 2000;
|
|
11
10
|
async function shippingStatusSync(container) {
|
|
12
11
|
const locking = container.resolve("locking");
|
|
13
12
|
try {
|
|
@@ -24,31 +23,27 @@ async function shippingStatusSync(container) {
|
|
|
24
23
|
}
|
|
25
24
|
async function runBatch(container) {
|
|
26
25
|
const orderService = container.resolve("order");
|
|
27
|
-
|
|
26
|
+
let scanned = 0;
|
|
27
|
+
let refreshed = 0;
|
|
28
|
+
for (let skip = 0;; skip += PAGE_SIZE) {
|
|
28
29
|
const orders = await orderService.listOrders({}, { take: PAGE_SIZE, skip, order: { created_at: "DESC" } });
|
|
29
30
|
for (const order of orders) {
|
|
31
|
+
scanned += 1;
|
|
30
32
|
const carrier = (0, shipping_1.carrierForOrder)(order);
|
|
31
33
|
if (!carrier)
|
|
32
34
|
continue;
|
|
33
|
-
// MPL
|
|
34
|
-
//
|
|
35
|
-
if (carrier === "mpl")
|
|
35
|
+
// MPL uses the official PUSH stream with an hourly PULL fallback.
|
|
36
|
+
// DPD physical transit is supplied by Statusdata, not the Shipping API.
|
|
37
|
+
if (carrier === "mpl" || carrier === "dpd")
|
|
36
38
|
continue;
|
|
37
39
|
const shipment = order.metadata?.[carrier];
|
|
38
40
|
const hasParcel = carrier === "foxpost"
|
|
39
41
|
? Boolean(shipment?.packageId)
|
|
40
42
|
: carrier === "packeta"
|
|
41
43
|
? Boolean(shipment?.packetId)
|
|
42
|
-
:
|
|
43
|
-
? Boolean(shipment?.shipmentId)
|
|
44
|
-
: Boolean(shipment?.parcelNumber);
|
|
44
|
+
: Boolean(shipment?.parcelNumber);
|
|
45
45
|
if (!hasParcel || TERMINAL.has(String(shipment?.status ?? "").toUpperCase()))
|
|
46
46
|
continue;
|
|
47
|
-
// DPD Shipping's shipment status is the shipping-order state, not parcel transit tracking.
|
|
48
|
-
// Once a label is printed, repeated polling cannot produce DELIVERED/RETURNED states;
|
|
49
|
-
// those require DPD Statusdata, which is a separate optional integration.
|
|
50
|
-
if (carrier === "dpd" && String(shipment?.status ?? "").toUpperCase() === "PRINTED")
|
|
51
|
-
continue;
|
|
52
47
|
try {
|
|
53
48
|
await (0, shipping_1.executeShippingAction)({
|
|
54
49
|
orderService,
|
|
@@ -56,6 +51,7 @@ async function runBatch(container) {
|
|
|
56
51
|
action: "status",
|
|
57
52
|
actorId: "scheduled-status-sync",
|
|
58
53
|
});
|
|
54
|
+
refreshed += 1;
|
|
59
55
|
}
|
|
60
56
|
catch (error) {
|
|
61
57
|
console.error(`[shipping-status-sync] ${carrier} ${order.id}:`, error instanceof Error ? error.message : error);
|
|
@@ -64,6 +60,7 @@ async function runBatch(container) {
|
|
|
64
60
|
if (orders.length < PAGE_SIZE)
|
|
65
61
|
break;
|
|
66
62
|
}
|
|
63
|
+
return { scanned, refreshed };
|
|
67
64
|
}
|
|
68
65
|
exports.config = { name: "shipping-status-sync", schedule: "*/15 * * * *" };
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcHBpbmctc3RhdHVzLXN5bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9zaGlwcGluZy1zdGF0dXMtc3luYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQSxxQ0F5QkM7QUFFRCw0QkFpREM7QUF0RkQscURBQXFFO0FBQ3JFLHNEQUlnQztBQUVoQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQTtBQUNoRSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUE7QUFFTixLQUFLLFVBQVUsa0JBQWtCLENBQUMsU0FBMEI7SUFDekUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBTTFDLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxPQUFPLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FDMUIsMEJBQTBCLEVBQzFCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDekIsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FDNUIsQ0FBQTtJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNsRSxNQUFNLENBQUMsSUFBSSxDQUNULElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLEdBQUcsRUFBRSxzQkFBc0I7WUFDM0IsT0FBTyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDaEUsQ0FBQyxDQUNILENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUss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
|
|
@@ -7,11 +7,11 @@ function shipmentExternalId(carrier, shipment) {
|
|
|
7
7
|
const value = carrier === "foxpost"
|
|
8
8
|
? shipment.packageId ?? shipment.trackingNumber
|
|
9
9
|
: carrier === "gls"
|
|
10
|
-
? shipment.
|
|
10
|
+
? shipment.parcelNumber ?? shipment.parcelId
|
|
11
11
|
: carrier === "packeta"
|
|
12
12
|
? shipment.packetId ?? shipment.trackingNumber
|
|
13
13
|
: carrier === "dpd"
|
|
14
|
-
? shipment.
|
|
14
|
+
? shipment.parcelNumber ?? shipment.shipmentId
|
|
15
15
|
: shipment.trackingNumber;
|
|
16
16
|
return value == null ? null : String(value);
|
|
17
17
|
}
|
|
@@ -25,4 +25,4 @@ function shipmentCreateIdempotencyKey(carrier, orderId, cancelledExternalId) {
|
|
|
25
25
|
const base = `${carrier}:shipment:create:${orderId}`;
|
|
26
26
|
return cancelledExternalId ? `${base}:after:${cancelledExternalId}` : base;
|
|
27
27
|
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbXBvdGVuY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvc2hpcHBpbmcvaWRlbXBvdGVuY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxnREFlQztBQUVELGtFQVFDO0FBRUQsb0VBT0M7QUFsQ0QsU0FBZ0Isa0JBQWtCLENBQ2hDLE9BQXdCLEVBQ3hCLFFBQWlDO0lBRWpDLE1BQU0sS0FBSyxHQUFHLE9BQU8sS0FBSyxTQUFTO1FBQ2pDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLFFBQVEsQ0FBQyxjQUFjO1FBQy9DLENBQUMsQ0FBQyxPQUFPLEtBQUssS0FBSztZQUNqQixDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksSUFBSSxRQUFRLENBQUMsUUFBUTtZQUM1QyxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVM7Z0JBQ3JCLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxjQUFjO2dCQUM5QyxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUs7b0JBQ2pCLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxJQUFJLFFBQVEsQ0FBQyxVQUFVO29CQUM5QyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQTtJQUVqQyxPQUFPLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdDLENBQUM7QUFFRCxTQUFnQiwyQkFBMkIsQ0FDekMsT0FBd0IsRUFDeEIsUUFBb0Q7SUFFcEQsSUFBSSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUM3RSxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLElBQUksU0FBUyxDQUFBO0FBQzNELENBQUM7QUFFRCxTQUFnQiw0QkFBNEIsQ0FDMUMsT0FBd0IsRUFDeEIsT0FBZSxFQUNmLG1CQUFtQztJQUVuQyxNQUFNLElBQUksR0FBRyxHQUFHLE9BQU8sb0JBQW9CLE9BQU8sRUFBRSxDQUFBO0lBQ3BELE9BQU8sbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxVQUFVLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUM1RSxDQUFDIn0=
|
|
@@ -21,4 +21,5 @@ __exportStar(require("./idempotency"), exports);
|
|
|
21
21
|
__exportStar(require("./durable-create"), exports);
|
|
22
22
|
__exportStar(require("./actions"), exports);
|
|
23
23
|
__exportStar(require("./webhooks"), exports);
|
|
24
|
-
|
|
24
|
+
__exportStar(require("./tracking"), exports);
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL21vZHVsZXMvc2hpcHBpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBDQUF1QjtBQUN2QiwrQ0FBNEI7QUFDNUIsd0NBQXFCO0FBQ3JCLGdEQUE2QjtBQUM3QixtREFBZ0M7QUFDaEMsNENBQXlCO0FBQ3pCLDZDQUEwQjtBQUMxQiw2Q0FBMEIifQ==
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ShippingCarrier, ShippingOrder, ShippingOrderService } from "./types";
|
|
2
|
+
import type { IntegrationOperationStore } from "../../../modules/integration-operation/types";
|
|
3
|
+
export type CanonicalShippingStatus = "CREATED" | "LABEL_CREATED" | "ACCEPTED" | "PROCESSING" | "IN_TRANSIT" | "AT_PICKUP_POINT" | "OUT_FOR_DELIVERY" | "DELIVERED" | "RETURNING" | "RETURNED" | "CANCELLED" | "ERROR" | "UNKNOWN";
|
|
4
|
+
export type NormalizedTrackingEvent = {
|
|
5
|
+
carrier: ShippingCarrier;
|
|
6
|
+
shipmentIdentifiers: string[];
|
|
7
|
+
status?: CanonicalShippingStatus | null;
|
|
8
|
+
rawStatus?: string | null;
|
|
9
|
+
statusText?: string | null;
|
|
10
|
+
occurredAt?: string | null;
|
|
11
|
+
eventId?: string | null;
|
|
12
|
+
source: string;
|
|
13
|
+
trackingNumber?: string | null;
|
|
14
|
+
trackingUrl?: string | null;
|
|
15
|
+
extra?: Record<string, unknown>;
|
|
16
|
+
};
|
|
17
|
+
export declare function isTerminalShippingStatus(value: unknown): boolean;
|
|
18
|
+
export declare function mapPacketaStatus(input: {
|
|
19
|
+
statusId?: unknown;
|
|
20
|
+
statusCode?: unknown;
|
|
21
|
+
isReturning?: unknown;
|
|
22
|
+
}): CanonicalShippingStatus | null;
|
|
23
|
+
export declare function mapMplPullStatus(input: {
|
|
24
|
+
categoryCode?: unknown;
|
|
25
|
+
category?: unknown;
|
|
26
|
+
description?: unknown;
|
|
27
|
+
}): CanonicalShippingStatus | null;
|
|
28
|
+
export declare function mapMplPushStatus(status: unknown, statusText?: unknown): CanonicalShippingStatus | null;
|
|
29
|
+
export declare function mapDpdStatusdataScanCode(scanCode: unknown, serviceCode?: unknown): CanonicalShippingStatus | null;
|
|
30
|
+
export declare function applyNormalizedTrackingEvent(input: {
|
|
31
|
+
orderService: ShippingOrderService;
|
|
32
|
+
event: NormalizedTrackingEvent;
|
|
33
|
+
operationStore?: IntegrationOperationStore;
|
|
34
|
+
}): Promise<{
|
|
35
|
+
duplicate: boolean;
|
|
36
|
+
orderId: {} | null;
|
|
37
|
+
status: {} | null;
|
|
38
|
+
stale?: undefined;
|
|
39
|
+
terminalRegression?: undefined;
|
|
40
|
+
} | {
|
|
41
|
+
orderId: string;
|
|
42
|
+
status: {} | null;
|
|
43
|
+
stale: boolean;
|
|
44
|
+
terminalRegression: boolean;
|
|
45
|
+
duplicate?: undefined;
|
|
46
|
+
} | null>;
|
|
47
|
+
export declare function findOrderByShipmentIdentifiers(orderService: ShippingOrderService, carrier: ShippingCarrier, identifiers: string[], operationStore?: IntegrationOperationStore): Promise<ShippingOrder | undefined>;
|
|
48
|
+
export declare function shipmentMatches(order: ShippingOrder, carrier: ShippingCarrier, identifiers: Set<string>): boolean;
|