Slave/btc integration #4
@@ -53,6 +53,7 @@ VALIDATION_DIGITAL_STOCK_ATTACHMENTS_MAX=5
|
||||
VALIDATION_SHIPPING_NOTE_MIN_LENGTH=20
|
||||
VALIDATION_SHIPPING_NOTE_MAX_LENGTH=4000
|
||||
VALIDATION_ORDER_MESSAGE_MAX_LENGTH=2000
|
||||
VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE=500
|
||||
|
||||
SIGNED_COOKIE_JWT_SECRET=change-me-in-production
|
||||
|
||||
@@ -146,4 +147,5 @@ VITE_VALIDATION_DIGITAL_STOCK_ATTACHMENTS_MAX=5
|
||||
VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH=20
|
||||
VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH=4000
|
||||
VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH=2000
|
||||
VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE=500
|
||||
VITE_ORDERS_DETAIL_POLL_INTERVAL_MS=5000
|
||||
|
||||
@@ -103,7 +103,8 @@ export const getAppConfig = (): AppConfig => {
|
||||
digitalStockAttachmentsMax: envInt('VALIDATION_DIGITAL_STOCK_ATTACHMENTS_MAX'),
|
||||
shippingNoteMinLength: envInt('VALIDATION_SHIPPING_NOTE_MIN_LENGTH'),
|
||||
shippingNoteMaxLength: envInt('VALIDATION_SHIPPING_NOTE_MAX_LENGTH'),
|
||||
orderMessageMaxLength: envInt('VALIDATION_ORDER_MESSAGE_MAX_LENGTH')
|
||||
orderMessageMaxLength: envInt('VALIDATION_ORDER_MESSAGE_MAX_LENGTH'),
|
||||
bitcoinWithdrawMaxFeeRateSatVbyte: envInt('VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE')
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -153,6 +153,12 @@ class EnvironmentVariables {
|
||||
@Max(10000)
|
||||
VALIDATION_ORDER_MESSAGE_MAX_LENGTH: number;
|
||||
|
||||
@IsNotEmpty()
|
||||
@IsNumber()
|
||||
@Min(1)
|
||||
@Max(1000)
|
||||
VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE: number;
|
||||
|
||||
@IsNotEmpty()
|
||||
@IsNumber()
|
||||
@Min(4)
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
import { Transform } from 'class-transformer';
|
||||
import { IsInt, IsNotEmpty, IsString, Max, Min } from 'class-validator';
|
||||
import { getAppConfig } from '../../../config';
|
||||
import { IsBitcoinAddress } from '../../../validation/decorators/isBitcoinAddress';
|
||||
|
||||
const {
|
||||
validation: { bitcoinWithdrawMaxFeeRateSatVbyte }
|
||||
} = getAppConfig();
|
||||
|
||||
export class BitcoinWalletWithdrawDto {
|
||||
@Transform(({ value }: { value: unknown }) => (typeof value === 'string' ? value.trim() : value))
|
||||
@IsString()
|
||||
@@ -11,7 +16,7 @@ export class BitcoinWalletWithdrawDto {
|
||||
|
||||
@IsInt()
|
||||
@Min(1)
|
||||
@Max(100)
|
||||
@Max(bitcoinWithdrawMaxFeeRateSatVbyte)
|
||||
feeRateSatVbyte: number;
|
||||
|
||||
@IsString()
|
||||
|
||||
@@ -49,6 +49,7 @@ export interface AppConfig {
|
||||
shippingNoteMinLength: number;
|
||||
shippingNoteMaxLength: number;
|
||||
orderMessageMaxLength: number;
|
||||
bitcoinWithdrawMaxFeeRateSatVbyte: number;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,8 @@ export const config = {
|
||||
digitalStockAttachmentsMax: parseInt(env('VITE_VALIDATION_DIGITAL_STOCK_ATTACHMENTS_MAX'), 10),
|
||||
shippingNoteMinLength: parseInt(env('VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH'), 10),
|
||||
shippingNoteMaxLength: parseInt(env('VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH'), 10),
|
||||
orderMessageMaxLength: parseInt(env('VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH'), 10)
|
||||
orderMessageMaxLength: parseInt(env('VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH'), 10),
|
||||
bitcoinWithdrawMaxFeeRateSatVbyte: parseInt(env('VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE'), 10)
|
||||
},
|
||||
|
||||
orders: {
|
||||
|
||||
Vendored
+1
@@ -29,6 +29,7 @@ interface ImportMetaEnv {
|
||||
readonly VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH?: string;
|
||||
readonly VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH?: string;
|
||||
readonly VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH?: string;
|
||||
readonly VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE?: string;
|
||||
readonly VITE_SHOP_FIAT_CURRENCY?: string;
|
||||
}
|
||||
|
||||
|
||||
@@ -140,6 +140,7 @@ services:
|
||||
VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH: ${VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH}
|
||||
VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH: ${VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH}
|
||||
VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH: ${VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH}
|
||||
VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE: ${VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE}
|
||||
VITE_ORDERS_DETAIL_POLL_INTERVAL_MS: ${VITE_ORDERS_DETAIL_POLL_INTERVAL_MS}
|
||||
container_name: ${COMPOSE_PROJECT_NAME}_nginx
|
||||
restart: unless-stopped
|
||||
|
||||
@@ -25,6 +25,7 @@ ARG VITE_VALIDATION_DIGITAL_STOCK_ATTACHMENTS_MAX
|
||||
ARG VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH
|
||||
ARG VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH
|
||||
ARG VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH
|
||||
ARG VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE
|
||||
ARG VITE_ORDERS_DETAIL_POLL_INTERVAL_MS
|
||||
|
||||
ENV VITE_API_BASE_URL=$VITE_API_BASE_URL \
|
||||
@@ -45,6 +46,7 @@ ENV VITE_API_BASE_URL=$VITE_API_BASE_URL \
|
||||
VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH=$VITE_VALIDATION_SHIPPING_NOTE_MIN_LENGTH \
|
||||
VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH=$VITE_VALIDATION_SHIPPING_NOTE_MAX_LENGTH \
|
||||
VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH=$VITE_VALIDATION_ORDER_MESSAGE_MAX_LENGTH \
|
||||
VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE=$VITE_VALIDATION_BITCOIN_WITHDRAW_MAX_FEE_RATE_SAT_VBYTE \
|
||||
VITE_ORDERS_DETAIL_POLL_INTERVAL_MS=$VITE_ORDERS_DETAIL_POLL_INTERVAL_MS
|
||||
|
||||
RUN npm run build
|
||||
|
||||
Reference in New Issue
Block a user