pi-kiosk-shared 2.1.4 → 2.1.5
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 +1 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +16 -2
- 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 +5 -7
- 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/constants.d.ts
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
export declare const APP_CONFIG: {
|
|
2
|
-
readonly DEFAULT_API_URL: "http://localhost:3015";
|
|
3
|
-
readonly DEFAULT_WS_URL: "ws://localhost:3015";
|
|
4
|
-
readonly API_TIMEOUT: 10000;
|
|
5
|
-
readonly RETRY_ATTEMPTS: 3;
|
|
6
|
-
readonly RETRY_DELAY: 1000;
|
|
7
|
-
readonly WS_RECONNECT_ATTEMPTS: 5;
|
|
8
|
-
readonly WS_RECONNECT_INTERVAL: 3000;
|
|
9
|
-
readonly WS_HEARTBEAT_INTERVAL: 30000;
|
|
10
|
-
readonly LOADING_DEBOUNCE: 300;
|
|
11
|
-
readonly ERROR_DISPLAY_DURATION: 5000;
|
|
12
|
-
readonly MIN_USERNAME_LENGTH: 3;
|
|
13
|
-
readonly MIN_PASSWORD_LENGTH: 6;
|
|
14
|
-
readonly MAX_PRODUCT_NAME_LENGTH: 100;
|
|
15
|
-
readonly MAX_DESCRIPTION_LENGTH: 500;
|
|
16
|
-
readonly DEFAULT_KIOSK_ID: 1;
|
|
17
|
-
readonly PAYMENT_POLLING_INTERVAL: 3000;
|
|
18
|
-
readonly PRODUCT_CACHE_TTL: 300000;
|
|
19
|
-
readonly PAYMENT_ACCOUNT_NUMBER: "1234567890";
|
|
20
|
-
readonly PAYMENT_CURRENCY: "CZK";
|
|
21
|
-
readonly QR_CODE_WIDTH: 300;
|
|
22
|
-
readonly QR_CODE_FORMAT: "SPD*1.0";
|
|
23
|
-
};
|
|
24
|
-
export declare const UI_MESSAGES: {
|
|
25
|
-
readonly LOADING_PRODUCTS: "Načítání produktů...";
|
|
26
|
-
readonly LOADING_PAYMENT: "Zpracovávám platbu...";
|
|
27
|
-
readonly GENERATING_QR: "Generuji QR kód...";
|
|
28
|
-
readonly PAYMENT_INITIALIZING: "Inicializuji platbu...";
|
|
29
|
-
readonly PAYMENT_SUCCESS: "Platba byla úspěšně zpracována!";
|
|
30
|
-
readonly PRODUCT_SAVED: "Produkt byl úspěšně uložen!";
|
|
31
|
-
readonly NETWORK_ERROR: "Problém s připojením. Zkuste to znovu.";
|
|
32
|
-
readonly VALIDATION_ERROR: "Zkontrolujte zadané údaje.";
|
|
33
|
-
readonly UNKNOWN_ERROR: "Něco se pokazilo. Zkuste to znovu.";
|
|
34
|
-
readonly PAYMENT_ERROR: "Chyba při zpracování platby";
|
|
35
|
-
readonly NO_PRODUCTS: "Žádné produkty nejsou k dispozici";
|
|
36
|
-
readonly NO_TRANSACTIONS: "Žádné transakce";
|
|
37
|
-
readonly COMING_SOON: "Připravujeme pro vás...";
|
|
38
|
-
readonly REQUIRED_FIELD: "Toto pole je povinné";
|
|
39
|
-
readonly INVALID_EMAIL: "Zadejte platnou emailovou adresu";
|
|
40
|
-
readonly INVALID_PRICE: "Cena musí být větší než 0";
|
|
41
|
-
readonly EMAIL_LABEL: "Váš email:";
|
|
42
|
-
readonly SELECT_PRODUCT: "Vyberte si produkt";
|
|
43
|
-
readonly PAYMENT_WAITING: "Čekám na platbu...";
|
|
44
|
-
readonly PAYMENT_CONFIRMED: "Platba potvrzena!";
|
|
45
|
-
readonly CONTINUE_SHOPPING: "Pokračovat v nákupu";
|
|
46
|
-
readonly BACK_TO_PRODUCTS: "Zpět na produkty";
|
|
47
|
-
readonly RETRY: "Zkusit znovu";
|
|
48
|
-
readonly CANCEL: "Zrušit";
|
|
49
|
-
};
|
|
50
|
-
export declare const CSS_CLASSES: {
|
|
51
|
-
readonly CONTAINER: "container";
|
|
52
|
-
readonly GRID: "grid";
|
|
53
|
-
readonly FLEX: "flex";
|
|
54
|
-
readonly APP: "kiosk-app";
|
|
55
|
-
readonly SCREEN: "screen";
|
|
56
|
-
readonly LOADING: "loading";
|
|
57
|
-
readonly ERROR: "error";
|
|
58
|
-
readonly SUCCESS: "success";
|
|
59
|
-
readonly DISABLED: "disabled";
|
|
60
|
-
readonly ACTIVE: "active";
|
|
61
|
-
readonly BUTTON_PRIMARY: "btn-primary";
|
|
62
|
-
readonly BUTTON_SECONDARY: "btn-secondary";
|
|
63
|
-
readonly BUTTON_SUCCESS: "btn-success";
|
|
64
|
-
readonly INPUT: "input";
|
|
65
|
-
readonly CARD: "card";
|
|
66
|
-
readonly PAYMENT_CONTAINER: "payment-container";
|
|
67
|
-
readonly PAYMENT_HEADER: "payment-header";
|
|
68
|
-
readonly PAYMENT_METHODS: "payment-methods";
|
|
69
|
-
readonly PAYMENT_METHOD: "payment-method";
|
|
70
|
-
readonly PAYMENT_DETAILS: "payment-details";
|
|
71
|
-
readonly PAYMENT_ACTIONS: "payment-actions";
|
|
72
|
-
readonly LOADING_CONTAINER: "loading-container";
|
|
73
|
-
readonly LOADING_SPINNER: "loading-spinner";
|
|
74
|
-
readonly ERROR_CONTAINER: "error-container";
|
|
75
|
-
readonly BUTTON_GROUP: "button-group";
|
|
76
|
-
readonly BADGE_SUCCESS: "badge-success";
|
|
77
|
-
readonly ONLINE: "online";
|
|
78
|
-
readonly OFFLINE: "offline";
|
|
79
|
-
readonly CONNECTED: "connected";
|
|
80
|
-
readonly DISCONNECTED: "disconnected";
|
|
81
|
-
};
|
|
82
|
-
export declare const ROUTES: {
|
|
83
|
-
readonly KIOSK_HOME: "/";
|
|
84
|
-
readonly KIOSK_PAYMENT: "/payment";
|
|
85
|
-
readonly KIOSK_CONFIRMATION: "/confirmation";
|
|
86
|
-
readonly ADMIN_LOGIN: "/admin/login";
|
|
87
|
-
readonly ADMIN_DASHBOARD: "/admin";
|
|
88
|
-
readonly ADMIN_PRODUCTS: "/admin/products";
|
|
89
|
-
readonly ADMIN_KIOSKS: "/admin/kiosks";
|
|
90
|
-
};
|
|
91
|
-
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;CAmCb,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAsCd,CAAC;AAEX,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCd,CAAC;AAEX,eAAO,MAAM,MAAM;;;;;;;;CAWT,CAAC"}
|
package/dist/constants.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
// Shared constants across all packages
|
|
2
|
-
export const APP_CONFIG = {
|
|
3
|
-
// API Configuration
|
|
4
|
-
DEFAULT_API_URL: 'http://localhost:3015',
|
|
5
|
-
DEFAULT_WS_URL: 'ws://localhost:3015',
|
|
6
|
-
// Timeouts
|
|
7
|
-
API_TIMEOUT: 10000, // 10 seconds
|
|
8
|
-
RETRY_ATTEMPTS: 3,
|
|
9
|
-
RETRY_DELAY: 1000, // 1 second
|
|
10
|
-
// WebSocket
|
|
11
|
-
WS_RECONNECT_ATTEMPTS: 5,
|
|
12
|
-
WS_RECONNECT_INTERVAL: 3000,
|
|
13
|
-
WS_HEARTBEAT_INTERVAL: 30000,
|
|
14
|
-
// UI
|
|
15
|
-
LOADING_DEBOUNCE: 300,
|
|
16
|
-
ERROR_DISPLAY_DURATION: 5000,
|
|
17
|
-
// Validation
|
|
18
|
-
MIN_USERNAME_LENGTH: 3,
|
|
19
|
-
MIN_PASSWORD_LENGTH: 6,
|
|
20
|
-
MAX_PRODUCT_NAME_LENGTH: 100,
|
|
21
|
-
MAX_DESCRIPTION_LENGTH: 500,
|
|
22
|
-
// Business Rules
|
|
23
|
-
DEFAULT_KIOSK_ID: 1,
|
|
24
|
-
PAYMENT_POLLING_INTERVAL: 3000,
|
|
25
|
-
PRODUCT_CACHE_TTL: 300000, // 5 minutes
|
|
26
|
-
// Payment Configuration
|
|
27
|
-
PAYMENT_ACCOUNT_NUMBER: '1234567890',
|
|
28
|
-
PAYMENT_CURRENCY: 'CZK',
|
|
29
|
-
QR_CODE_WIDTH: 300,
|
|
30
|
-
QR_CODE_FORMAT: 'SPD*1.0', // Czech QR payment standard
|
|
31
|
-
};
|
|
32
|
-
export const UI_MESSAGES = {
|
|
33
|
-
// Loading states
|
|
34
|
-
LOADING_PRODUCTS: 'Načítání produktů...',
|
|
35
|
-
LOADING_PAYMENT: 'Zpracovávám platbu...',
|
|
36
|
-
GENERATING_QR: 'Generuji QR kód...',
|
|
37
|
-
PAYMENT_INITIALIZING: 'Inicializuji platbu...',
|
|
38
|
-
// Success messages
|
|
39
|
-
PAYMENT_SUCCESS: 'Platba byla úspěšně zpracována!',
|
|
40
|
-
PRODUCT_SAVED: 'Produkt byl úspěšně uložen!',
|
|
41
|
-
// Error messages
|
|
42
|
-
NETWORK_ERROR: 'Problém s připojením. Zkuste to znovu.',
|
|
43
|
-
VALIDATION_ERROR: 'Zkontrolujte zadané údaje.',
|
|
44
|
-
UNKNOWN_ERROR: 'Něco se pokazilo. Zkuste to znovu.',
|
|
45
|
-
PAYMENT_ERROR: 'Chyba při zpracování platby',
|
|
46
|
-
// Empty states
|
|
47
|
-
NO_PRODUCTS: 'Žádné produkty nejsou k dispozici',
|
|
48
|
-
NO_TRANSACTIONS: 'Žádné transakce',
|
|
49
|
-
COMING_SOON: 'Připravujeme pro vás...',
|
|
50
|
-
// Form validation
|
|
51
|
-
REQUIRED_FIELD: 'Toto pole je povinné',
|
|
52
|
-
INVALID_EMAIL: 'Zadejte platnou emailovou adresu',
|
|
53
|
-
INVALID_PRICE: 'Cena musí být větší než 0',
|
|
54
|
-
EMAIL_LABEL: 'Váš email:',
|
|
55
|
-
// Kiosk specific
|
|
56
|
-
SELECT_PRODUCT: 'Vyberte si produkt',
|
|
57
|
-
PAYMENT_WAITING: 'Čekám na platbu...',
|
|
58
|
-
PAYMENT_CONFIRMED: 'Platba potvrzena!',
|
|
59
|
-
CONTINUE_SHOPPING: 'Pokračovat v nákupu',
|
|
60
|
-
BACK_TO_PRODUCTS: 'Zpět na produkty',
|
|
61
|
-
// Action buttons
|
|
62
|
-
RETRY: 'Zkusit znovu',
|
|
63
|
-
CANCEL: 'Zrušit',
|
|
64
|
-
};
|
|
65
|
-
export const CSS_CLASSES = {
|
|
66
|
-
// Layout
|
|
67
|
-
CONTAINER: 'container',
|
|
68
|
-
GRID: 'grid',
|
|
69
|
-
FLEX: 'flex',
|
|
70
|
-
APP: 'kiosk-app',
|
|
71
|
-
SCREEN: 'screen',
|
|
72
|
-
// States
|
|
73
|
-
LOADING: 'loading',
|
|
74
|
-
ERROR: 'error',
|
|
75
|
-
SUCCESS: 'success',
|
|
76
|
-
DISABLED: 'disabled',
|
|
77
|
-
ACTIVE: 'active',
|
|
78
|
-
// Components
|
|
79
|
-
BUTTON_PRIMARY: 'btn-primary',
|
|
80
|
-
BUTTON_SECONDARY: 'btn-secondary',
|
|
81
|
-
BUTTON_SUCCESS: 'btn-success',
|
|
82
|
-
INPUT: 'input',
|
|
83
|
-
CARD: 'card',
|
|
84
|
-
// Payment specific
|
|
85
|
-
PAYMENT_CONTAINER: 'payment-container',
|
|
86
|
-
PAYMENT_HEADER: 'payment-header',
|
|
87
|
-
PAYMENT_METHODS: 'payment-methods',
|
|
88
|
-
PAYMENT_METHOD: 'payment-method',
|
|
89
|
-
PAYMENT_DETAILS: 'payment-details',
|
|
90
|
-
PAYMENT_ACTIONS: 'payment-actions',
|
|
91
|
-
LOADING_CONTAINER: 'loading-container',
|
|
92
|
-
LOADING_SPINNER: 'loading-spinner',
|
|
93
|
-
ERROR_CONTAINER: 'error-container',
|
|
94
|
-
BUTTON_GROUP: 'button-group',
|
|
95
|
-
BADGE_SUCCESS: 'badge-success',
|
|
96
|
-
// Status indicators
|
|
97
|
-
ONLINE: 'online',
|
|
98
|
-
OFFLINE: 'offline',
|
|
99
|
-
CONNECTED: 'connected',
|
|
100
|
-
DISCONNECTED: 'disconnected',
|
|
101
|
-
};
|
|
102
|
-
export const ROUTES = {
|
|
103
|
-
// Kiosk routes
|
|
104
|
-
KIOSK_HOME: '/',
|
|
105
|
-
KIOSK_PAYMENT: '/payment',
|
|
106
|
-
KIOSK_CONFIRMATION: '/confirmation',
|
|
107
|
-
// Admin routes
|
|
108
|
-
ADMIN_LOGIN: '/admin/login',
|
|
109
|
-
ADMIN_DASHBOARD: '/admin',
|
|
110
|
-
ADMIN_PRODUCTS: '/admin/products',
|
|
111
|
-
ADMIN_KIOSKS: '/admin/kiosks',
|
|
112
|
-
};
|
|
113
|
-
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/useApi.d.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { APIClient } from '../api';
|
|
2
|
-
export interface ApiState<T> {
|
|
3
|
-
data: T | null;
|
|
4
|
-
loading: boolean;
|
|
5
|
-
error: Error | null;
|
|
6
|
-
}
|
|
7
|
-
export declare function useApi<T = any>(_apiClient: APIClient): {
|
|
8
|
-
execute: (apiCall: () => Promise<T>, options?: {
|
|
9
|
-
onSuccess?: (data: T) => void;
|
|
10
|
-
onError?: (error: Error) => void;
|
|
11
|
-
skipLoading?: boolean;
|
|
12
|
-
}) => Promise<T>;
|
|
13
|
-
reset: () => void;
|
|
14
|
-
isLoading: boolean;
|
|
15
|
-
hasError: boolean;
|
|
16
|
-
hasData: boolean;
|
|
17
|
-
data: T | null;
|
|
18
|
-
loading: boolean;
|
|
19
|
-
error: Error | null;
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=useApi.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useApi.d.ts","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnC,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,wBAAgB,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,UAAU,EAAE,SAAS;uBAQxC,MAAM,OAAO,CAAC,CAAC,CAAC,YACf;QACR,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;QACjC,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB;;;;;;aAjBM,OAAO;WACT,KAAK,GAAG,IAAI;EAkEpB"}
|
package/dist/hooks/useApi.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { useState, useCallback } from 'react';
|
|
2
|
-
import { NetworkError, AppError } from '../errors';
|
|
3
|
-
export function useApi(_apiClient) {
|
|
4
|
-
const [state, setState] = useState({
|
|
5
|
-
data: null,
|
|
6
|
-
loading: false,
|
|
7
|
-
error: null
|
|
8
|
-
});
|
|
9
|
-
const execute = useCallback(async (apiCall, options) => {
|
|
10
|
-
try {
|
|
11
|
-
if (!options?.skipLoading) {
|
|
12
|
-
setState(prev => ({ ...prev, loading: true, error: null }));
|
|
13
|
-
}
|
|
14
|
-
const data = await apiCall();
|
|
15
|
-
setState({
|
|
16
|
-
data,
|
|
17
|
-
loading: false,
|
|
18
|
-
error: null
|
|
19
|
-
});
|
|
20
|
-
options?.onSuccess?.(data);
|
|
21
|
-
return data;
|
|
22
|
-
}
|
|
23
|
-
catch (error) {
|
|
24
|
-
const appError = error instanceof AppError
|
|
25
|
-
? error
|
|
26
|
-
: new NetworkError('Chyba při komunikaci se serverem');
|
|
27
|
-
setState(prev => ({
|
|
28
|
-
...prev,
|
|
29
|
-
loading: false,
|
|
30
|
-
error: appError
|
|
31
|
-
}));
|
|
32
|
-
options?.onError?.(appError);
|
|
33
|
-
throw appError;
|
|
34
|
-
}
|
|
35
|
-
}, []);
|
|
36
|
-
const reset = useCallback(() => {
|
|
37
|
-
setState({
|
|
38
|
-
data: null,
|
|
39
|
-
loading: false,
|
|
40
|
-
error: null
|
|
41
|
-
});
|
|
42
|
-
}, []);
|
|
43
|
-
return {
|
|
44
|
-
...state,
|
|
45
|
-
execute,
|
|
46
|
-
reset,
|
|
47
|
-
isLoading: state.loading,
|
|
48
|
-
hasError: !!state.error,
|
|
49
|
-
hasData: !!state.data
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=useApi.js.map
|
package/dist/hooks/useApi.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useApi.js","sourceRoot":"","sources":["../../src/hooks/useApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQnD,MAAM,UAAU,MAAM,CAAU,UAAqB;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAc;QAC9C,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAC/B,OAAyB,EACzB,OAIC,EACD,EAAE;QACF,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;YAE7B,QAAQ,CAAC;gBACP,IAAI;gBACJ,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,OAAO,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,IAAI,CAAC;QAEd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,YAAY,QAAQ;gBACxC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,YAAY,CAAC,kCAAkC,CAAC,CAAC;YAEzD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,IAAI;gBACP,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC,CAAC;YAEJ,OAAO,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;YAC7B,MAAM,QAAQ,CAAC;QACjB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,QAAQ,CAAC;YACP,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,GAAG,KAAK;QACR,OAAO;QACP,KAAK;QACL,SAAS,EAAE,KAAK,CAAC,OAAO;QACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;QACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
interface UseAsyncOperationOptions<T> {
|
|
2
|
-
onSuccess?: (data: T) => void;
|
|
3
|
-
onError?: (error: Error) => void;
|
|
4
|
-
initialData?: T;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Consistent hook for handling async operations with loading states and error handling
|
|
8
|
-
*/
|
|
9
|
-
export declare function useAsyncOperation<T = any>(options?: UseAsyncOperationOptions<T>): {
|
|
10
|
-
execute: (operation: () => Promise<T>, context?: string) => Promise<T | null>;
|
|
11
|
-
reset: () => void;
|
|
12
|
-
setData: (data: T) => void;
|
|
13
|
-
isLoading: boolean;
|
|
14
|
-
hasError: boolean;
|
|
15
|
-
hasData: boolean;
|
|
16
|
-
isIdle: boolean;
|
|
17
|
-
data: T | null;
|
|
18
|
-
loading: boolean;
|
|
19
|
-
error: Error | null;
|
|
20
|
-
};
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=useAsyncOperation.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAsyncOperation.d.ts","sourceRoot":"","sources":["../../src/hooks/useAsyncOperation.ts"],"names":[],"mappings":"AASA,UAAU,wBAAwB,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,GAAE,wBAAwB,CAAC,CAAC,CAAM;yBAUrE,MAAM,OAAO,CAAC,CAAC,CAAC,YACjB,MAAM,KACf,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;;oBAuCe,CAAC;;;;;;aAhE3B,OAAO;WACT,KAAK,GAAG,IAAI;EA8EpB"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { useState, useCallback } from 'react';
|
|
2
|
-
import { useErrorHandler } from './useErrorHandler';
|
|
3
|
-
/**
|
|
4
|
-
* Consistent hook for handling async operations with loading states and error handling
|
|
5
|
-
*/
|
|
6
|
-
export function useAsyncOperation(options = {}) {
|
|
7
|
-
const [state, setState] = useState({
|
|
8
|
-
data: options.initialData || null,
|
|
9
|
-
loading: false,
|
|
10
|
-
error: null
|
|
11
|
-
});
|
|
12
|
-
const { handleError } = useErrorHandler();
|
|
13
|
-
const execute = useCallback(async (operation, context) => {
|
|
14
|
-
setState(prev => ({ ...prev, loading: true, error: null }));
|
|
15
|
-
try {
|
|
16
|
-
const result = await operation();
|
|
17
|
-
setState({
|
|
18
|
-
data: result,
|
|
19
|
-
loading: false,
|
|
20
|
-
error: null
|
|
21
|
-
});
|
|
22
|
-
options.onSuccess?.(result);
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
const errorObj = error instanceof Error ? error : new Error(String(error));
|
|
27
|
-
setState(prev => ({
|
|
28
|
-
...prev,
|
|
29
|
-
loading: false,
|
|
30
|
-
error: errorObj
|
|
31
|
-
}));
|
|
32
|
-
handleError(errorObj, context || 'useAsyncOperation');
|
|
33
|
-
options.onError?.(errorObj);
|
|
34
|
-
return null;
|
|
35
|
-
}
|
|
36
|
-
}, [handleError, options]);
|
|
37
|
-
const reset = useCallback(() => {
|
|
38
|
-
setState({
|
|
39
|
-
data: options.initialData || null,
|
|
40
|
-
loading: false,
|
|
41
|
-
error: null
|
|
42
|
-
});
|
|
43
|
-
}, [options.initialData]);
|
|
44
|
-
const setData = useCallback((data) => {
|
|
45
|
-
setState(prev => ({ ...prev, data }));
|
|
46
|
-
}, []);
|
|
47
|
-
return {
|
|
48
|
-
...state,
|
|
49
|
-
execute,
|
|
50
|
-
reset,
|
|
51
|
-
setData,
|
|
52
|
-
// Computed properties
|
|
53
|
-
isLoading: state.loading,
|
|
54
|
-
hasError: !!state.error,
|
|
55
|
-
hasData: !!state.data,
|
|
56
|
-
isIdle: !state.loading && !state.error && !state.data
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
//# sourceMappingURL=useAsyncOperation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAsyncOperation.js","sourceRoot":"","sources":["../../src/hooks/useAsyncOperation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAcpD;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAU,UAAuC,EAAE;IAClF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAyB;QACzD,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;QACjC,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,EAAE,CAAC;IAE1C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,EAC/B,SAA2B,EAC3B,OAAgB,EACG,EAAE;QACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YAEjC,QAAQ,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,OAAO,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,MAAM,CAAC;QAEhB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAE3E,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,IAAI;gBACP,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,QAAQ;aAChB,CAAC,CAAC,CAAC;YAEJ,WAAW,CAAC,QAAQ,EAAE,OAAO,IAAI,mBAAmB,CAAC,CAAC;YACtD,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;YAE5B,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,QAAQ,CAAC;YACP,IAAI,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;YACjC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1B,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,IAAO,EAAE,EAAE;QACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,GAAG,KAAK;QACR,OAAO;QACP,KAAK;QACL,OAAO;QACP,sBAAsB;QACtB,SAAS,EAAE,KAAK,CAAC,OAAO;QACxB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;QACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;QACrB,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { AppError } from '../errors';
|
|
2
|
-
export interface ErrorState {
|
|
3
|
-
error: AppError | Error | null;
|
|
4
|
-
message: string;
|
|
5
|
-
isVisible: boolean;
|
|
6
|
-
}
|
|
7
|
-
export declare function useErrorHandler(): {
|
|
8
|
-
error: Error | AppError | null;
|
|
9
|
-
errorMessage: string;
|
|
10
|
-
isErrorVisible: boolean;
|
|
11
|
-
handleError: (error: Error | AppError, context?: string) => void;
|
|
12
|
-
clearError: () => void;
|
|
13
|
-
retryAction: (action: () => Promise<void> | void) => void;
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=useErrorHandler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useErrorHandler.d.ts","sourceRoot":"","sources":["../../src/hooks/useErrorHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAgC,MAAM,WAAW,CAAC;AAEnE,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,eAAe;;;;yBAOW,KAAK,GAAG,QAAQ,YAAY,MAAM;;0BA+BjC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;EAoBpE"}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { useCallback, useState } from 'react';
|
|
2
|
-
import { getErrorMessage, formatError } from '../errors';
|
|
3
|
-
export function useErrorHandler() {
|
|
4
|
-
const [errorState, setErrorState] = useState({
|
|
5
|
-
error: null,
|
|
6
|
-
message: '',
|
|
7
|
-
isVisible: false
|
|
8
|
-
});
|
|
9
|
-
const handleError = useCallback((error, context) => {
|
|
10
|
-
console.error(`Error in ${context || 'unknown context'}:`, error);
|
|
11
|
-
const userMessage = getErrorMessage(error);
|
|
12
|
-
setErrorState({
|
|
13
|
-
error,
|
|
14
|
-
message: userMessage,
|
|
15
|
-
isVisible: true
|
|
16
|
-
});
|
|
17
|
-
// Auto-hide error after 5 seconds
|
|
18
|
-
setTimeout(() => {
|
|
19
|
-
setErrorState(prev => ({ ...prev, isVisible: false }));
|
|
20
|
-
}, 5000);
|
|
21
|
-
// Send to monitoring service in production
|
|
22
|
-
if (process.env.NODE_ENV === 'production') {
|
|
23
|
-
// TODO: Integrate with monitoring service (Sentry, LogRocket, etc.)
|
|
24
|
-
console.warn('Production error logged:', formatError(error));
|
|
25
|
-
}
|
|
26
|
-
}, []);
|
|
27
|
-
const clearError = useCallback(() => {
|
|
28
|
-
setErrorState({
|
|
29
|
-
error: null,
|
|
30
|
-
message: '',
|
|
31
|
-
isVisible: false
|
|
32
|
-
});
|
|
33
|
-
}, []);
|
|
34
|
-
const retryAction = useCallback((action) => {
|
|
35
|
-
clearError();
|
|
36
|
-
try {
|
|
37
|
-
const result = action();
|
|
38
|
-
if (result instanceof Promise) {
|
|
39
|
-
result.catch(handleError);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
handleError(error);
|
|
44
|
-
}
|
|
45
|
-
}, [handleError, clearError]);
|
|
46
|
-
return {
|
|
47
|
-
error: errorState.error,
|
|
48
|
-
errorMessage: errorState.message,
|
|
49
|
-
isErrorVisible: errorState.isVisible,
|
|
50
|
-
handleError,
|
|
51
|
-
clearError,
|
|
52
|
-
retryAction
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
//# sourceMappingURL=useErrorHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useErrorHandler.js","sourceRoot":"","sources":["../../src/hooks/useErrorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAY,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAQnE,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAa;QACvD,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,KAAK;KACjB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,KAAuB,EAAE,OAAgB,EAAE,EAAE;QAC5E,OAAO,CAAC,KAAK,CAAC,YAAY,OAAO,IAAI,iBAAiB,GAAG,EAAE,KAAK,CAAC,CAAC;QAElE,MAAM,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAE3C,aAAa,CAAC;YACZ,KAAK;YACL,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QAEH,kCAAkC;QAClC,UAAU,CAAC,GAAG,EAAE;YACd,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,2CAA2C;QAC3C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,oEAAoE;YACpE,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,aAAa,CAAC;YACZ,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,MAAkC,EAAE,EAAE;QACrE,UAAU,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;YACxB,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,KAAc,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAE9B,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,YAAY,EAAE,UAAU,CAAC,OAAO;QAChC,cAAc,EAAE,UAAU,CAAC,SAAS;QACpC,WAAW;QACX,UAAU;QACV,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// Tests for shared utilities
|
|
2
|
-
import { validateEmail, formatPrice, generatePaymentId, getErrorMessage } from '../utils';
|
|
3
|
-
describe('Shared Utilities', () => {
|
|
4
|
-
describe('validateEmail', () => {
|
|
5
|
-
test('validates correct email addresses', () => {
|
|
6
|
-
expect(validateEmail('test@example.com')).toBe(true);
|
|
7
|
-
expect(validateEmail('user.name+tag@domain.co.uk')).toBe(true);
|
|
8
|
-
});
|
|
9
|
-
test('rejects invalid email addresses', () => {
|
|
10
|
-
expect(validateEmail('')).toBe(false);
|
|
11
|
-
expect(validateEmail('invalid')).toBe(false);
|
|
12
|
-
expect(validateEmail('test@')).toBe(false);
|
|
13
|
-
expect(validateEmail('@domain.com')).toBe(false);
|
|
14
|
-
expect(validateEmail('test..test@domain.com')).toBe(false);
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
describe('formatPrice', () => {
|
|
18
|
-
test('formats prices correctly', () => {
|
|
19
|
-
expect(formatPrice(100)).toBe('100 Kč');
|
|
20
|
-
expect(formatPrice(25.5)).toBe('25.5 Kč');
|
|
21
|
-
expect(formatPrice(0)).toBe('0 Kč');
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
describe('generatePaymentId', () => {
|
|
25
|
-
test('generates unique payment IDs', () => {
|
|
26
|
-
const id1 = generatePaymentId();
|
|
27
|
-
const id2 = generatePaymentId();
|
|
28
|
-
expect(id1).toMatch(/^pay-\d+$/);
|
|
29
|
-
expect(id2).toMatch(/^pay-\d+$/);
|
|
30
|
-
expect(id1).not.toBe(id2);
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
describe('getErrorMessage', () => {
|
|
34
|
-
test('returns user-friendly error messages', () => {
|
|
35
|
-
const fetchError = new Error('Failed to fetch');
|
|
36
|
-
expect(getErrorMessage(fetchError)).toBe('Problém s připojením. Zkuste to znovu.');
|
|
37
|
-
const authError = new Error('401 Unauthorized');
|
|
38
|
-
expect(getErrorMessage(authError)).toBe('Neplatné přihlašovací údaje.');
|
|
39
|
-
const genericError = new Error('Something went wrong');
|
|
40
|
-
expect(getErrorMessage(genericError)).toBe('Something went wrong');
|
|
41
|
-
const emptyError = new Error('');
|
|
42
|
-
expect(getErrorMessage(emptyError)).toBe('Něco se pokazilo. Zkuste to znovu.');
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
});
|
package/dist/utils.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export declare const validateEmail: (email: string) => boolean;
|
|
2
|
-
export declare const formatPrice: (price: number) => string;
|
|
3
|
-
export declare const PRICE_PRECISION = 2;
|
|
4
|
-
export declare const roundPrice: (price: number) => number;
|
|
5
|
-
export declare const parsePrice: (value: string | number) => number;
|
|
6
|
-
export declare const validatePrice: (price: number) => boolean;
|
|
7
|
-
export declare const priceToString: (price: number) => string;
|
|
8
|
-
export declare const stringToPrice: (priceStr: string) => number;
|
|
9
|
-
export declare const getKioskIdFromUrl: () => number;
|
|
10
|
-
export declare const getKioskSecretFromUrl: () => string | undefined;
|
|
11
|
-
export declare const formatDate: (date: Date | string) => string;
|
|
12
|
-
export declare const debounce: <T extends (...args: any[]) => any>(func: T, delay: number) => ((...args: Parameters<T>) => void);
|
|
13
|
-
export declare const generatePaymentId: () => string;
|
|
14
|
-
export declare const validateKioskId: (kioskId: number) => boolean;
|
|
15
|
-
export declare const createEmptyCart: () => {
|
|
16
|
-
items: never[];
|
|
17
|
-
totalAmount: number;
|
|
18
|
-
totalItems: number;
|
|
19
|
-
};
|
|
20
|
-
export declare const addToCart: (cart: any, product: any, quantity?: number) => any;
|
|
21
|
-
export declare const removeFromCart: (cart: any, productId: number) => any;
|
|
22
|
-
export declare const updateCartItemQuantity: (cart: any, productId: number, quantity: number) => any;
|
|
23
|
-
export declare const clearCart: (cart: any) => any;
|
|
24
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAK7C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAO3C,CAAC;AAGF,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MAE1C,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,GAAG,MAAM,KAAG,MAGnD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAE7C,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAE7C,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,KAAG,MAEhD,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,MAcpC,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,MAAM,GAAG,SAGjD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,GAAG,MAAM,KAAG,MAShD,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,MAAM,CAAC,EACP,OAAO,MAAM,KACZ,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAOnC,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,MAEpC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,MAAM,KAAG,OAEjD,CAAC;AAGF,eAAO,MAAM,eAAe;;;;CAI1B,CAAC;AAEH,eAAO,MAAM,SAAS,GAAI,MAAM,GAAG,EAAE,SAAS,GAAG,EAAE,WAAU,MAAU,QA6BtE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,GAAG,EAAE,WAAW,MAAM,QAe1D,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,MAAM,GAAG,EAAE,WAAW,MAAM,EAAE,UAAU,MAAM,QA6BpF,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,MAAM,GAAG,QAQlC,CAAC"}
|