build: refresh release artifacts after dropping user-app

Rebuild API bundle, admin panel, and user-app-v2 for Dokploy copy-only deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
mahmood
2026-10-28 16:25:46 +03:30
co-authored by Cursor
parent 520454481b
commit 959a272227
211 changed files with 297 additions and 212 deletions
+36 -21
View File
@@ -89477,7 +89477,7 @@ var require_customer_auth_service = __commonJS({
const smsText = `<#> code is ${code}
\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641 \u0634\u0645\u0627 \u062C\u0647\u062A \u0648\u0631\u0648\u062F \u0628\u0647 \u0627\u067E\u0644\u06CC\u06A9\u06CC\u0634\u0646 ${(0, brand_1.brandName)()} ${code} \u0645\u06CC \u0628\u0627\u0634\u062F
aMo6iFyUQaY`;
const result = await this.sms.send(mobile, smsText, { persist: false });
const result = await this.sms.send(mobile, smsText);
const devNoGateway = process.env.NODE_ENV !== "production" && !result.ok && result.error === "sms-not-configured";
if (devNoGateway) {
this.logger.log(`[dev] OTP for ${mobile}: ${code}`);
@@ -89486,14 +89486,6 @@ aMo6iFyUQaY`;
this.logger.error(`OTP SMS to ${mobile} failed: ${result.error ?? "unknown"}`);
throw new common_12.HttpException("\u0627\u0631\u0633\u0627\u0644 \u067E\u06CC\u0627\u0645 \u06A9\u0648\u062A\u0627\u0647 \u062F\u0631 \u062D\u0627\u0644 \u062D\u0627\u0636\u0631 \u0645\u0645\u06A9\u0646 \u0646\u06CC\u0633\u062A. \u0644\u0637\u0641\u0627\u064B \u0686\u0646\u062F \u0644\u062D\u0638\u0647 \u0628\u0639\u062F \u062F\u0648\u0628\u0627\u0631\u0647 \u062A\u0644\u0627\u0634 \u06A9\u0646\u06CC\u062F.", common_12.HttpStatus.SERVICE_UNAVAILABLE);
}
await this.prisma.smsMessage.create({
data: {
audience: client_1.MessageAudience.SINGLE_NUMBER,
recipients: mobile,
body: "\u06A9\u062F \u06CC\u06A9\u0628\u0627\u0631 \u0645\u0635\u0631\u0641 \u0648\u0631\u0648\u062F (\u0645\u062A\u0646 \u067E\u06CC\u0627\u0645 \u062B\u0628\u062A \u0646\u0645\u06CC\u200C\u0634\u0648\u062F)",
sentCount: 1
}
});
}
};
exports2.CustomerAuthService = CustomerAuthService;
@@ -92126,10 +92118,12 @@ var require_orders_service = __commonJS({
throw new common_12.NotFoundException(`Variant ${variant.id} not found`);
const wagePercent = new client_1.Prisma.Decimal(quote ? quote.wagePercentSnapshot : item.wagePercent);
const discountPercent = new client_1.Prisma.Decimal(quote ? quote.discountPercentSnapshot : item.discountPercent ?? 0);
if (quote)
this.warnOnPriceMismatch(variant.id, item, wagePercent, discountPercent);
const netPercent = wagePercent.sub(discountPercent);
const computedWeightGrams = rashWeight.mul(netPercent.div(100).add(1));
const variantRial = new client_1.Prisma.Decimal(variant.rialWage ?? 0);
const flatRialCharge2 = quotes ? variantRial : item.flatRialCharge != null ? new client_1.Prisma.Decimal(item.flatRialCharge) : variantRial;
if (quote)
this.warnOnPriceMismatch(variant.id, item, wagePercent, discountPercent, flatRialCharge2);
return {
productVariantId: variant.id,
quantity: item.quantity,
@@ -92137,8 +92131,7 @@ var require_orders_service = __commonJS({
wagePercentSnapshot: wagePercent,
discountPercentSnapshot: discountPercent,
computedWeightGrams,
// Legacy app: rial_pay is always 0 (cart.vue); only an operator sets one.
flatRialCharge: new client_1.Prisma.Decimal(quotes ? 0 : item.flatRialCharge ?? 0)
flatRialCharge: flatRialCharge2
};
}));
const totalGoldWeightGrams = computedItems.reduce((sum, item) => sum.add(item.computedWeightGrams.mul(item.quantity)), new client_1.Prisma.Decimal(0));
@@ -92201,11 +92194,11 @@ var require_orders_service = __commonJS({
* mismatch means a stale app version, a promotion that expired between the
* product page and checkout, or a tampered request.
*
* `flatRialCharge` is included because the app hardcodes 0 (cart.vue:179) and
* only an operator ever sets one — anything non-zero from a customer is a
* client that should not be sending it.
* `flatRialCharge` is compared only when the client actually sent one. The
* app cart omits it and the server copies variant.rialWage, so treating a
* missing field as 0 would warn on every order that has a rial wage.
*/
warnOnPriceMismatch(variantId, sent, wagePercent, discountPercent) {
warnOnPriceMismatch(variantId, sent, wagePercent, discountPercent, flatRialCharge) {
const differs = [];
if (!wagePercent.eq(sent.wagePercent)) {
differs.push(`wagePercent sent=${sent.wagePercent} used=${wagePercent.toString()}`);
@@ -92213,8 +92206,8 @@ var require_orders_service = __commonJS({
if (!discountPercent.eq(sent.discountPercent ?? 0)) {
differs.push(`discountPercent sent=${sent.discountPercent ?? 0} used=${discountPercent.toString()}`);
}
if ((sent.flatRialCharge ?? 0) !== 0) {
differs.push(`flatRialCharge sent=${sent.flatRialCharge} used=0`);
if (sent.flatRialCharge != null && !flatRialCharge.eq(sent.flatRialCharge)) {
differs.push(`flatRialCharge sent=${sent.flatRialCharge} used=${flatRialCharge.toString()}`);
}
if (differs.length) {
this.logger.warn(`Order pricing for variant ${variantId}: the server's figures are used, the client's are ignored \u2014 ${differs.join("; ")}`);
@@ -95369,7 +95362,8 @@ var require_admin_orders_service = __commonJS({
variant_title: it.productVariant.title,
qty: it.quantity,
grams: it.computedWeightGrams,
rash: it.rashWeightGramsSnapshot
rash: it.rashWeightGramsSnapshot,
flatRialCharge: it.flatRialCharge
}))
};
}
@@ -95513,7 +95507,9 @@ var require_admin_orders_service = __commonJS({
// negotiate a different one.
wagePercent: Number(it.percent ?? variant.defaultWagePercent),
discountPercent: Number(it.discount ?? 0),
flatRialCharge: Number(it.rial_input ?? 0)
// Omitted rial_input is left unset so createOrder copies variant.rialWage.
// An explicit 0 stays 0: the operator cleared the charge.
...it.rial_input != null ? { flatRialCharge: Number(it.rial_input) } : {}
};
}));
const order = await this.orders.createOrder({
@@ -103431,6 +103427,19 @@ var require_public_slider_controller = __commonJS({
const value = await this.misc.getConst("mobile_main_slider");
return Array.isArray(value) ? value : [];
}
/** Custom button on the profile dashboard (ثابت‌ها → دکمه سفارشی). */
async getCustomButton() {
const value = await this.misc.getConst("custom_button");
if (!value || typeof value !== "object" || Array.isArray(value)) {
return { enabled: false, title: "", link: "" };
}
const row = value;
return {
enabled: Boolean(row.enabled),
title: String(row.title ?? ""),
link: String(row.link ?? "")
};
}
};
exports2.PublicSliderController = PublicSliderController;
__decorate4([
@@ -103439,6 +103448,12 @@ var require_public_slider_controller = __commonJS({
__metadata3("design:paramtypes", []),
__metadata3("design:returntype", Promise)
], PublicSliderController.prototype, "getSlider", null);
__decorate4([
(0, common_12.Get)("custom-button"),
__metadata3("design:type", Function),
__metadata3("design:paramtypes", []),
__metadata3("design:returntype", Promise)
], PublicSliderController.prototype, "getCustomButton", null);
exports2.PublicSliderController = PublicSliderController = __decorate4([
(0, guards_1.Public)(),
(0, common_12.Controller)("home"),
+17
View File
@@ -0,0 +1,17 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules/prisma/build/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules/prisma/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules/prisma/build/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules/prisma/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../../../../../../prisma@5.22.0/node_modules/prisma/build/index.js" "$@"
else
exec node "$basedir/../../../../../../prisma@5.22.0/node_modules/prisma/build/index.js" "$@"
fi
+12
View File
@@ -0,0 +1,12 @@
@SETLOCAL
@IF NOT DEFINED NODE_PATH (
@SET "NODE_PATH=E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules\prisma\build\node_modules;E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules\prisma\node_modules;E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules;E:\tehran_taj\node_modules\.pnpm\node_modules"
) ELSE (
@SET "NODE_PATH=E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules\prisma\build\node_modules;E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules\prisma\node_modules;E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules;E:\tehran_taj\node_modules\.pnpm\node_modules;%NODE_PATH%"
)
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\..\..\..\..\..\prisma@5.22.0\node_modules\prisma\build\index.js" %*
) ELSE (
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\..\..\..\..\..\prisma@5.22.0\node_modules\prisma\build\index.js" %*
)
+41
View File
@@ -0,0 +1,41 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
$pathsep=":"
$env_node_path=$env:NODE_PATH
$new_node_path="E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules\prisma\build\node_modules;E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules\prisma\node_modules;E:\tehran_taj\node_modules\.pnpm\prisma@5.22.0\node_modules;E:\tehran_taj\node_modules\.pnpm\node_modules"
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
$pathsep=";"
} else {
$new_node_path="/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules/prisma/build/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules/prisma/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/prisma@5.22.0/node_modules:/mnt/e/tehran_taj/node_modules/.pnpm/node_modules"
}
if ([string]::IsNullOrEmpty($env_node_path)) {
$env:NODE_PATH=$new_node_path
} else {
$env:NODE_PATH="$new_node_path$pathsep$env_node_path"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../../../../../../prisma@5.22.0/node_modules/prisma/build/index.js" $args
} else {
& "$basedir/node$exe" "$basedir/../../../../../../prisma@5.22.0/node_modules/prisma/build/index.js" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../../../../../../prisma@5.22.0/node_modules/prisma/build/index.js" $args
} else {
& "node$exe" "$basedir/../../../../../../prisma@5.22.0/node_modules/prisma/build/index.js" $args
}
$ret=$LASTEXITCODE
}
$env:NODE_PATH=$env_node_path
exit $ret