@easypayment/medusa-paypal 0.4.4 → 0.4.6
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 +11 -33
- package/.medusa/server/src/admin/index.mjs +11 -33
- package/.medusa/server/src/api/store/paypal/create-order/route.d.ts.map +1 -1
- package/.medusa/server/src/api/store/paypal/create-order/route.js +61 -26
- package/.medusa/server/src/api/store/paypal/create-order/route.js.map +1 -1
- package/README.md +28 -16
- package/package.json +1 -1
- package/src/admin/routes/settings/paypal/connection/page.tsx +4 -4
- package/src/admin/routes/settings/paypal/paypal-settings/page.tsx +0 -11
- package/src/api/store/paypal/create-order/route.ts +78 -30
|
@@ -322,10 +322,10 @@ function AdvancedCardPaymentsTab() {
|
|
|
322
322
|
)
|
|
323
323
|
] }) });
|
|
324
324
|
}
|
|
325
|
-
function
|
|
325
|
+
function PayPalGooglePayPage() {
|
|
326
326
|
return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
|
|
327
327
|
}
|
|
328
|
-
function
|
|
328
|
+
function PayPalApplePayPage() {
|
|
329
329
|
return /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Navigate, { to: "/settings/paypal/connection", replace: true });
|
|
330
330
|
}
|
|
331
331
|
const config = adminSdk.defineRouteConfig({
|
|
@@ -737,7 +737,7 @@ function PayPalConnectionPage() {
|
|
|
737
737
|
type: "button",
|
|
738
738
|
onClick: handleDisconnect,
|
|
739
739
|
disabled: onboardingInProgress,
|
|
740
|
-
className: "rounded-md border border-ui-border-base px-3 py-2 text-sm font-medium hover:bg-ui-bg-subtle disabled:opacity-50 disabled:cursor-not-allowed",
|
|
740
|
+
className: "rounded-md border border-ui-border-base px-3 py-2 text-sm font-medium transition-colors hover:bg-ui-bg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-border-interactive disabled:opacity-50 disabled:cursor-not-allowed",
|
|
741
741
|
children: "Disconnect"
|
|
742
742
|
}
|
|
743
743
|
) })
|
|
@@ -767,7 +767,7 @@ function PayPalConnectionPage() {
|
|
|
767
767
|
href: finalUrl || "#",
|
|
768
768
|
"data-paypal-onboard-complete": "onboardingCallback",
|
|
769
769
|
onClick: handleConnectClick,
|
|
770
|
-
className: "inline-flex items-center justify-center rounded-md bg-ui-button-neutral px-4 py-2 text-sm font-medium text-ui-fg-on-color no-underline shadow-sm hover:opacity-90 disabled:opacity-60",
|
|
770
|
+
className: "inline-flex items-center justify-center rounded-md bg-ui-button-neutral px-4 py-2 text-sm font-medium text-ui-fg-on-color no-underline shadow-sm transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-border-interactive disabled:opacity-60",
|
|
771
771
|
style: {
|
|
772
772
|
cursor: onboardingInProgress ? "not-allowed" : "pointer",
|
|
773
773
|
opacity: onboardingInProgress ? 0.6 : 1,
|
|
@@ -849,7 +849,7 @@ function PayPalConnectionPage() {
|
|
|
849
849
|
)
|
|
850
850
|
] }),
|
|
851
851
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "md:col-span-2 rounded-md border border-ui-border-base bg-ui-bg-subtle p-4 text-sm text-ui-fg-subtle", children: [
|
|
852
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-ui-fg-base", children: "Get your Client ID and
|
|
852
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium text-ui-fg-base", children: "Get your Client ID and Secret in 3 steps:" }),
|
|
853
853
|
/* @__PURE__ */ jsxRuntime.jsxs("ol", { className: "mt-2 list-decimal space-y-2 pl-5", children: [
|
|
854
854
|
/* @__PURE__ */ jsxRuntime.jsxs("li", { children: [
|
|
855
855
|
"Open",
|
|
@@ -878,7 +878,7 @@ function PayPalConnectionPage() {
|
|
|
878
878
|
"Copy your app's ",
|
|
879
879
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-ui-fg-base", children: "Client ID" }),
|
|
880
880
|
" and ",
|
|
881
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-ui-fg-base", children: "
|
|
881
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-ui-fg-base", children: "Secret" }),
|
|
882
882
|
", paste them above, then click ",
|
|
883
883
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-ui-fg-base", children: "Save credentials" }),
|
|
884
884
|
"."
|
|
@@ -1202,29 +1202,7 @@ function PayPalSettingsTab() {
|
|
|
1202
1202
|
) })
|
|
1203
1203
|
] })
|
|
1204
1204
|
}
|
|
1205
|
-
)
|
|
1206
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-6 rounded-md border border-ui-border-base bg-ui-bg-subtle p-4", children: [
|
|
1207
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-medium text-ui-fg-base", children: "Preview (UI only)" }),
|
|
1208
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-2 text-sm text-ui-fg-subtle", children: [
|
|
1209
|
-
"Color: ",
|
|
1210
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-ui-fg-base", children: form.buttonColor }),
|
|
1211
|
-
" · Shape:",
|
|
1212
|
-
" ",
|
|
1213
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-ui-fg-base", children: form.buttonShape }),
|
|
1214
|
-
" · Width:",
|
|
1215
|
-
" ",
|
|
1216
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-ui-fg-base", children: form.buttonWidth }),
|
|
1217
|
-
" · Height:",
|
|
1218
|
-
" ",
|
|
1219
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-ui-fg-base", children: [
|
|
1220
|
-
form.buttonHeight,
|
|
1221
|
-
"px"
|
|
1222
|
-
] }),
|
|
1223
|
-
" · Label:",
|
|
1224
|
-
" ",
|
|
1225
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-ui-fg-base", children: form.buttonLabel })
|
|
1226
|
-
] })
|
|
1227
|
-
] })
|
|
1205
|
+
)
|
|
1228
1206
|
] }) });
|
|
1229
1207
|
}
|
|
1230
1208
|
const widgetModule = { widgets: [] };
|
|
@@ -1242,14 +1220,14 @@ const routeModule = {
|
|
|
1242
1220
|
Component: AdvancedCardPaymentsTab,
|
|
1243
1221
|
path: "/settings/paypal/advanced-card-payments"
|
|
1244
1222
|
},
|
|
1245
|
-
{
|
|
1246
|
-
Component: PayPalApplePayPage,
|
|
1247
|
-
path: "/settings/paypal/apple-pay"
|
|
1248
|
-
},
|
|
1249
1223
|
{
|
|
1250
1224
|
Component: PayPalGooglePayPage,
|
|
1251
1225
|
path: "/settings/paypal/google-pay"
|
|
1252
1226
|
},
|
|
1227
|
+
{
|
|
1228
|
+
Component: PayPalApplePayPage,
|
|
1229
|
+
path: "/settings/paypal/apple-pay"
|
|
1230
|
+
},
|
|
1253
1231
|
{
|
|
1254
1232
|
Component: PayPalConnectionPage,
|
|
1255
1233
|
path: "/settings/paypal/connection"
|
|
@@ -321,10 +321,10 @@ function AdvancedCardPaymentsTab() {
|
|
|
321
321
|
)
|
|
322
322
|
] }) });
|
|
323
323
|
}
|
|
324
|
-
function
|
|
324
|
+
function PayPalGooglePayPage() {
|
|
325
325
|
return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
|
|
326
326
|
}
|
|
327
|
-
function
|
|
327
|
+
function PayPalApplePayPage() {
|
|
328
328
|
return /* @__PURE__ */ jsx(Navigate, { to: "/settings/paypal/connection", replace: true });
|
|
329
329
|
}
|
|
330
330
|
const config = defineRouteConfig({
|
|
@@ -736,7 +736,7 @@ function PayPalConnectionPage() {
|
|
|
736
736
|
type: "button",
|
|
737
737
|
onClick: handleDisconnect,
|
|
738
738
|
disabled: onboardingInProgress,
|
|
739
|
-
className: "rounded-md border border-ui-border-base px-3 py-2 text-sm font-medium hover:bg-ui-bg-subtle disabled:opacity-50 disabled:cursor-not-allowed",
|
|
739
|
+
className: "rounded-md border border-ui-border-base px-3 py-2 text-sm font-medium transition-colors hover:bg-ui-bg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-border-interactive disabled:opacity-50 disabled:cursor-not-allowed",
|
|
740
740
|
children: "Disconnect"
|
|
741
741
|
}
|
|
742
742
|
) })
|
|
@@ -766,7 +766,7 @@ function PayPalConnectionPage() {
|
|
|
766
766
|
href: finalUrl || "#",
|
|
767
767
|
"data-paypal-onboard-complete": "onboardingCallback",
|
|
768
768
|
onClick: handleConnectClick,
|
|
769
|
-
className: "inline-flex items-center justify-center rounded-md bg-ui-button-neutral px-4 py-2 text-sm font-medium text-ui-fg-on-color no-underline shadow-sm hover:opacity-90 disabled:opacity-60",
|
|
769
|
+
className: "inline-flex items-center justify-center rounded-md bg-ui-button-neutral px-4 py-2 text-sm font-medium text-ui-fg-on-color no-underline shadow-sm transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-border-interactive disabled:opacity-60",
|
|
770
770
|
style: {
|
|
771
771
|
cursor: onboardingInProgress ? "not-allowed" : "pointer",
|
|
772
772
|
opacity: onboardingInProgress ? 0.6 : 1,
|
|
@@ -848,7 +848,7 @@ function PayPalConnectionPage() {
|
|
|
848
848
|
)
|
|
849
849
|
] }),
|
|
850
850
|
/* @__PURE__ */ jsxs("div", { className: "md:col-span-2 rounded-md border border-ui-border-base bg-ui-bg-subtle p-4 text-sm text-ui-fg-subtle", children: [
|
|
851
|
-
/* @__PURE__ */ jsx("p", { className: "font-medium text-ui-fg-base", children: "Get your Client ID and
|
|
851
|
+
/* @__PURE__ */ jsx("p", { className: "font-medium text-ui-fg-base", children: "Get your Client ID and Secret in 3 steps:" }),
|
|
852
852
|
/* @__PURE__ */ jsxs("ol", { className: "mt-2 list-decimal space-y-2 pl-5", children: [
|
|
853
853
|
/* @__PURE__ */ jsxs("li", { children: [
|
|
854
854
|
"Open",
|
|
@@ -877,7 +877,7 @@ function PayPalConnectionPage() {
|
|
|
877
877
|
"Copy your app's ",
|
|
878
878
|
/* @__PURE__ */ jsx("span", { className: "font-medium text-ui-fg-base", children: "Client ID" }),
|
|
879
879
|
" and ",
|
|
880
|
-
/* @__PURE__ */ jsx("span", { className: "font-medium text-ui-fg-base", children: "
|
|
880
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-ui-fg-base", children: "Secret" }),
|
|
881
881
|
", paste them above, then click ",
|
|
882
882
|
/* @__PURE__ */ jsx("span", { className: "font-medium text-ui-fg-base", children: "Save credentials" }),
|
|
883
883
|
"."
|
|
@@ -1201,29 +1201,7 @@ function PayPalSettingsTab() {
|
|
|
1201
1201
|
) })
|
|
1202
1202
|
] })
|
|
1203
1203
|
}
|
|
1204
|
-
)
|
|
1205
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-6 rounded-md border border-ui-border-base bg-ui-bg-subtle p-4", children: [
|
|
1206
|
-
/* @__PURE__ */ jsx("div", { className: "text-sm font-medium text-ui-fg-base", children: "Preview (UI only)" }),
|
|
1207
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-2 text-sm text-ui-fg-subtle", children: [
|
|
1208
|
-
"Color: ",
|
|
1209
|
-
/* @__PURE__ */ jsx("span", { className: "text-ui-fg-base", children: form.buttonColor }),
|
|
1210
|
-
" · Shape:",
|
|
1211
|
-
" ",
|
|
1212
|
-
/* @__PURE__ */ jsx("span", { className: "text-ui-fg-base", children: form.buttonShape }),
|
|
1213
|
-
" · Width:",
|
|
1214
|
-
" ",
|
|
1215
|
-
/* @__PURE__ */ jsx("span", { className: "text-ui-fg-base", children: form.buttonWidth }),
|
|
1216
|
-
" · Height:",
|
|
1217
|
-
" ",
|
|
1218
|
-
/* @__PURE__ */ jsxs("span", { className: "text-ui-fg-base", children: [
|
|
1219
|
-
form.buttonHeight,
|
|
1220
|
-
"px"
|
|
1221
|
-
] }),
|
|
1222
|
-
" · Label:",
|
|
1223
|
-
" ",
|
|
1224
|
-
/* @__PURE__ */ jsx("span", { className: "text-ui-fg-base", children: form.buttonLabel })
|
|
1225
|
-
] })
|
|
1226
|
-
] })
|
|
1204
|
+
)
|
|
1227
1205
|
] }) });
|
|
1228
1206
|
}
|
|
1229
1207
|
const widgetModule = { widgets: [] };
|
|
@@ -1241,14 +1219,14 @@ const routeModule = {
|
|
|
1241
1219
|
Component: AdvancedCardPaymentsTab,
|
|
1242
1220
|
path: "/settings/paypal/advanced-card-payments"
|
|
1243
1221
|
},
|
|
1244
|
-
{
|
|
1245
|
-
Component: PayPalApplePayPage,
|
|
1246
|
-
path: "/settings/paypal/apple-pay"
|
|
1247
|
-
},
|
|
1248
1222
|
{
|
|
1249
1223
|
Component: PayPalGooglePayPage,
|
|
1250
1224
|
path: "/settings/paypal/google-pay"
|
|
1251
1225
|
},
|
|
1226
|
+
{
|
|
1227
|
+
Component: PayPalApplePayPage,
|
|
1228
|
+
path: "/settings/paypal/apple-pay"
|
|
1229
|
+
},
|
|
1252
1230
|
{
|
|
1253
1231
|
Component: PayPalConnectionPage,
|
|
1254
1232
|
path: "/settings/paypal/connection"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/store/paypal/create-order/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAuG7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/store/paypal/create-order/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAuG7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,2BA4VjE"}
|
|
@@ -190,17 +190,56 @@ async function POST(req, res) {
|
|
|
190
190
|
...(returnUrl ? { return_url: returnUrl } : {}),
|
|
191
191
|
...(cancelUrl ? { cancel_url: cancelUrl } : {}),
|
|
192
192
|
};
|
|
193
|
-
const breakdown = {};
|
|
194
193
|
const subtotalMajor = Number(cart.subtotal || 0);
|
|
195
194
|
const shippingMajor = Number(cart.shipping_total || 0);
|
|
196
195
|
const taxMajor = Number(cart.tax_total || 0);
|
|
197
196
|
const discountMajor = Number(cart.discount_total || 0);
|
|
198
197
|
const giftCardMajor = Number(cart.gift_card_total || 0);
|
|
199
|
-
const
|
|
200
|
-
|
|
198
|
+
const lineItems = Array.isArray(cart.items) ? cart.items : [];
|
|
199
|
+
const purchaseItemsRaw = sendItemDetails
|
|
200
|
+
? lineItems
|
|
201
|
+
.map((item) => {
|
|
202
|
+
const quantity = Number(item?.quantity || 0);
|
|
203
|
+
const lineSubtotal = Number(item?.subtotal ?? (Number(item?.unit_price || 0) * quantity));
|
|
204
|
+
const unitAmount = quantity > 0 ? parseFloat((lineSubtotal / quantity).toFixed(exponent)) : 0;
|
|
205
|
+
if (!quantity || Number.isNaN(quantity) || Number.isNaN(unitAmount)) {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
quantity,
|
|
210
|
+
unitAmount,
|
|
211
|
+
paypalItem: {
|
|
212
|
+
name: String(item?.title || "Item").slice(0, 127),
|
|
213
|
+
quantity: String(Math.max(1, quantity)),
|
|
214
|
+
unit_amount: {
|
|
215
|
+
currency_code: currency,
|
|
216
|
+
value: unitAmount.toFixed(exponent),
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
})
|
|
221
|
+
.filter(Boolean)
|
|
222
|
+
: [];
|
|
223
|
+
const roundedItemSum = purchaseItemsRaw.reduce((sum, item) => sum + item.unitAmount * item.quantity, 0);
|
|
224
|
+
const roundedItemSumFixed = parseFloat(roundedItemSum.toFixed(exponent));
|
|
225
|
+
const diff = parseFloat((subtotalMajor - roundedItemSumFixed).toFixed(exponent));
|
|
226
|
+
const finalPurchaseItems = purchaseItemsRaw.map((item) => item.paypalItem);
|
|
227
|
+
let adjustedItemTotal = subtotalMajor;
|
|
228
|
+
if (Math.abs(diff) > 0.000001 && sendItemDetails && finalPurchaseItems.length > 0) {
|
|
229
|
+
finalPurchaseItems.push({
|
|
230
|
+
name: "Line Item Amount Offset",
|
|
231
|
+
quantity: "1",
|
|
232
|
+
unit_amount: {
|
|
233
|
+
currency_code: currency,
|
|
234
|
+
value: diff.toFixed(exponent),
|
|
235
|
+
},
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
const breakdown = {};
|
|
239
|
+
if (adjustedItemTotal > 0) {
|
|
201
240
|
breakdown.item_total = {
|
|
202
241
|
currency_code: currency,
|
|
203
|
-
value:
|
|
242
|
+
value: adjustedItemTotal.toFixed(exponent),
|
|
204
243
|
};
|
|
205
244
|
}
|
|
206
245
|
if (shippingMajor > 0) {
|
|
@@ -215,33 +254,29 @@ async function POST(req, res) {
|
|
|
215
254
|
value: taxMajor.toFixed(exponent),
|
|
216
255
|
};
|
|
217
256
|
}
|
|
218
|
-
const discountValue =
|
|
219
|
-
if (discountValue > 0) {
|
|
257
|
+
const discountValue = discountMajor + giftCardMajor;
|
|
258
|
+
if (discountValue > 0 && finalPurchaseItems.length > 0) {
|
|
220
259
|
breakdown.discount = {
|
|
221
260
|
currency_code: currency,
|
|
222
261
|
value: discountValue.toFixed(exponent),
|
|
223
262
|
};
|
|
224
263
|
}
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
return null;
|
|
233
|
-
}
|
|
234
|
-
return {
|
|
235
|
-
name: String(item?.title || "Item").slice(0, 127),
|
|
236
|
-
quantity: String(Math.max(1, quantity)),
|
|
237
|
-
unit_amount: {
|
|
238
|
-
currency_code: currency,
|
|
239
|
-
value: (0, amounts_1.formatAmountForPayPal)(unitMinor, currency),
|
|
240
|
-
},
|
|
264
|
+
const breakdownSum = parseFloat((adjustedItemTotal + shippingMajor + taxMajor - discountValue).toFixed(exponent));
|
|
265
|
+
if (Math.abs(breakdownSum - totalMajor) > 0.000001) {
|
|
266
|
+
const gap = parseFloat((totalMajor - breakdownSum).toFixed(exponent));
|
|
267
|
+
if (gap > 0) {
|
|
268
|
+
breakdown.tax_total = {
|
|
269
|
+
currency_code: currency,
|
|
270
|
+
value: parseFloat(((Number(breakdown.tax_total?.value || 0) + gap).toFixed(exponent))).toFixed(exponent),
|
|
241
271
|
};
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
breakdown.shipping_discount = {
|
|
275
|
+
currency_code: currency,
|
|
276
|
+
value: Math.abs(gap).toFixed(exponent),
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
245
280
|
const { accessToken, base } = await (0, paypal_auth_1.getPayPalAccessToken)({
|
|
246
281
|
environment: creds.environment,
|
|
247
282
|
client_id: creds.client_id,
|
|
@@ -267,7 +302,7 @@ async function POST(req, res) {
|
|
|
267
302
|
value,
|
|
268
303
|
...(Object.keys(breakdown).length > 0 ? { breakdown } : {}),
|
|
269
304
|
},
|
|
270
|
-
...(
|
|
305
|
+
...(finalPurchaseItems.length > 0 ? { items: finalPurchaseItems } : {}),
|
|
271
306
|
},
|
|
272
307
|
],
|
|
273
308
|
...(threeDsMethod
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/store/paypal/create-order/route.ts"],"names":[],"mappings":";;AAuGA,oBA4SC;AAlZD,mCAAmC;AACnC,sEAAqG;AACrG,4EAGoD;AACpD,8EAAmF;AAEnF,gFAAkF;AAOlF,SAAS,qBAAqB,CAAC,GAAkB,EAAE,MAAc,EAAE,QAAgB;IACjF,MAAM,MAAM,GACV,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC9B,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC9B,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAChC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACtD,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,EAAE,CAAA;IAC1C,CAAC;IACD,OAAO,QAAQ,IAAI,MAAM,MAAM,IAAI,IAAA,mBAAU,GAAE,EAAE,CAAA;AACnD,CAAC;AAED,KAAK,UAAU,0BAA0B,CACvC,GAAkB,EAClB,MAAc,EACd,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,wBAAwB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;QAC/E,MAAM,qBAAqB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAQ,CAAA;QAEzE,MAAM,EAAE,GAAG,MAAM,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QACpF,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YACZ,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACnF,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,iCAAkB,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;QACnF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAM;QACR,CAAC;QAED,MAAM,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE;YACnD,MAAM,EAAE,aAAa,CAAC,MAAM;YAC5B,IAAI,EAAE;gBACJ,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC7B,MAAM,EAAE;oBACN,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;oBAC5C,QAAQ,EAAE,OAAO;iBAClB;aACF;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,GAAkB,EAAE,MAAc;IACxE,IAAI,CAAC;QACH,MAAM,wBAAwB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAQ,CAAA;QAC/E,MAAM,qBAAqB,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAQ,CAAA;QAEzE,MAAM,EAAE,GAAG,MAAM,wBAAwB,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QACpF,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;YACZ,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,EAAE,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;QACnF,MAAM,aAAa,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAA,iCAAkB,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;QACnF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,CAAA;QAC1D,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAkB;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAA;IACtE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAA;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAkB;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAA;IACtE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAA;AAChD,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,GAAkB,EAAE,GAAmB;IAChE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAsB,mBAAmB,CAAC,CAAA;IAC1E,IAAI,OAAO,GAAkB,IAAI,CAAA;IAEjC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAS,CAAA;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,MAAM,aAAa,GAAG,CAAC,CAAE,IAAY,CAAC,eAAe,CAAA;QAErD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAA;QACjE,CAAC;QAED,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACnE,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;QAC1C,CAAC;QAED;;WAEG;QACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAExC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC;YACjC,MAAM,EAAE,MAAM;YACd,MAAM,EAAE;gBACN,IAAI;gBACJ,OAAO;gBACP,UAAU;gBACV,gBAAgB;gBAChB,WAAW;gBACX,gBAAgB;gBAChB,iBAAiB;gBACjB,eAAe;gBACf,sBAAsB;gBACtB,aAAa;gBACb,gBAAgB;gBAChB,kBAAkB;gBAClB,gBAAgB;gBAChB,iBAAiB;gBACjB,aAAa;aACd;YACD,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;SACxB,CAAC,CAAA;QAEF,MAAM,IAAI,GAAI,IAAI,EAAE,CAAC,CAAC,CAAS,IAAI,IAAI,CAAA;QAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,CAAA;QASjD,MAAM,QAAQ,GAAG,MAAM,MAAM;aAC1B,WAAW,EAAE;aACb,KAAK,CAAC,GAA2B,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5C,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAwB,CAAA;QACjE,MAAM,kBAAkB,GAAG,YAAY,CAAC,mBAAmB,IAAI,EAAE,CAAA;QACjE,MAAM,UAAU,GAAG,YAAY,CAAC,WAAW,IAAI,EAAE,CAAA;QACjD,MAAM,oBAAoB,GAAG,CAAC,YAAY,CAAC,sBAAsB,IAAI,EAAE,CAAwB,CAAA;QAE/F,MAAM,UAAU,GACd,OAAO,oBAAoB,CAAC,OAAO,KAAK,QAAQ;YAC9C,CAAC,CAAC,oBAAoB,CAAC,OAAO;YAC9B,CAAC,CAAC,eAAe,CAAA;QAErB,MAAM,aAAa,GAAkB,aAAa;YAChD,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ;gBACtB,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,mBAAmB,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAA;QACR,MAAM,kBAAkB,GACtB,OAAO,UAAU,CAAC,aAAa,KAAK,QAAQ;YAC1C,CAAC,CAAC,IAAA,kCAAqB,EAAC,UAAU,CAAC,aAAa,CAAC;YACjD,CAAC,CAAC,IAAA,kCAAqB,EAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,KAAK,CAAC,CAAA;QAEjE,MAAM,QAAQ,GAAG,IAAA,kCAAqB,EACpC,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC,aAAa,IAAI,kBAAkB,CACvE,CAAA;QACD,IAAA,0CAA6B,EAAC;YAC5B,YAAY,EAAE,QAAQ;YACtB,sBAAsB,EAAE,kBAAkB;SAC3C,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAA,6BAAmB,EAAC,QAAQ,CAAC,CAAA;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAE1C,MAAM,gBAAgB,GACpB,OAAO,kBAAkB,CAAC,aAAa,KAAK,QAAQ;YAClD,CAAC,CAAC,kBAAkB,CAAC,aAAa;YAClC,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,aAAa,GAAG,gBAAgB,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;QAChF,MAAM,SAAS,GACb,OAAO,kBAAkB,CAAC,SAAS,KAAK,QAAQ;YAC9C,CAAC,CAAC,kBAAkB,CAAC,SAAS;YAC9B,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,cAAc,GAClB,OAAO,kBAAkB,CAAC,WAAW,KAAK,QAAQ;YAChD,CAAC,CAAC,kBAAkB,CAAC,WAAW;YAChC,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,WAAW,GACf,cAAc,KAAK,OAAO;YACxB,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,cAAc,KAAK,SAAS;gBAC5B,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,cAAc,KAAK,eAAe;oBAClC,CAAC,CAAC,eAAe;oBACjB,CAAC,CAAC,SAAS,CAAA;QACnB,MAAM,qBAAqB,GACzB,OAAO,kBAAkB,CAAC,qBAAqB,KAAK,SAAS;YAC3D,CAAC,CAAC,kBAAkB,CAAC,qBAAqB;YAC1C,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,eAAe,GAAG,kBAAkB,CAAC,eAAe,KAAK,KAAK,CAAA;QACpE,MAAM,aAAa,GACjB,OAAO,kBAAkB,CAAC,uBAAuB,KAAK,QAAQ;YAC5D,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,IAAI,EAAE;YACnD,CAAC,CAAC,EAAE,CAAA;QACR,MAAM,aAAa,GACjB,OAAO,kBAAkB,CAAC,aAAa,KAAK,QAAQ;YAClD,CAAC,CAAC,kBAAkB,CAAC,aAAa;YAClC,CAAC,CAAC,EAAE,CAAA;QACR,MAAM,SAAS,GAAG,GAAG,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,CAAA;QAChE,MAAM,SAAS,GACb,CAAC,OAAO,UAAU,CAAC,cAAc,KAAK,QAAQ,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE;YAChF,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW;YAC5D,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5B,MAAM,SAAS,GACb,CAAC,OAAO,UAAU,CAAC,cAAc,KAAK,QAAQ,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE;YAChF,CAAC,CAAC,GAAG,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO;YACxD,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAA;QAE5B,MAAM,kBAAkB,GAAwB;YAC9C,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7F,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChD,CAAA;QAED,MAAM,SAAS,GAAwB,EAAE,CAAA;QACzC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAA;QAChD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAA;QACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAA;QAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAA;QACtD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,CAAA;QACvD,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAC9B,CAAC,EACD,aAAa,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CACtD,CAAA;QACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,SAAS,CAAC,UAAU,GAAG;gBACrB,aAAa,EAAE,QAAQ;gBACvB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;aACvC,CAAA;QACH,CAAC;QACD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,SAAS,CAAC,QAAQ,GAAG;gBACnB,aAAa,EAAE,QAAQ;gBACvB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;aACvC,CAAA;QACH,CAAC;QACD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,SAAS,CAAC,SAAS,GAAG;gBACpB,aAAa,EAAE,QAAQ;gBACvB,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;aAClC,CAAA;QACH,CAAC;QACD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,aAAa,EAAE,eAAe,CAAC,CAAA;QACjF,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,SAAS,CAAC,QAAQ,GAAG;gBACnB,aAAa,EAAE,QAAQ;gBACvB,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC;aACvC,CAAA;QACH,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAE,IAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,IAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QAC/E,MAAM,aAAa,GAAG,eAAe;YACnC,CAAC,CAAC,SAAS;iBACN,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;gBACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,CAAC,CAAA;gBAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC,CAAA;gBAC/C,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBACnE,OAAO,IAAI,CAAA;gBACb,CAAC;gBACD,OAAO;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBACjD,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;oBACvC,WAAW,EAAE;wBACX,aAAa,EAAE,QAAQ;wBACvB,KAAK,EAAE,IAAA,+BAAqB,EAAC,SAAS,EAAE,QAAQ,CAAC;qBAClD;iBACF,CAAA;YACH,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC;YACpB,CAAC,CAAC,EAAE,CAAA;QAEN,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,kCAAoB,EAAC;YACvD,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,qBAAqB,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;QAEpF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,qBAAqB,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,cAAc,EAAE,kBAAkB;gBAClC,mBAAmB,EAAE,SAAS;aAC/B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,aAAa;gBACrB,cAAc,EAAE;oBACd;wBACE,YAAY,EAAE,IAAI,CAAC,EAAE;wBACrB,UAAU,EAAE,SAAS;wBACrB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzE,MAAM,EAAE;4BACN,aAAa,EAAE,QAAQ;4BACvB,KAAK;4BACL,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC5D;wBACD,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9D;iBACF;gBACD,GAAG,CAAC,aAAa;oBACf,CAAC,CAAC;wBACE,cAAc,EAAE;4BACd,IAAI,EAAE;gCACJ,UAAU,EAAE;oCACV,YAAY,EAAE;wCACZ,MAAM,EAAE,aAAa;qCACtB;iCACF;6BACF;yBACF;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;gBACP,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,GAAG,CAAC;oBAC5C,CAAC,CAAC,EAAE,mBAAmB,EAAE,kBAAkB,EAAE;oBAC7C,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;SACH,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QAClC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,8BAA8B,MAAM,CAAC,MAAM,MAAM,MAAM,GACrD,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC,CAAC,EACrC,EAAE,CACH,CAAA;QACH,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEhC,MAAM,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;QAExD,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACpC,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,QAAQ,EAAE,KAAK,CAAC,EAAE;YAClB,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;SAChD,CAAC,CAAA;QACF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAA;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAS,CAAA;YACrC,MAAM,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE;gBACnD,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;aACjC,CAAC,CAAA;YACF,MAAM,MAAM,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAA;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,+BAA+B,CAAA;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACjE,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAAC;gBAC5C,CAAC,CAAC,GAAG;gBACL,CAAC,CAAC,GAAG,CAAA;QACT,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7C,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../../../../../../src/api/store/paypal/create-order/route.ts"],"names":[],"mappings":"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"}
|
package/README.md
CHANGED
|
@@ -16,7 +16,9 @@ Production-ready PayPal integration for **Medusa v2** with:
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Step-by-step setup (GitHub style)
|
|
20
|
+
|
|
21
|
+
### 1) Install the package
|
|
20
22
|
|
|
21
23
|
```bash
|
|
22
24
|
npm install @easypayment/medusa-paypal
|
|
@@ -26,11 +28,9 @@ pnpm add @easypayment/medusa-paypal
|
|
|
26
28
|
yarn add @easypayment/medusa-paypal
|
|
27
29
|
```
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
## Medusa v2 configuration
|
|
31
|
+
### 2) Register plugin + providers in `medusa-config.ts`
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
Add the plugin and both payment providers:
|
|
34
34
|
|
|
35
35
|
```ts
|
|
36
36
|
module.exports = defineConfig({
|
|
@@ -61,11 +61,9 @@ module.exports = defineConfig({
|
|
|
61
61
|
})
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
### 3) Add backend environment variables
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
Set the following in your Medusa backend environment:
|
|
66
|
+
Set these in your backend `.env`:
|
|
69
67
|
|
|
70
68
|
```bash
|
|
71
69
|
# required for API + onboarding defaults
|
|
@@ -79,11 +77,17 @@ PAYPAL_CREDENTIALS_ENCRYPTION_KEY=your-32-byte-or-strong-secret
|
|
|
79
77
|
|
|
80
78
|
> Tip: PayPal API credentials are managed from the Medusa Admin PayPal settings UI.
|
|
81
79
|
|
|
82
|
-
|
|
80
|
+
### 4) Start backend and open Admin
|
|
81
|
+
|
|
82
|
+
- Run your Medusa backend.
|
|
83
|
+
- Open Medusa Admin.
|
|
84
|
+
- Go to the PayPal settings pages.
|
|
83
85
|
|
|
84
|
-
|
|
86
|
+
### 5) Connect PayPal and configure checkout behavior
|
|
85
87
|
|
|
86
|
-
|
|
88
|
+
Use the Admin UI to set credentials and runtime behavior.
|
|
89
|
+
|
|
90
|
+
Runtime-relevant settings include:
|
|
87
91
|
|
|
88
92
|
- **PayPal Settings**
|
|
89
93
|
- `enabled`
|
|
@@ -103,11 +107,9 @@ The following admin settings are used by the backend order/config APIs:
|
|
|
103
107
|
- `invoicePrefix`
|
|
104
108
|
- `creditCardStatementName`
|
|
105
109
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
## Provider IDs (important)
|
|
110
|
+
### 6) Use the generated provider IDs in your storefront
|
|
109
111
|
|
|
110
|
-
With the config above, Medusa
|
|
112
|
+
With the sample config above, Medusa provider IDs are:
|
|
111
113
|
|
|
112
114
|
- `pp_paypal_paypal`
|
|
113
115
|
- `pp_paypal_card_paypal_card`
|
|
@@ -116,6 +118,16 @@ Your storefront package should use these exact IDs unless you customize provider
|
|
|
116
118
|
|
|
117
119
|
---
|
|
118
120
|
|
|
121
|
+
## Quick checklist
|
|
122
|
+
|
|
123
|
+
- [ ] Package installed
|
|
124
|
+
- [ ] `medusa-config.ts` updated (plugin + both providers)
|
|
125
|
+
- [ ] Required env vars set
|
|
126
|
+
- [ ] PayPal credentials configured in Admin
|
|
127
|
+
- [ ] Storefront uses correct provider IDs
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
119
131
|
## Build and publish
|
|
120
132
|
|
|
121
133
|
```bash
|
package/package.json
CHANGED
|
@@ -551,7 +551,7 @@ export default function PayPalConnectionPage() {
|
|
|
551
551
|
type="button"
|
|
552
552
|
onClick={handleDisconnect}
|
|
553
553
|
disabled={onboardingInProgress}
|
|
554
|
-
className="rounded-md border border-ui-border-base px-3 py-2 text-sm font-medium hover:bg-ui-bg-subtle disabled:opacity-50 disabled:cursor-not-allowed"
|
|
554
|
+
className="rounded-md border border-ui-border-base px-3 py-2 text-sm font-medium transition-colors hover:bg-ui-bg-subtle focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-border-interactive disabled:opacity-50 disabled:cursor-not-allowed"
|
|
555
555
|
>
|
|
556
556
|
Disconnect
|
|
557
557
|
</button>
|
|
@@ -588,7 +588,7 @@ export default function PayPalConnectionPage() {
|
|
|
588
588
|
href={finalUrl || "#"}
|
|
589
589
|
data-paypal-onboard-complete="onboardingCallback"
|
|
590
590
|
onClick={handleConnectClick}
|
|
591
|
-
className="inline-flex items-center justify-center rounded-md bg-ui-button-neutral px-4 py-2 text-sm font-medium text-ui-fg-on-color no-underline shadow-sm hover:opacity-90 disabled:opacity-60"
|
|
591
|
+
className="inline-flex items-center justify-center rounded-md bg-ui-button-neutral px-4 py-2 text-sm font-medium text-ui-fg-on-color no-underline shadow-sm transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-border-interactive disabled:opacity-60"
|
|
592
592
|
style={{
|
|
593
593
|
cursor: onboardingInProgress ? "not-allowed" : "pointer",
|
|
594
594
|
opacity: onboardingInProgress ? 0.6 : 1,
|
|
@@ -685,7 +685,7 @@ export default function PayPalConnectionPage() {
|
|
|
685
685
|
|
|
686
686
|
<div className="md:col-span-2 rounded-md border border-ui-border-base bg-ui-bg-subtle p-4 text-sm text-ui-fg-subtle">
|
|
687
687
|
<p className="font-medium text-ui-fg-base">
|
|
688
|
-
Get your Client ID and
|
|
688
|
+
Get your Client ID and Secret in 3 steps:
|
|
689
689
|
</p>
|
|
690
690
|
<ol className="mt-2 list-decimal space-y-2 pl-5">
|
|
691
691
|
<li>
|
|
@@ -701,7 +701,7 @@ export default function PayPalConnectionPage() {
|
|
|
701
701
|
and sign in or create an account.
|
|
702
702
|
</li>
|
|
703
703
|
<li>Select <span className="font-medium text-ui-fg-base">Apps & Credentials</span>, then choose <span className="font-medium text-ui-fg-base">Create App</span> if you need a new project.</li>
|
|
704
|
-
<li>Copy your app's <span className="font-medium text-ui-fg-base">Client ID</span> and <span className="font-medium text-ui-fg-base">
|
|
704
|
+
<li>Copy your app's <span className="font-medium text-ui-fg-base">Client ID</span> and <span className="font-medium text-ui-fg-base">Secret</span>, paste them above, then click <span className="font-medium text-ui-fg-base">Save credentials</span>.</li>
|
|
705
705
|
</ol>
|
|
706
706
|
</div>
|
|
707
707
|
|
|
@@ -370,17 +370,6 @@ export default function PayPalSettingsTab() {
|
|
|
370
370
|
</div>
|
|
371
371
|
</SectionCard>
|
|
372
372
|
|
|
373
|
-
{/* Optional: preview block (pure UI) */}
|
|
374
|
-
<div className="mt-6 rounded-md border border-ui-border-base bg-ui-bg-subtle p-4">
|
|
375
|
-
<div className="text-sm font-medium text-ui-fg-base">Preview (UI only)</div>
|
|
376
|
-
<div className="mt-2 text-sm text-ui-fg-subtle">
|
|
377
|
-
Color: <span className="text-ui-fg-base">{form.buttonColor}</span> · Shape:{" "}
|
|
378
|
-
<span className="text-ui-fg-base">{form.buttonShape}</span> · Width:{" "}
|
|
379
|
-
<span className="text-ui-fg-base">{form.buttonWidth}</span> · Height:{" "}
|
|
380
|
-
<span className="text-ui-fg-base">{form.buttonHeight}px</span> · Label:{" "}
|
|
381
|
-
<span className="text-ui-fg-base">{form.buttonLabel}</span>
|
|
382
|
-
</div>
|
|
383
|
-
</div>
|
|
384
373
|
</div>
|
|
385
374
|
</div>
|
|
386
375
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MedusaRequest, MedusaResponse } from "@medusajs/framework/http"
|
|
2
2
|
import { randomUUID } from "crypto"
|
|
3
|
-
import {
|
|
3
|
+
import { getCurrencyExponent } from "../../../../modules/paypal/utils/amounts"
|
|
4
4
|
import {
|
|
5
5
|
assertPayPalCurrencySupported,
|
|
6
6
|
normalizeCurrencyCode,
|
|
@@ -248,20 +248,66 @@ export async function POST(req: MedusaRequest, res: MedusaResponse) {
|
|
|
248
248
|
...(cancelUrl ? { cancel_url: cancelUrl } : {}),
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
-
const breakdown: Record<string, any> = {}
|
|
252
251
|
const subtotalMajor = Number(cart.subtotal || 0)
|
|
253
252
|
const shippingMajor = Number(cart.shipping_total || 0)
|
|
254
253
|
const taxMajor = Number(cart.tax_total || 0)
|
|
255
254
|
const discountMajor = Number(cart.discount_total || 0)
|
|
256
255
|
const giftCardMajor = Number(cart.gift_card_total || 0)
|
|
257
|
-
const
|
|
258
|
-
|
|
259
|
-
|
|
256
|
+
const lineItems = Array.isArray((cart as any).items) ? (cart as any).items : []
|
|
257
|
+
const purchaseItemsRaw = sendItemDetails
|
|
258
|
+
? lineItems
|
|
259
|
+
.map((item: any) => {
|
|
260
|
+
const quantity = Number(item?.quantity || 0)
|
|
261
|
+
const lineSubtotal = Number(item?.subtotal ?? (Number(item?.unit_price || 0) * quantity))
|
|
262
|
+
const unitAmount =
|
|
263
|
+
quantity > 0 ? parseFloat((lineSubtotal / quantity).toFixed(exponent)) : 0
|
|
264
|
+
|
|
265
|
+
if (!quantity || Number.isNaN(quantity) || Number.isNaN(unitAmount)) {
|
|
266
|
+
return null
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return {
|
|
270
|
+
quantity,
|
|
271
|
+
unitAmount,
|
|
272
|
+
paypalItem: {
|
|
273
|
+
name: String(item?.title || "Item").slice(0, 127),
|
|
274
|
+
quantity: String(Math.max(1, quantity)),
|
|
275
|
+
unit_amount: {
|
|
276
|
+
currency_code: currency,
|
|
277
|
+
value: unitAmount.toFixed(exponent),
|
|
278
|
+
},
|
|
279
|
+
},
|
|
280
|
+
}
|
|
281
|
+
})
|
|
282
|
+
.filter(Boolean)
|
|
283
|
+
: []
|
|
284
|
+
|
|
285
|
+
const roundedItemSum = purchaseItemsRaw.reduce(
|
|
286
|
+
(sum: number, item: any) => sum + item.unitAmount * item.quantity,
|
|
287
|
+
0
|
|
260
288
|
)
|
|
261
|
-
|
|
289
|
+
const roundedItemSumFixed = parseFloat(roundedItemSum.toFixed(exponent))
|
|
290
|
+
const diff = parseFloat((subtotalMajor - roundedItemSumFixed).toFixed(exponent))
|
|
291
|
+
|
|
292
|
+
const finalPurchaseItems = purchaseItemsRaw.map((item: any) => item.paypalItem)
|
|
293
|
+
let adjustedItemTotal = subtotalMajor
|
|
294
|
+
|
|
295
|
+
if (Math.abs(diff) > 0.000001 && sendItemDetails && finalPurchaseItems.length > 0) {
|
|
296
|
+
finalPurchaseItems.push({
|
|
297
|
+
name: "Line Item Amount Offset",
|
|
298
|
+
quantity: "1",
|
|
299
|
+
unit_amount: {
|
|
300
|
+
currency_code: currency,
|
|
301
|
+
value: diff.toFixed(exponent),
|
|
302
|
+
},
|
|
303
|
+
})
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
const breakdown: Record<string, any> = {}
|
|
307
|
+
if (adjustedItemTotal > 0) {
|
|
262
308
|
breakdown.item_total = {
|
|
263
309
|
currency_code: currency,
|
|
264
|
-
value:
|
|
310
|
+
value: adjustedItemTotal.toFixed(exponent),
|
|
265
311
|
}
|
|
266
312
|
}
|
|
267
313
|
if (shippingMajor > 0) {
|
|
@@ -276,34 +322,36 @@ export async function POST(req: MedusaRequest, res: MedusaResponse) {
|
|
|
276
322
|
value: taxMajor.toFixed(exponent),
|
|
277
323
|
}
|
|
278
324
|
}
|
|
279
|
-
|
|
280
|
-
|
|
325
|
+
|
|
326
|
+
const discountValue = discountMajor + giftCardMajor
|
|
327
|
+
if (discountValue > 0 && finalPurchaseItems.length > 0) {
|
|
281
328
|
breakdown.discount = {
|
|
282
329
|
currency_code: currency,
|
|
283
330
|
value: discountValue.toFixed(exponent),
|
|
284
331
|
}
|
|
285
332
|
}
|
|
286
333
|
|
|
287
|
-
const
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
334
|
+
const breakdownSum = parseFloat(
|
|
335
|
+
(adjustedItemTotal + shippingMajor + taxMajor - discountValue).toFixed(exponent)
|
|
336
|
+
)
|
|
337
|
+
|
|
338
|
+
if (Math.abs(breakdownSum - totalMajor) > 0.000001) {
|
|
339
|
+
const gap = parseFloat((totalMajor - breakdownSum).toFixed(exponent))
|
|
340
|
+
|
|
341
|
+
if (gap > 0) {
|
|
342
|
+
breakdown.tax_total = {
|
|
343
|
+
currency_code: currency,
|
|
344
|
+
value: parseFloat(
|
|
345
|
+
((Number(breakdown.tax_total?.value || 0) + gap).toFixed(exponent))
|
|
346
|
+
).toFixed(exponent),
|
|
347
|
+
}
|
|
348
|
+
} else {
|
|
349
|
+
breakdown.shipping_discount = {
|
|
350
|
+
currency_code: currency,
|
|
351
|
+
value: Math.abs(gap).toFixed(exponent),
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
307
355
|
|
|
308
356
|
const { accessToken, base } = await getPayPalAccessToken({
|
|
309
357
|
environment: creds.environment,
|
|
@@ -332,7 +380,7 @@ export async function POST(req: MedusaRequest, res: MedusaResponse) {
|
|
|
332
380
|
value,
|
|
333
381
|
...(Object.keys(breakdown).length > 0 ? { breakdown } : {}),
|
|
334
382
|
},
|
|
335
|
-
...(
|
|
383
|
+
...(finalPurchaseItems.length > 0 ? { items: finalPurchaseItems } : {}),
|
|
336
384
|
},
|
|
337
385
|
],
|
|
338
386
|
...(threeDsMethod
|