pi-kiosk-shared 2.1.4 → 2.1.7
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/README.md +80 -85
- package/dist/api.d.ts +5 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +36 -6
- package/dist/api.js.map +1 -1
- package/dist/index.d.ts +0 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -11
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +11 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -9
- package/dist/components/ErrorDisplay.d.ts +0 -13
- package/dist/components/ErrorDisplay.d.ts.map +0 -1
- package/dist/components/ErrorDisplay.js +0 -9
- package/dist/components/ErrorDisplay.js.map +0 -1
- package/dist/components/LoadingSpinner.d.ts +0 -9
- package/dist/components/LoadingSpinner.d.ts.map +0 -1
- package/dist/components/LoadingSpinner.js +0 -11
- package/dist/components/LoadingSpinner.js.map +0 -1
- package/dist/config/deployment.d.ts +0 -97
- package/dist/config/deployment.d.ts.map +0 -1
- package/dist/config/deployment.js +0 -154
- package/dist/config/deployment.js.map +0 -1
- package/dist/config/environments.d.ts +0 -42
- package/dist/config/environments.d.ts.map +0 -1
- package/dist/config/environments.js +0 -191
- package/dist/config/environments.js.map +0 -1
- package/dist/config/environments.test.d.ts +0 -1
- package/dist/config/environments.test.js +0 -49
- package/dist/config/logger.d.ts +0 -41
- package/dist/config/logger.d.ts.map +0 -1
- package/dist/config/logger.js +0 -119
- package/dist/config/logger.js.map +0 -1
- package/dist/constants.d.ts +0 -91
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -113
- package/dist/constants.js.map +0 -1
- package/dist/hooks/useApi.d.ts +0 -21
- package/dist/hooks/useApi.d.ts.map +0 -1
- package/dist/hooks/useApi.js +0 -52
- package/dist/hooks/useApi.js.map +0 -1
- package/dist/hooks/useAsyncOperation.d.ts +0 -22
- package/dist/hooks/useAsyncOperation.d.ts.map +0 -1
- package/dist/hooks/useAsyncOperation.js +0 -59
- package/dist/hooks/useAsyncOperation.js.map +0 -1
- package/dist/hooks/useErrorHandler.d.ts +0 -15
- package/dist/hooks/useErrorHandler.d.ts.map +0 -1
- package/dist/hooks/useErrorHandler.js +0 -55
- package/dist/hooks/useErrorHandler.js.map +0 -1
- package/dist/utils/simple.test.d.ts +0 -1
- package/dist/utils/simple.test.js +0 -45
- package/dist/utils.d.ts +0 -24
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -159
- package/dist/utils.js.map +0 -1
- package/dist/validation.d.ts +0 -46
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -173
- package/dist/validation.js.map +0 -1
package/dist/utils.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
// Shared utility functions - consolidated from utils/simple.ts
|
|
2
|
-
export const validateEmail = (email) => {
|
|
3
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
4
|
-
// Additional check for consecutive dots which are invalid
|
|
5
|
-
if (email.includes('..'))
|
|
6
|
-
return false;
|
|
7
|
-
return emailRegex.test(email);
|
|
8
|
-
};
|
|
9
|
-
export const formatPrice = (price) => {
|
|
10
|
-
return new Intl.NumberFormat('cs-CZ', {
|
|
11
|
-
style: 'currency',
|
|
12
|
-
currency: 'CZK',
|
|
13
|
-
minimumFractionDigits: 2,
|
|
14
|
-
maximumFractionDigits: 2
|
|
15
|
-
}).format(price);
|
|
16
|
-
};
|
|
17
|
-
// Price precision handling utilities
|
|
18
|
-
export const PRICE_PRECISION = 2; // 2 decimal places for CZK
|
|
19
|
-
export const roundPrice = (price) => {
|
|
20
|
-
return Math.round(price * 100) / 100;
|
|
21
|
-
};
|
|
22
|
-
export const parsePrice = (value) => {
|
|
23
|
-
const num = typeof value === 'string' ? parseFloat(value) : value;
|
|
24
|
-
return roundPrice(num);
|
|
25
|
-
};
|
|
26
|
-
export const validatePrice = (price) => {
|
|
27
|
-
return !isNaN(price) && price > 0 && price <= 999999.99;
|
|
28
|
-
};
|
|
29
|
-
// Convert decimal to string for API calls to avoid precision issues
|
|
30
|
-
export const priceToString = (price) => {
|
|
31
|
-
return price.toFixed(PRICE_PRECISION);
|
|
32
|
-
};
|
|
33
|
-
// Convert string back to number for calculations
|
|
34
|
-
export const stringToPrice = (priceStr) => {
|
|
35
|
-
return parseFloat(priceStr);
|
|
36
|
-
};
|
|
37
|
-
export const getKioskIdFromUrl = () => {
|
|
38
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
39
|
-
const kioskId = urlParams.get('kioskId');
|
|
40
|
-
if (!kioskId) {
|
|
41
|
-
throw new Error('Kiosk ID is required. Please add ?kioskId=X to the URL where X is your kiosk number.');
|
|
42
|
-
}
|
|
43
|
-
const parsedId = parseInt(kioskId);
|
|
44
|
-
if (isNaN(parsedId) || parsedId <= 0) {
|
|
45
|
-
throw new Error(`Invalid kiosk ID: ${kioskId}. Kiosk ID must be a positive number.`);
|
|
46
|
-
}
|
|
47
|
-
return parsedId;
|
|
48
|
-
};
|
|
49
|
-
export const getKioskSecretFromUrl = () => {
|
|
50
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
51
|
-
return urlParams.get('secret') || undefined;
|
|
52
|
-
};
|
|
53
|
-
export const formatDate = (date) => {
|
|
54
|
-
const d = typeof date === 'string' ? new Date(date) : date;
|
|
55
|
-
return d.toLocaleDateString('cs-CZ', {
|
|
56
|
-
year: 'numeric',
|
|
57
|
-
month: 'short',
|
|
58
|
-
day: 'numeric',
|
|
59
|
-
hour: '2-digit',
|
|
60
|
-
minute: '2-digit'
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
export const debounce = (func, delay) => {
|
|
64
|
-
let timeoutId;
|
|
65
|
-
return (...args) => {
|
|
66
|
-
clearTimeout(timeoutId);
|
|
67
|
-
timeoutId = setTimeout(() => func(...args), delay);
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
export const generatePaymentId = () => {
|
|
71
|
-
return `pay-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
72
|
-
};
|
|
73
|
-
export const validateKioskId = (kioskId) => {
|
|
74
|
-
return Number.isInteger(kioskId) && kioskId > 0;
|
|
75
|
-
};
|
|
76
|
-
// Cart utility functions
|
|
77
|
-
export const createEmptyCart = () => ({
|
|
78
|
-
items: [],
|
|
79
|
-
totalAmount: 0,
|
|
80
|
-
totalItems: 0
|
|
81
|
-
});
|
|
82
|
-
export const addToCart = (cart, product, quantity = 1) => {
|
|
83
|
-
const existingItemIndex = cart.items.findIndex((item) => item.product.id === product.id);
|
|
84
|
-
// Create a new items array
|
|
85
|
-
const newItems = [...cart.items];
|
|
86
|
-
if (existingItemIndex !== -1) {
|
|
87
|
-
// Create a new item object with updated quantity (immutable update)
|
|
88
|
-
const existingItem = cart.items[existingItemIndex];
|
|
89
|
-
newItems[existingItemIndex] = {
|
|
90
|
-
...existingItem,
|
|
91
|
-
quantity: existingItem.quantity + quantity
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
// Add new item to the array
|
|
96
|
-
newItems.push({ product, quantity });
|
|
97
|
-
}
|
|
98
|
-
// Calculate totals
|
|
99
|
-
const totalAmount = roundPrice(newItems.reduce((sum, item) => sum + (item.product.price * item.quantity), 0));
|
|
100
|
-
const totalItems = newItems.reduce((sum, item) => sum + item.quantity, 0);
|
|
101
|
-
// Return a new cart object (immutable)
|
|
102
|
-
return {
|
|
103
|
-
...cart,
|
|
104
|
-
items: newItems,
|
|
105
|
-
totalAmount,
|
|
106
|
-
totalItems
|
|
107
|
-
};
|
|
108
|
-
};
|
|
109
|
-
export const removeFromCart = (cart, productId) => {
|
|
110
|
-
// Create a new items array (immutable)
|
|
111
|
-
const newItems = cart.items.filter((item) => item.product.id !== productId);
|
|
112
|
-
// Calculate totals
|
|
113
|
-
const totalAmount = roundPrice(newItems.reduce((sum, item) => sum + (item.product.price * item.quantity), 0));
|
|
114
|
-
const totalItems = newItems.reduce((sum, item) => sum + item.quantity, 0);
|
|
115
|
-
// Return a new cart object (immutable)
|
|
116
|
-
return {
|
|
117
|
-
...cart,
|
|
118
|
-
items: newItems,
|
|
119
|
-
totalAmount,
|
|
120
|
-
totalItems
|
|
121
|
-
};
|
|
122
|
-
};
|
|
123
|
-
export const updateCartItemQuantity = (cart, productId, quantity) => {
|
|
124
|
-
if (quantity <= 0) {
|
|
125
|
-
return removeFromCart(cart, productId);
|
|
126
|
-
}
|
|
127
|
-
const itemIndex = cart.items.findIndex((item) => item.product.id === productId);
|
|
128
|
-
if (itemIndex === -1) {
|
|
129
|
-
return cart;
|
|
130
|
-
}
|
|
131
|
-
// Create a new items array with updated item (immutable)
|
|
132
|
-
const newItems = [...cart.items];
|
|
133
|
-
const existingItem = cart.items[itemIndex];
|
|
134
|
-
newItems[itemIndex] = {
|
|
135
|
-
...existingItem,
|
|
136
|
-
quantity
|
|
137
|
-
};
|
|
138
|
-
// Calculate totals
|
|
139
|
-
const totalAmount = roundPrice(newItems.reduce((sum, item) => sum + (item.product.price * item.quantity), 0));
|
|
140
|
-
const totalItems = newItems.reduce((sum, item) => sum + item.quantity, 0);
|
|
141
|
-
// Return a new cart object (immutable)
|
|
142
|
-
return {
|
|
143
|
-
...cart,
|
|
144
|
-
items: newItems,
|
|
145
|
-
totalAmount,
|
|
146
|
-
totalItems
|
|
147
|
-
};
|
|
148
|
-
};
|
|
149
|
-
export const clearCart = (cart) => {
|
|
150
|
-
// Return a new cart object (immutable)
|
|
151
|
-
return {
|
|
152
|
-
...cart,
|
|
153
|
-
items: [],
|
|
154
|
-
totalAmount: 0,
|
|
155
|
-
totalItems: 0
|
|
156
|
-
};
|
|
157
|
-
};
|
|
158
|
-
// Note: getErrorMessage is now exported from ./errors.ts instead
|
|
159
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.d.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
export interface ValidationResult {
|
|
2
|
-
isValid: boolean;
|
|
3
|
-
errors: Record<string, string>;
|
|
4
|
-
}
|
|
5
|
-
export declare const validators: {
|
|
6
|
-
required: (value: any) => string | null;
|
|
7
|
-
email: (value: string) => string | null;
|
|
8
|
-
minLength: (value: string, min: number, fieldName: string) => string | null;
|
|
9
|
-
maxLength: (value: string, max: number, fieldName: string) => string | null;
|
|
10
|
-
positiveNumber: (value: number, fieldName: string) => string | null;
|
|
11
|
-
username: (value: string) => string | null;
|
|
12
|
-
password: (value: string) => string | null;
|
|
13
|
-
kioskId: (value: number) => string | null;
|
|
14
|
-
quantity: (value: number, fieldName?: string) => string | null;
|
|
15
|
-
price: (value: number, fieldName?: string) => string | null;
|
|
16
|
-
};
|
|
17
|
-
export interface ValidationSchema {
|
|
18
|
-
[field: string]: Array<(value: any) => string | null>;
|
|
19
|
-
}
|
|
20
|
-
export declare const validateSchema: (data: Record<string, any>, schema: ValidationSchema) => ValidationResult;
|
|
21
|
-
export declare const validationSchemas: {
|
|
22
|
-
login: {
|
|
23
|
-
username: ((value: string) => string | null)[];
|
|
24
|
-
password: ((value: string) => string | null)[];
|
|
25
|
-
};
|
|
26
|
-
customerEmail: {
|
|
27
|
-
email: ((value: string) => string | null)[];
|
|
28
|
-
};
|
|
29
|
-
product: {
|
|
30
|
-
name: ((value: any) => string | null)[];
|
|
31
|
-
price: ((value: number, fieldName?: string) => string | null)[];
|
|
32
|
-
description: ((value: any) => string | null)[];
|
|
33
|
-
};
|
|
34
|
-
kioskId: {
|
|
35
|
-
kioskId: ((value: number) => string | null)[];
|
|
36
|
-
};
|
|
37
|
-
inventory: {
|
|
38
|
-
quantityInStock: ((value: number, fieldName?: string) => string | null)[];
|
|
39
|
-
};
|
|
40
|
-
payment: {
|
|
41
|
-
productId: ((value: any) => string | null)[];
|
|
42
|
-
kioskId: ((value: number) => string | null)[];
|
|
43
|
-
amount: ((value: number, fieldName?: string) => string | null)[];
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=validation.d.ts.map
|
package/dist/validation.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,eAAO,MAAM,UAAU;sBACH,GAAG,KAAG,MAAM,GAAG,IAAI;mBAOtB,MAAM,KAAG,MAAM,GAAG,IAAI;uBAUlB,MAAM,OAAO,MAAM,aAAa,MAAM,KAAG,MAAM,GAAG,IAAI;uBAStD,MAAM,OAAO,MAAM,aAAa,MAAM,KAAG,MAAM,GAAG,IAAI;4BASjD,MAAM,aAAa,MAAM,KAAG,MAAM,GAAG,IAAI;sBAS/C,MAAM,KAAG,MAAM,GAAG,IAAI;sBActB,MAAM,KAAG,MAAM,GAAG,IAAI;qBAUvB,MAAM,KAAG,MAAM,GAAG,IAAI;sBAUrB,MAAM,cAAa,MAAM,KAAgB,MAAM,GAAG,IAAI;mBAUzD,MAAM,cAAa,MAAM,KAAY,MAAM,GAAG,IAAI;CAoBlE,CAAC;AAGF,MAAM,WAAW,gBAAgB;IAC/B,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC;CACvD;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,gBAAgB,KAAG,gBAmBpF,CAAC;AAGF,eAAO,MAAM,iBAAiB;;2BA7FV,MAAM,KAAG,MAAM,GAAG,IAAI;2BActB,MAAM,KAAG,MAAM,GAAG,IAAI;;;wBAnDzB,MAAM,KAAG,MAAM,GAAG,IAAI;;;uBAuJzB,GAAG;wBAtEA,MAAM,cAAa,MAAM,KAAY,MAAM,GAAG,IAAI;8BA+ErD,GAAG;;;0BAnGE,MAAM,KAAG,MAAM,GAAG,IAAI;;;kCAUrB,MAAM,cAAa,MAAM,KAAgB,MAAM,GAAG,IAAI;;;4BA6G5D,GAAG;0BAvHE,MAAM,KAAG,MAAM,GAAG,IAAI;yBAoBxB,MAAM,cAAa,MAAM,KAAY,MAAM,GAAG,IAAI;;CA+GlE,CAAC"}
|
package/dist/validation.js
DELETED
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
// Shared validation utilities
|
|
2
|
-
// ValidationError is imported but not used directly in this file
|
|
3
|
-
import { APP_CONFIG, UI_MESSAGES } from './constants';
|
|
4
|
-
export const validators = {
|
|
5
|
-
required: (value) => {
|
|
6
|
-
if (value === null || value === undefined || value === '') {
|
|
7
|
-
return UI_MESSAGES.REQUIRED_FIELD;
|
|
8
|
-
}
|
|
9
|
-
return null;
|
|
10
|
-
},
|
|
11
|
-
email: (value) => {
|
|
12
|
-
if (!value)
|
|
13
|
-
return null; // Let required validator handle empty values
|
|
14
|
-
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
15
|
-
if (!emailRegex.test(value)) {
|
|
16
|
-
return UI_MESSAGES.INVALID_EMAIL;
|
|
17
|
-
}
|
|
18
|
-
return null;
|
|
19
|
-
},
|
|
20
|
-
minLength: (value, min, fieldName) => {
|
|
21
|
-
if (!value)
|
|
22
|
-
return null; // Let required validator handle empty values
|
|
23
|
-
if (value.length < min) {
|
|
24
|
-
return `${fieldName} musí mít alespoň ${min} znaků`;
|
|
25
|
-
}
|
|
26
|
-
return null;
|
|
27
|
-
},
|
|
28
|
-
maxLength: (value, max, fieldName) => {
|
|
29
|
-
if (!value)
|
|
30
|
-
return null;
|
|
31
|
-
if (value.length > max) {
|
|
32
|
-
return `${fieldName} může mít maximálně ${max} znaků`;
|
|
33
|
-
}
|
|
34
|
-
return null;
|
|
35
|
-
},
|
|
36
|
-
positiveNumber: (value, fieldName) => {
|
|
37
|
-
if (value === null || value === undefined)
|
|
38
|
-
return null;
|
|
39
|
-
if (value <= 0) {
|
|
40
|
-
return `${fieldName} musí být větší než 0`;
|
|
41
|
-
}
|
|
42
|
-
return null;
|
|
43
|
-
},
|
|
44
|
-
username: (value) => {
|
|
45
|
-
if (!value)
|
|
46
|
-
return null;
|
|
47
|
-
if (value.length < APP_CONFIG.MIN_USERNAME_LENGTH) {
|
|
48
|
-
return `Uživatelské jméno musí mít alespoň ${APP_CONFIG.MIN_USERNAME_LENGTH} znaky`;
|
|
49
|
-
}
|
|
50
|
-
if (!/^[a-zA-Z0-9_]+$/.test(value)) {
|
|
51
|
-
return 'Uživatelské jméno může obsahovat pouze písmena, číslice a podtržítka';
|
|
52
|
-
}
|
|
53
|
-
return null;
|
|
54
|
-
},
|
|
55
|
-
password: (value) => {
|
|
56
|
-
if (!value)
|
|
57
|
-
return null;
|
|
58
|
-
if (value.length < APP_CONFIG.MIN_PASSWORD_LENGTH) {
|
|
59
|
-
return `Heslo musí mít alespoň ${APP_CONFIG.MIN_PASSWORD_LENGTH} znaků`;
|
|
60
|
-
}
|
|
61
|
-
return null;
|
|
62
|
-
},
|
|
63
|
-
kioskId: (value) => {
|
|
64
|
-
if (value === null || value === undefined)
|
|
65
|
-
return null;
|
|
66
|
-
if (!Number.isInteger(value) || value <= 0) {
|
|
67
|
-
return 'Kiosk ID musí být kladné celé číslo';
|
|
68
|
-
}
|
|
69
|
-
return null;
|
|
70
|
-
},
|
|
71
|
-
quantity: (value, fieldName = 'Množství') => {
|
|
72
|
-
if (value === null || value === undefined)
|
|
73
|
-
return null;
|
|
74
|
-
if (!Number.isInteger(value) || value < 0) {
|
|
75
|
-
return `${fieldName} musí být nezáporné celé číslo`;
|
|
76
|
-
}
|
|
77
|
-
return null;
|
|
78
|
-
},
|
|
79
|
-
price: (value, fieldName = 'Cena') => {
|
|
80
|
-
if (value === null || value === undefined)
|
|
81
|
-
return null;
|
|
82
|
-
if (isNaN(value) || value <= 0) {
|
|
83
|
-
return `${fieldName} musí být kladné číslo`;
|
|
84
|
-
}
|
|
85
|
-
// Check for reasonable price range (0.01 to 999999.99)
|
|
86
|
-
if (value < 0.01 || value > 999999.99) {
|
|
87
|
-
return `${fieldName} musí být v rozsahu 0,01 - 999 999,99 Kč`;
|
|
88
|
-
}
|
|
89
|
-
// Check for precision (max 2 decimal places)
|
|
90
|
-
const rounded = Math.round(value * 100) / 100;
|
|
91
|
-
if (Math.abs(value - rounded) > 0.001) {
|
|
92
|
-
return `${fieldName} může mít maximálně 2 desetinná místa`;
|
|
93
|
-
}
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
export const validateSchema = (data, schema) => {
|
|
98
|
-
const errors = {};
|
|
99
|
-
for (const [field, validatorFunctions] of Object.entries(schema)) {
|
|
100
|
-
const value = data[field];
|
|
101
|
-
for (const validator of validatorFunctions) {
|
|
102
|
-
const error = validator(value);
|
|
103
|
-
if (error) {
|
|
104
|
-
errors[field] = error;
|
|
105
|
-
break; // Stop at first error for this field
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
return {
|
|
110
|
-
isValid: Object.keys(errors).length === 0,
|
|
111
|
-
errors
|
|
112
|
-
};
|
|
113
|
-
};
|
|
114
|
-
// Common validation schemas
|
|
115
|
-
export const validationSchemas = {
|
|
116
|
-
login: {
|
|
117
|
-
username: [
|
|
118
|
-
(value) => validators.required(value),
|
|
119
|
-
validators.username
|
|
120
|
-
],
|
|
121
|
-
password: [
|
|
122
|
-
(value) => validators.required(value),
|
|
123
|
-
validators.password
|
|
124
|
-
]
|
|
125
|
-
},
|
|
126
|
-
customerEmail: {
|
|
127
|
-
email: [
|
|
128
|
-
(value) => validators.required(value),
|
|
129
|
-
validators.email
|
|
130
|
-
]
|
|
131
|
-
},
|
|
132
|
-
product: {
|
|
133
|
-
name: [
|
|
134
|
-
(value) => validators.required(value),
|
|
135
|
-
(value) => validators.minLength(value, 2, 'Název produktu'),
|
|
136
|
-
(value) => validators.maxLength(value, APP_CONFIG.MAX_PRODUCT_NAME_LENGTH, 'Název produktu')
|
|
137
|
-
],
|
|
138
|
-
price: [
|
|
139
|
-
(value) => validators.required(value),
|
|
140
|
-
validators.price
|
|
141
|
-
],
|
|
142
|
-
description: [
|
|
143
|
-
(value) => validators.maxLength(value, APP_CONFIG.MAX_DESCRIPTION_LENGTH, 'Popis')
|
|
144
|
-
]
|
|
145
|
-
},
|
|
146
|
-
kioskId: {
|
|
147
|
-
kioskId: [
|
|
148
|
-
(value) => validators.required(value),
|
|
149
|
-
validators.kioskId
|
|
150
|
-
]
|
|
151
|
-
},
|
|
152
|
-
inventory: {
|
|
153
|
-
quantityInStock: [
|
|
154
|
-
(value) => validators.required(value),
|
|
155
|
-
validators.quantity
|
|
156
|
-
]
|
|
157
|
-
},
|
|
158
|
-
payment: {
|
|
159
|
-
productId: [
|
|
160
|
-
(value) => validators.required(value),
|
|
161
|
-
(value) => validators.positiveNumber(value, 'ID produktu')
|
|
162
|
-
],
|
|
163
|
-
kioskId: [
|
|
164
|
-
(value) => validators.required(value),
|
|
165
|
-
validators.kioskId
|
|
166
|
-
],
|
|
167
|
-
amount: [
|
|
168
|
-
(value) => validators.required(value),
|
|
169
|
-
validators.price
|
|
170
|
-
]
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
//# sourceMappingURL=validation.js.map
|
package/dist/validation.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|