| Server IP : 35.80.110.71 / Your IP : 216.73.216.221 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/elite-events-storybook/ |
Upload File : |
"use strict";(self.webpackChunkelite_events_nextjs=self.webpackChunkelite_events_nextjs||[]).push([[7943],{"./src/lib/pwa/index.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{hH:()=>getNotificationPermission,getPendingActions:()=>offline_storage.RY,BO:()=>hasPendingActions,un:()=>isIOS,jV:()=>isPushSupported,Qu:()=>isStandalone,mT:()=>requestNotificationPermission,sO:()=>subscribeToPush,g9:()=>syncPendingActions});var offline_storage=__webpack_require__("./src/lib/pwa/offline-storage.ts"),logging_clientLogger=__webpack_require__("./src/lib/logging/clientLogger.ts");const SYNC_CONFIG={maxRetries:5,retryDelay:1e3,syncTag:"elite-events-sync"};async function processAction(action){const{type,payload}=action;try{switch(type){case"ADD_TO_CART":return(await fetch("/api/cart",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload)})).ok;case"UPDATE_CART":{const cartPayload=payload;return(await fetch(`/api/cart/${cartPayload.id}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({quantity:cartPayload.quantity})})).ok}case"REMOVE_FROM_CART":{const removePayload=payload;return(await fetch(`/api/cart/${removePayload.id}`,{method:"DELETE"})).ok}case"ADD_TO_WISHLIST":return(await fetch("/api/wishlist",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload)})).ok;case"REMOVE_FROM_WISHLIST":{const wishlistPayload=payload;return(await fetch(`/api/wishlist/${wishlistPayload.id}`,{method:"DELETE"})).ok}case"SUBMIT_REVIEW":return(await fetch("/api/reviews",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload)})).ok;case"UPDATE_PROFILE":return(await fetch("/api/user/profile",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(payload)})).ok;default:return logging_clientLogger.q.warn("Unknown action type",{category:"SYSTEM",type}),!1}}catch(error){return logging_clientLogger.q.error(`Failed to process action ${type}`,error instanceof Error?error:void 0,{category:"SYSTEM",actionType:type}),!1}}async function syncPendingActions(){const actions=await(0,offline_storage.RY)();let synced=0,failed=0;for(const action of actions){await processAction(action)&&void 0!==action.id?(await(0,offline_storage.U2)(action.id),synced++):void 0!==action.id&&(await(0,offline_storage.h$)(action.id),failed++)}return await(0,offline_storage.Cb)(SYNC_CONFIG.maxRetries),{synced,failed}}async function hasPendingActions(){return await async function getPendingActionCount(){return(await(0,offline_storage.RY)()).length}()>0}var process=__webpack_require__("./node_modules/process/browser.js");const PUSH_CONFIG={publicKeyEnvVar:"NEXT_PUBLIC_VAPID_PUBLIC_KEY",subscribeEndpoint:"/api/push/subscribe",unsubscribeEndpoint:"/api/push/unsubscribe"};function isPushSupported(){return"Notification"in window&&"serviceWorker"in navigator&&"PushManager"in window}function getNotificationPermission(){return"Notification"in window?Notification.permission:null}async function requestNotificationPermission(){if(!("Notification"in window))return logging_clientLogger.q.warn("Notifications not supported",{category:"SYSTEM"}),"denied";if("granted"===Notification.permission)return"granted";if("denied"!==Notification.permission){return await Notification.requestPermission()}return Notification.permission}function urlBase64ToUint8Array(base64String){const base64=(base64String+"=".repeat((4-base64String.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/"),rawData=window.atob(base64),buffer=new ArrayBuffer(rawData.length),outputArray=new Uint8Array(buffer);for(let i=0;i<rawData.length;++i)outputArray[i]=rawData.charCodeAt(i);return outputArray}async function subscribeToPush(){if(!isPushSupported())return logging_clientLogger.q.warn("Push notifications not supported",{category:"SYSTEM"}),null;try{const registration=await navigator.serviceWorker.ready;let subscription=await registration.pushManager.getSubscription();if(!subscription){const vapidPublicKey=process.env.NEXT_PUBLIC_VAPID_PUBLIC_KEY;if(!vapidPublicKey)return logging_clientLogger.q.error("VAPID public key not configured",void 0,{category:"SYSTEM"}),null;subscription=await registration.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:urlBase64ToUint8Array(vapidPublicKey)});if(!(await fetch(PUSH_CONFIG.subscribeEndpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(subscription.toJSON())})).ok)return logging_clientLogger.q.error("Failed to save subscription to server",void 0,{category:"SYSTEM"}),await subscription.unsubscribe(),null}return subscription}catch(error){return logging_clientLogger.q.error("Failed to subscribe to push",error instanceof Error?error:void 0,{category:"SYSTEM"}),null}}function isStandalone(){return window.matchMedia("(display-mode: standalone)").matches||!0===window.navigator.standalone||document.referrer.includes("android-app://")}function isIOS(){return/iPad|iPhone|iPod/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1}},"./src/lib/pwa/offline-storage.ts":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{Cb:()=>clearFailedActions,RY:()=>getPendingActions,h$:()=>incrementRetryCount,queueAction:()=>queueAction,U2:()=>removePendingAction});const instanceOfAny=(object,constructors)=>constructors.some(c=>object instanceof c);let idbProxyableTypes,cursorAdvanceMethods;const transactionDoneMap=new WeakMap,transformCache=new WeakMap,reverseTransformCache=new WeakMap;let idbProxyTraps={get(target,prop,receiver){if(target instanceof IDBTransaction){if("done"===prop)return transactionDoneMap.get(target);if("store"===prop)return receiver.objectStoreNames[1]?void 0:receiver.objectStore(receiver.objectStoreNames[0])}return wrap(target[prop])},set:(target,prop,value)=>(target[prop]=value,!0),has:(target,prop)=>target instanceof IDBTransaction&&("done"===prop||"store"===prop)||prop in target};function replaceTraps(callback){idbProxyTraps=callback(idbProxyTraps)}function wrapFunction(func){return function getCursorAdvanceMethods(){return cursorAdvanceMethods||(cursorAdvanceMethods=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}().includes(func)?function(...args){return func.apply(unwrap(this),args),wrap(this.request)}:function(...args){return wrap(func.apply(unwrap(this),args))}}function transformCachableValue(value){return"function"==typeof value?wrapFunction(value):(value instanceof IDBTransaction&&function cacheDonePromiseForTransaction(tx){if(transactionDoneMap.has(tx))return;const done=new Promise((resolve,reject)=>{const unlisten=()=>{tx.removeEventListener("complete",complete),tx.removeEventListener("error",error),tx.removeEventListener("abort",error)},complete=()=>{resolve(),unlisten()},error=()=>{reject(tx.error||new DOMException("AbortError","AbortError")),unlisten()};tx.addEventListener("complete",complete),tx.addEventListener("error",error),tx.addEventListener("abort",error)});transactionDoneMap.set(tx,done)}(value),instanceOfAny(value,function getIdbProxyableTypes(){return idbProxyableTypes||(idbProxyableTypes=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}())?new Proxy(value,idbProxyTraps):value)}function wrap(value){if(value instanceof IDBRequest)return function promisifyRequest(request){const promise=new Promise((resolve,reject)=>{const unlisten=()=>{request.removeEventListener("success",success),request.removeEventListener("error",error)},success=()=>{resolve(wrap(request.result)),unlisten()},error=()=>{reject(request.error),unlisten()};request.addEventListener("success",success),request.addEventListener("error",error)});return reverseTransformCache.set(promise,request),promise}(value);if(transformCache.has(value))return transformCache.get(value);const newValue=transformCachableValue(value);return newValue!==value&&(transformCache.set(value,newValue),reverseTransformCache.set(newValue,value)),newValue}const unwrap=value=>reverseTransformCache.get(value);const readMethods=["get","getKey","getAll","getAllKeys","count"],writeMethods=["put","add","delete","clear"],cachedMethods=new Map;function getMethod(target,prop){if(!(target instanceof IDBDatabase)||prop in target||"string"!=typeof prop)return;if(cachedMethods.get(prop))return cachedMethods.get(prop);const targetFuncName=prop.replace(/FromIndex$/,""),useIndex=prop!==targetFuncName,isWrite=writeMethods.includes(targetFuncName);if(!(targetFuncName in(useIndex?IDBIndex:IDBObjectStore).prototype)||!isWrite&&!readMethods.includes(targetFuncName))return;const method=async function(storeName,...args){const tx=this.transaction(storeName,isWrite?"readwrite":"readonly");let target=tx.store;return useIndex&&(target=target.index(args.shift())),(await Promise.all([target[targetFuncName](...args),isWrite&&tx.done]))[0]};return cachedMethods.set(prop,method),method}replaceTraps(oldTraps=>({...oldTraps,get:(target,prop,receiver)=>getMethod(target,prop)||oldTraps.get(target,prop,receiver),has:(target,prop)=>!!getMethod(target,prop)||oldTraps.has(target,prop)}));const advanceMethodProps=["continue","continuePrimaryKey","advance"],methodMap={},advanceResults=new WeakMap,ittrProxiedCursorToOriginalProxy=new WeakMap,cursorIteratorTraps={get(target,prop){if(!advanceMethodProps.includes(prop))return target[prop];let cachedFunc=methodMap[prop];return cachedFunc||(cachedFunc=methodMap[prop]=function(...args){advanceResults.set(this,ittrProxiedCursorToOriginalProxy.get(this)[prop](...args))}),cachedFunc}};async function*iterate(...args){let cursor=this;if(cursor instanceof IDBCursor||(cursor=await cursor.openCursor(...args)),!cursor)return;const proxiedCursor=new Proxy(cursor,cursorIteratorTraps);for(ittrProxiedCursorToOriginalProxy.set(proxiedCursor,cursor),reverseTransformCache.set(proxiedCursor,unwrap(cursor));cursor;)yield proxiedCursor,cursor=await(advanceResults.get(proxiedCursor)||cursor.continue()),advanceResults.delete(proxiedCursor)}function isIteratorProp(target,prop){return prop===Symbol.asyncIterator&&instanceOfAny(target,[IDBIndex,IDBObjectStore,IDBCursor])||"iterate"===prop&&instanceOfAny(target,[IDBIndex,IDBObjectStore])}replaceTraps(oldTraps=>({...oldTraps,get:(target,prop,receiver)=>isIteratorProp(target,prop)?iterate:oldTraps.get(target,prop,receiver),has:(target,prop)=>isIteratorProp(target,prop)||oldTraps.has(target,prop)}));let db=null;const DB_NAME="elite-events",DB_VERSION=1;async function getDB(){return db||(db=await function openDB(name,version,{blocked,upgrade,blocking,terminated}={}){const request=indexedDB.open(name,version),openPromise=wrap(request);return upgrade&&request.addEventListener("upgradeneeded",event=>{upgrade(wrap(request.result),event.oldVersion,event.newVersion,wrap(request.transaction),event)}),blocked&&request.addEventListener("blocked",event=>blocked(event.oldVersion,event.newVersion,event)),openPromise.then(db=>{terminated&&db.addEventListener("close",()=>terminated()),blocking&&db.addEventListener("versionchange",event=>blocking(event.oldVersion,event.newVersion,event))}).catch(()=>{}),openPromise}(DB_NAME,DB_VERSION,{upgrade(database){if(database.objectStoreNames.contains("cart")||database.createObjectStore("cart",{keyPath:"productId"}),!database.objectStoreNames.contains("products")){database.createObjectStore("products",{keyPath:"id"}).createIndex("by-cached","cachedAt")}database.objectStoreNames.contains("pendingActions")||database.createObjectStore("pendingActions",{keyPath:"id",autoIncrement:!0}),database.objectStoreNames.contains("viewedProducts")||database.createObjectStore("viewedProducts",{keyPath:"productId"})}}),db)}async function queueAction(type,payload){const database=await getDB();await database.add("pendingActions",{type,payload,timestamp:Date.now(),retries:0})}async function getPendingActions(){return(await getDB()).getAll("pendingActions")}async function removePendingAction(id){const database=await getDB();await database.delete("pendingActions",id)}async function incrementRetryCount(id){const database=await getDB(),action=await database.get("pendingActions",id);action&&await database.put("pendingActions",{...action,retries:action.retries+1})}async function clearFailedActions(maxRetries=5){const database=await getDB(),actions=await database.getAll("pendingActions"),tx=database.transaction("pendingActions","readwrite");for(const action of actions)action.retries>=maxRetries&&void 0!==action.id&&await tx.store.delete(action.id);await tx.done}}}]);