pi-kiosk-shared 2.1.3 → 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.
Files changed (60) hide show
  1. package/README.md +27 -32
  2. package/dist/api.d.ts +2 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +17 -2
  5. package/dist/api.js.map +1 -1
  6. package/dist/index.d.ts +0 -10
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -11
  9. package/dist/index.js.map +1 -1
  10. package/dist/types.d.ts +11 -7
  11. package/dist/types.d.ts.map +1 -1
  12. package/package.json +5 -7
  13. package/dist/components/ErrorDisplay.d.ts +0 -13
  14. package/dist/components/ErrorDisplay.d.ts.map +0 -1
  15. package/dist/components/ErrorDisplay.js +0 -9
  16. package/dist/components/ErrorDisplay.js.map +0 -1
  17. package/dist/components/LoadingSpinner.d.ts +0 -9
  18. package/dist/components/LoadingSpinner.d.ts.map +0 -1
  19. package/dist/components/LoadingSpinner.js +0 -11
  20. package/dist/components/LoadingSpinner.js.map +0 -1
  21. package/dist/config/deployment.d.ts +0 -97
  22. package/dist/config/deployment.d.ts.map +0 -1
  23. package/dist/config/deployment.js +0 -154
  24. package/dist/config/deployment.js.map +0 -1
  25. package/dist/config/environments.d.ts +0 -37
  26. package/dist/config/environments.d.ts.map +0 -1
  27. package/dist/config/environments.js +0 -172
  28. package/dist/config/environments.js.map +0 -1
  29. package/dist/config/environments.test.d.ts +0 -1
  30. package/dist/config/environments.test.js +0 -49
  31. package/dist/config/logger.d.ts +0 -41
  32. package/dist/config/logger.d.ts.map +0 -1
  33. package/dist/config/logger.js +0 -119
  34. package/dist/config/logger.js.map +0 -1
  35. package/dist/constants.d.ts +0 -91
  36. package/dist/constants.d.ts.map +0 -1
  37. package/dist/constants.js +0 -113
  38. package/dist/constants.js.map +0 -1
  39. package/dist/hooks/useApi.d.ts +0 -21
  40. package/dist/hooks/useApi.d.ts.map +0 -1
  41. package/dist/hooks/useApi.js +0 -52
  42. package/dist/hooks/useApi.js.map +0 -1
  43. package/dist/hooks/useAsyncOperation.d.ts +0 -22
  44. package/dist/hooks/useAsyncOperation.d.ts.map +0 -1
  45. package/dist/hooks/useAsyncOperation.js +0 -59
  46. package/dist/hooks/useAsyncOperation.js.map +0 -1
  47. package/dist/hooks/useErrorHandler.d.ts +0 -15
  48. package/dist/hooks/useErrorHandler.d.ts.map +0 -1
  49. package/dist/hooks/useErrorHandler.js +0 -55
  50. package/dist/hooks/useErrorHandler.js.map +0 -1
  51. package/dist/utils/simple.test.d.ts +0 -1
  52. package/dist/utils/simple.test.js +0 -45
  53. package/dist/utils.d.ts +0 -24
  54. package/dist/utils.d.ts.map +0 -1
  55. package/dist/utils.js +0 -159
  56. package/dist/utils.js.map +0 -1
  57. package/dist/validation.d.ts +0 -46
  58. package/dist/validation.d.ts.map +0 -1
  59. package/dist/validation.js +0 -173
  60. package/dist/validation.js.map +0 -1
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,uCAAuC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,oBAAoB;IACpB,eAAe,EAAE,uBAAuB;IACxC,cAAc,EAAE,qBAAqB;IAErC,WAAW;IACX,WAAW,EAAE,KAAK,EAAE,aAAa;IACjC,cAAc,EAAE,CAAC;IACjB,WAAW,EAAE,IAAI,EAAE,WAAW;IAE9B,YAAY;IACZ,qBAAqB,EAAE,CAAC;IACxB,qBAAqB,EAAE,IAAI;IAC3B,qBAAqB,EAAE,KAAK;IAE5B,KAAK;IACL,gBAAgB,EAAE,GAAG;IACrB,sBAAsB,EAAE,IAAI;IAE5B,aAAa;IACb,mBAAmB,EAAE,CAAC;IACtB,mBAAmB,EAAE,CAAC;IACtB,uBAAuB,EAAE,GAAG;IAC5B,sBAAsB,EAAE,GAAG;IAE3B,iBAAiB;IACjB,gBAAgB,EAAE,CAAC;IACnB,wBAAwB,EAAE,IAAI;IAC9B,iBAAiB,EAAE,MAAM,EAAE,YAAY;IAEvC,wBAAwB;IACxB,sBAAsB,EAAE,YAAY;IACpC,gBAAgB,EAAE,KAAK;IACvB,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,SAAS,EAAE,4BAA4B;CAC/C,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,iBAAiB;IACjB,gBAAgB,EAAE,sBAAsB;IACxC,eAAe,EAAE,uBAAuB;IACxC,aAAa,EAAE,oBAAoB;IACnC,oBAAoB,EAAE,wBAAwB;IAE9C,mBAAmB;IACnB,eAAe,EAAE,iCAAiC;IAClD,aAAa,EAAE,6BAA6B;IAE5C,iBAAiB;IACjB,aAAa,EAAE,wCAAwC;IACvD,gBAAgB,EAAE,4BAA4B;IAC9C,aAAa,EAAE,oCAAoC;IACnD,aAAa,EAAE,6BAA6B;IAE5C,eAAe;IACf,WAAW,EAAE,mCAAmC;IAChD,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,yBAAyB;IAEtC,kBAAkB;IAClB,cAAc,EAAE,sBAAsB;IACtC,aAAa,EAAE,kCAAkC;IACjD,aAAa,EAAE,2BAA2B;IAC1C,WAAW,EAAE,YAAY;IAEzB,iBAAiB;IACjB,cAAc,EAAE,oBAAoB;IACpC,eAAe,EAAE,oBAAoB;IACrC,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,qBAAqB;IACxC,gBAAgB,EAAE,kBAAkB;IAEpC,iBAAiB;IACjB,KAAK,EAAE,cAAc;IACrB,MAAM,EAAE,QAAQ;CACR,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,SAAS;IACT,SAAS,EAAE,WAAW;IACtB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,WAAW;IAChB,MAAM,EAAE,QAAQ;IAEhB,SAAS;IACT,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAEhB,aAAa;IACb,cAAc,EAAE,aAAa;IAC7B,gBAAgB,EAAE,eAAe;IACjC,cAAc,EAAE,aAAa;IAC7B,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IAEZ,mBAAmB;IACnB,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAE9B,oBAAoB;IACpB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,eAAe;IACf,UAAU,EAAE,GAAG;IACf,aAAa,EAAE,UAAU;IACzB,kBAAkB,EAAE,eAAe;IAEnC,eAAe;IACf,WAAW,EAAE,cAAc;IAC3B,eAAe,EAAE,QAAQ;IACzB,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;CACrB,CAAC"}
@@ -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"}
@@ -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
@@ -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
@@ -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"}
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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"}