diff --git a/next.config.ts b/next.config.ts index a0a4988..1f12a26 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,18 +1,7 @@ import type { NextConfig } from "next"; import createNextIntlPlugin from "next-intl/plugin"; -import nextPWA from "next-pwa"; const withNextIntl = createNextIntlPlugin(); -const withPWA = nextPWA({ - dest: "public", - disable: process.env.NODE_ENV === "development", - register: true, - skipWaiting: true, - navigateFallback: "/offline.html", -}); - const nextConfig: NextConfig = {}; -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-ignore -- no type for intl -export default withPWA(withNextIntl(nextConfig)); +export default withNextIntl(nextConfig); diff --git a/public/manifest.json b/public/manifest.webmanifest similarity index 55% rename from public/manifest.json rename to public/manifest.webmanifest index 454944f..e45a85c 100644 --- a/public/manifest.json +++ b/public/manifest.webmanifest @@ -1,38 +1,40 @@ { - "id": "/", - "name": "سامانه 141", - "short_name": "141", - "description": "مرکز مدیریت راه های کشور", + "id": "salonro-app", + "name": "سالنرو", + "short_name": "سالنرو", + "description": "مدیریت رزرواسیون", "start_url": "/", + "scope": "/", "display": "standalone", "orientation": "portrait", "theme_color": "#283618", "background_color": "#ffffff", "icons": [ { - "src": "logo/144px.png", + "src": "/logo/144px.png", "sizes": "144x144", "type": "image/png" }, { - "src": "logo/152px.png", + "src": "/logo/152px.png", "sizes": "152x152", "type": "image/png" }, { - "src": "logo/192px.png", + "src": "/logo/192px.png", "sizes": "192x192", "type": "image/png" }, { - "src": "logo/384px.png", + "src": "/logo/384px.png", "sizes": "384x384", "type": "image/png" }, { - "src": "logo/512px.png", + "src": "/logo/512px.png", "sizes": "512x512", - "type": "image/png" + "type": "image/png", + "purpose": "any maskable" } ] } diff --git a/public/offline.html b/public/offline.html index 0ac3cbd..6793255 100644 --- a/public/offline.html +++ b/public/offline.html @@ -1,10 +1,12 @@ - +
-Please check your connection.
+ +لطفاً اتصال خود را بررسی کنید.
diff --git a/public/sw.js b/public/sw.js index bd19168..c2b7515 100644 --- a/public/sw.js +++ b/public/sw.js @@ -1,821 +1,24 @@ -if (!self.define) { - let e, - a = {}; - const i = (i, s) => ( - (i = new URL(i + ".js", s).href), - a[i] || - new Promise((a) => { - if ("document" in self) { - const e = document.createElement("script"); - (e.src = i), (e.onload = a), document.head.appendChild(e); - } else (e = i), importScripts(i), a(); - }).then(() => { - let e = a[i]; - if (!e) throw new Error(`Module ${i} didn’t register its module`); - return e; - }) +const CACHE_NAME = "salonro-cache-v2"; + +const STATIC_ASSETS = ["/", "/manifest.webmanifest", "/logo/192px.png", "/logo/512px.png"]; + +self.addEventListener("install", (event) => { + event.waitUntil( + caches.open(CACHE_NAME).then(async (cache) => { + await Promise.allSettled( + STATIC_ASSETS.map(async (url) => { + try { + const response = await fetch(url); + if (response.ok) { + await cache.put(url, response); + } + } catch (e) { + console.warn("❌ Failed to cache:", url); + } + }) + ); + }) ); - self.define = (s, c) => { - const n = e || ("document" in self ? document.currentScript.src : "") || location.href; - if (a[n]) return; - let r = {}; - const o = (e) => i(e, n), - f = { module: { uri: n }, exports: r, require: o }; - a[n] = Promise.all(s.map((e) => f[e] || o(e))).then((e) => (c(...e), r)); - }; -} -define(["./workbox-24ed2e00"], function (e) { - "use strict"; - importScripts(), - self.skipWaiting(), - e.clientsClaim(), - e.precacheAndRoute( - [ - { url: "/_next/app-build-manifest.json", revision: "477b9e5cfccecd1a9977e3e78999d275" }, - { url: "/_next/static/chunks/09fd3d28.3456e1bb54b3a270.js", revision: "3456e1bb54b3a270" }, - { url: "/_next/static/chunks/1047.5207a126379b8060.js", revision: "5207a126379b8060" }, - { url: "/_next/static/chunks/1078.1f46bda73c7623c9.js", revision: "1f46bda73c7623c9" }, - { url: "/_next/static/chunks/1096.adbf51d046d506be.js", revision: "adbf51d046d506be" }, - { url: "/_next/static/chunks/1236.cb61bc317696dc3b.js", revision: "cb61bc317696dc3b" }, - { url: "/_next/static/chunks/1332-90f857f551d0109a.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/1469.2a2e870b028a1e25.js", revision: "2a2e870b028a1e25" }, - { url: "/_next/static/chunks/1653.f01066a435f142fe.js", revision: "f01066a435f142fe" }, - { url: "/_next/static/chunks/1802-066902707f92716e.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/1839.0fe5beadce886280.js", revision: "0fe5beadce886280" }, - { url: "/_next/static/chunks/2077.f4a70605fcc1b140.js", revision: "f4a70605fcc1b140" }, - { url: "/_next/static/chunks/2091-fb53668a264fa381.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/2207.baa46f87c867bade.js", revision: "baa46f87c867bade" }, - { url: "/_next/static/chunks/2349.7f2b2dc8f7fa3fee.js", revision: "7f2b2dc8f7fa3fee" }, - { url: "/_next/static/chunks/2355.eca546d151399f7a.js", revision: "eca546d151399f7a" }, - { url: "/_next/static/chunks/2838.aa5078d6a4640a8e.js", revision: "aa5078d6a4640a8e" }, - { url: "/_next/static/chunks/3101.14c39354b8c18680.js", revision: "14c39354b8c18680" }, - { url: "/_next/static/chunks/3160.51845156614d0baa.js", revision: "51845156614d0baa" }, - { url: "/_next/static/chunks/331.7f5658ca3d8cec74.js", revision: "7f5658ca3d8cec74" }, - { url: "/_next/static/chunks/3383.3a974ba7ae0f190a.js", revision: "3a974ba7ae0f190a" }, - { url: "/_next/static/chunks/3409-227895a558692e84.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/3441-d7e5c5549e4b4342.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/3568-1d77c1fdd9979ef4.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/3583-3dca890eb679e8a0.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/3607.9579bf82aa5b04e5.js", revision: "9579bf82aa5b04e5" }, - { url: "/_next/static/chunks/3650.453a9f89049b631d.js", revision: "453a9f89049b631d" }, - { url: "/_next/static/chunks/3743.e010fffab8b8741b.js", revision: "e010fffab8b8741b" }, - { url: "/_next/static/chunks/3850.f6229535485b1873.js", revision: "f6229535485b1873" }, - { url: "/_next/static/chunks/3876.dca0e32e5343f879.js", revision: "dca0e32e5343f879" }, - { url: "/_next/static/chunks/3959.293aeeefe51a1bb8.js", revision: "293aeeefe51a1bb8" }, - { url: "/_next/static/chunks/4039-a68628e75cd1f894.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/4072-4a69b64a1b07c868.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/4213.80138b64396aba11.js", revision: "80138b64396aba11" }, - { url: "/_next/static/chunks/4350-30e77a9cfc3dcede.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/4364.f39124fcb73b0107.js", revision: "f39124fcb73b0107" }, - { url: "/_next/static/chunks/4382.6daa124be9895c6e.js", revision: "6daa124be9895c6e" }, - { url: "/_next/static/chunks/4647.8ce3c9806b2a163a.js", revision: "8ce3c9806b2a163a" }, - { url: "/_next/static/chunks/476912e5.eb845884ba53254a.js", revision: "eb845884ba53254a" }, - { url: "/_next/static/chunks/4794.b1af455fef4cb7c9.js", revision: "b1af455fef4cb7c9" }, - { url: "/_next/static/chunks/4844.7fc2ec4159bca963.js", revision: "7fc2ec4159bca963" }, - { url: "/_next/static/chunks/5556.52e1268e560f395e.js", revision: "52e1268e560f395e" }, - { url: "/_next/static/chunks/5625-bc191213e60fbb26.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/5716.693e42ef801352c4.js", revision: "693e42ef801352c4" }, - { url: "/_next/static/chunks/5812.2ade40e00d1c4202.js", revision: "2ade40e00d1c4202" }, - { url: "/_next/static/chunks/5820.95b1469f70c23d13.js", revision: "95b1469f70c23d13" }, - { url: "/_next/static/chunks/5989.82fbd20cf776af7d.js", revision: "82fbd20cf776af7d" }, - { url: "/_next/static/chunks/6064.7f539a39944811bd.js", revision: "7f539a39944811bd" }, - { url: "/_next/static/chunks/6071-5c7095c326ff64a2.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/6171.ddd90a937bdb7fde.js", revision: "ddd90a937bdb7fde" }, - { url: "/_next/static/chunks/6248.3375aba0de1f1592.js", revision: "3375aba0de1f1592" }, - { url: "/_next/static/chunks/6296.dbbe81ff8f36603c.js", revision: "dbbe81ff8f36603c" }, - { url: "/_next/static/chunks/6298-ccb0b17934d26d4e.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/6405.e3a0f0b80c2ee4b6.js", revision: "e3a0f0b80c2ee4b6" }, - { url: "/_next/static/chunks/6500.7c2b20ea5a7dc963.js", revision: "7c2b20ea5a7dc963" }, - { url: "/_next/static/chunks/675.337f5b5c4b288e14.js", revision: "337f5b5c4b288e14" }, - { url: "/_next/static/chunks/6778.4802eb109bf5773b.js", revision: "4802eb109bf5773b" }, - { url: "/_next/static/chunks/6779.dc8182013c1b2891.js", revision: "dc8182013c1b2891" }, - { url: "/_next/static/chunks/6913.f0b4fc14e359987f.js", revision: "f0b4fc14e359987f" }, - { url: "/_next/static/chunks/702b54c3-b5420dbb0ee8c9a9.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/705-64730b1688631290.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/7192.0cf8393f23d61ae0.js", revision: "0cf8393f23d61ae0" }, - { url: "/_next/static/chunks/7207.d14b83e5a9b2d614.js", revision: "d14b83e5a9b2d614" }, - { url: "/_next/static/chunks/757.f8a69d9e94f2f188.js", revision: "f8a69d9e94f2f188" }, - { url: "/_next/static/chunks/7617.468657a1bfd0d700.js", revision: "468657a1bfd0d700" }, - { url: "/_next/static/chunks/7865.99d75de630c63940.js", revision: "99d75de630c63940" }, - { url: "/_next/static/chunks/8043.21b8e43b81804085.js", revision: "21b8e43b81804085" }, - { url: "/_next/static/chunks/8081.9c9e58fe9ec1ab33.js", revision: "9c9e58fe9ec1ab33" }, - { url: "/_next/static/chunks/8201.4c5d67ea6639f24a.js", revision: "4c5d67ea6639f24a" }, - { url: "/_next/static/chunks/8267.eee125a196488367.js", revision: "eee125a196488367" }, - { url: "/_next/static/chunks/84.30f650fb01801fe9.js", revision: "30f650fb01801fe9" }, - { url: "/_next/static/chunks/8477.089c2566cbeb4b53.js", revision: "089c2566cbeb4b53" }, - { url: "/_next/static/chunks/8498.c0b0bb1278c26c21.js", revision: "c0b0bb1278c26c21" }, - { url: "/_next/static/chunks/8607.48db89d60245a41e.js", revision: "48db89d60245a41e" }, - { url: "/_next/static/chunks/8762.c0aaf8e0c5f17ed1.js", revision: "c0aaf8e0c5f17ed1" }, - { url: "/_next/static/chunks/8786-c72cc5b15b6c2c48.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/8861-096cc7bd37679d2d.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/8873.a96ccf2b55a03c42.js", revision: "a96ccf2b55a03c42" }, - { url: "/_next/static/chunks/8895.e7b6483ca676dd42.js", revision: "e7b6483ca676dd42" }, - { url: "/_next/static/chunks/9285-64b2825f8a694e48.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/9384.dd2b68b1490b91c1.js", revision: "dd2b68b1490b91c1" }, - { url: "/_next/static/chunks/951.7cdb9b249045e6c7.js", revision: "7cdb9b249045e6c7" }, - { url: "/_next/static/chunks/9540.8bb43630703d4f41.js", revision: "8bb43630703d4f41" }, - { url: "/_next/static/chunks/9602.464abe33f8d0a9fb.js", revision: "464abe33f8d0a9fb" }, - { url: "/_next/static/chunks/9710.b1608715d2234c6d.js", revision: "b1608715d2234c6d" }, - { url: "/_next/static/chunks/985.847fb08d9cbaa059.js", revision: "847fb08d9cbaa059" }, - { url: "/_next/static/chunks/9908.0cc354107a980399.js", revision: "0cc354107a980399" }, - { - url: "/_next/static/chunks/app/(main)/(home)/layout-a78370a911639001.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(home)/page-be3e41a581938758.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/(complaints)/complaints/complaints-panel/page-f290763a18fbfb56.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/(complaints)/complaints/layout-411c855de7ff6922.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/(complaints)/complaints/page-5b082fe984b6a44c.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/(complaints)/layout-4f397a99410d9e1e.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/about-us/layout-aea79fa2aed4f730.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/about-us/page-544d0149d1b29bfb.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/application/layout-305e5e428e601731.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/application/page-bd06d29b0ed43e6d.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/layout-24b7e6746f8f1d92.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/latest-roads-state/layout-256d6c8d0a06127d.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/latest-roads-state/page-e9c45af720867c06.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/limitations/layout-06ca2092a132b80d.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/limitations/page-e0ed8e5a738cc9d8.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/obstruction-list/layout-ebf2e6c2a2ce5007.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/obstruction-list/page-7efd8fa4da642da1.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/police-traffic-restrictions/layout-de2ff4a905059f40.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/police-traffic-restrictions/page-1ea2747e8d02d83c.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/road-weather/layout-4d69ace999acf05b.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/road-weather/page-50c745b351f6c20e.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/road-works/layout-5e9de1f1fb3b293f.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/news/road-works/page-ee99ec76e366b31c.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/panel/favorites/page-80f7b648165a1374.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/panel/layout-c33f23cfb6412ac0.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/panel/profile/page-c51d6e3e396c6815.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/road-cameras/layout-8d5ae166eddf1ebb.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/(with-header)/road-cameras/page-328e977f78264ea4.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/app-complaints/layout-881c521242c15ef2.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/app-complaints/page-9ba2166c40b56b5e.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/(main)/layout-3997862d56997c1f.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { - url: "/_next/static/chunks/app/_not-found/page-a54367e75f67917a.js", - revision: "edDXeXW35O8-zP7JZFf_v", - }, - { url: "/_next/static/chunks/app/auth/layout-6137609f77d5b7ae.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/app/auth/page-9a55ae91ee906e5f.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/app/layout-34be191be03e3b7c.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/efbf5421.71081031ef141e15.js", revision: "71081031ef141e15" }, - { url: "/_next/static/chunks/f0589f39.5b64a3f82869b95a.js", revision: "5b64a3f82869b95a" }, - { url: "/_next/static/chunks/framework-c63bbcb21eacaf32.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/main-84dde0f789e760cd.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/main-app-5c8e03902df08c9f.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/pages/_app-a2e7d845f9171b9e.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/chunks/pages/_error-0a33a605e04b1d2c.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { - url: "/_next/static/chunks/polyfills-42372ed130431b0a.js", - revision: "846118c33b2c0e922d7b3a7676f81f6f", - }, - { url: "/_next/static/chunks/webpack-d1f085c715a88e1e.js", revision: "edDXeXW35O8-zP7JZFf_v" }, - { url: "/_next/static/css/9682c83a0e1692a1.css", revision: "9682c83a0e1692a1" }, - { url: "/_next/static/css/d38261e715b3739d.css", revision: "d38261e715b3739d" }, - { url: "/_next/static/css/dcf552e9809a52ba.css", revision: "dcf552e9809a52ba" }, - { url: "/_next/static/css/e9da4554e155c1be.css", revision: "e9da4554e155c1be" }, - { url: "/_next/static/css/f50ae58b45097a9e.css", revision: "f50ae58b45097a9e" }, - { url: "/_next/static/css/fab1bac4c150a020.css", revision: "fab1bac4c150a020" }, - { url: "/_next/static/css/fd84fa7e1158ad2d.css", revision: "fd84fa7e1158ad2d" }, - { - url: "/_next/static/edDXeXW35O8-zP7JZFf_v/_buildManifest.js", - revision: "00194b8dae0479d1b57e90db67f3ebba", - }, - { - url: "/_next/static/edDXeXW35O8-zP7JZFf_v/_ssgManifest.js", - revision: "b6652df95db52feb4daf4eca35380933", - }, - { url: "/_next/static/media/144px.66738aa3.png", revision: "3bcf1d5579d0af575cc1eda5ecfbb885" }, - { url: "/_next/static/media/RaviFaNum-Black.3d44dfd3.woff2", revision: "3d44dfd3" }, - { url: "/_next/static/media/RaviFaNum-Black.b77fefa7.woff", revision: "b77fefa7" }, - { url: "/_next/static/media/RaviFaNum-Bold.4f118a99.woff2", revision: "4f118a99" }, - { url: "/_next/static/media/RaviFaNum-Bold.e3b6dbcd.woff", revision: "e3b6dbcd" }, - { url: "/_next/static/media/RaviFaNum-ExtraBlack.a49d8f96.woff2", revision: "a49d8f96" }, - { url: "/_next/static/media/RaviFaNum-ExtraBlack.ee187408.woff", revision: "ee187408" }, - { url: "/_next/static/media/RaviFaNum-Light.1c4b3280.woff2", revision: "1c4b3280" }, - { url: "/_next/static/media/RaviFaNum-Light.db0b957b.woff", revision: "db0b957b" }, - { url: "/_next/static/media/RaviFaNum-Medium.5fee124a.woff2", revision: "5fee124a" }, - { url: "/_next/static/media/RaviFaNum-Medium.aef80e5d.woff", revision: "aef80e5d" }, - { url: "/_next/static/media/RaviFaNum-Regular.0685ed3d.woff", revision: "0685ed3d" }, - { url: "/_next/static/media/RaviFaNum-Regular.a8efb35f.woff2", revision: "a8efb35f" }, - { url: "/_next/static/media/RaviFaNum-SemiBold.297ae300.woff2", revision: "297ae300" }, - { url: "/_next/static/media/RaviFaNum-SemiBold.71c29afa.woff", revision: "71c29afa" }, - { url: "/_next/static/media/RaviFaNum-Thin.373aeb1b.woff", revision: "373aeb1b" }, - { url: "/_next/static/media/RaviFaNum-Thin.d9f92af5.woff2", revision: "d9f92af5" }, - { url: "/_next/static/media/auth-bg-light.4776e5e7.png", revision: "f45da66bb13cac891cea5febf76c0f8e" }, - { url: "/_next/static/media/auth-bg.b1fc52fa.webp", revision: "00d75da2d9e52aceaf39dfec0f2d7c81" }, - { url: "/_next/static/media/auth-form-bg.962cdbed.png", revision: "7db836dbd4b891818150a64f82eeb1e2" }, - { url: "/_next/static/media/base-layer.823deed6.png", revision: "7f46d655e3ec0b60cf513492592f6b99" }, - { url: "/_next/static/media/bright-layer.2ee0cf7c.png", revision: "c2f60f53f660b1e98ef1f856b2ec73fd" }, - { url: "/_next/static/media/dark-layer.86aea455.png", revision: "8acfad0d04e60a832b1b4c8181528eb4" }, - { - url: "/_next/static/media/gradient-suitcase.7bcf9e32.png", - revision: "a03310e940b3c8808d04cd6b3c614828", - }, - { - url: "/_next/static/media/gradient-truck.0aac150f.png", - revision: "27d4f586b0a7e4019cd1ff3ed1b8d31e", - }, - { - url: "/_next/static/media/gradient-warning.821aa92b.png", - revision: "81c30665797c701cdc8bc11c17608e3f", - }, - { - url: "/_next/static/media/mock-camera-preview-img.2f091456.png", - revision: "ec537f305d83707ff0bbfe49d1a8c320", - }, - { url: "/_next/static/media/neshan-logo.9e340e92.png", revision: "030c32f072089f9340a1f35447ddba7e" }, - { - url: "/_next/static/media/not-found-image.835b3806.png", - revision: "53e248b101253df08715c4bbc5f30022", - }, - { - url: "/_next/static/media/routing-location-preview.2bed60ec.png", - revision: "bd50d6d4ef50aaee30666d222ef1dd47", - }, - { url: "/fonts.css", revision: "610b801412b116073e45ef749c0cb9de" }, - { url: "/fonts/ravi/woff/RaviFaNum-Black.woff", revision: "a68b68f76c47bc8fa8cbb9939a551e4f" }, - { url: "/fonts/ravi/woff/RaviFaNum-Bold.woff", revision: "21a7685e78b01ca29e74a077b496ba77" }, - { url: "/fonts/ravi/woff/RaviFaNum-ExtraBlack.woff", revision: "2b18bcce0fab1928a970e4c14e18171a" }, - { url: "/fonts/ravi/woff/RaviFaNum-Light.woff", revision: "1b89b8881f914f6a64ab88ddf9062d93" }, - { url: "/fonts/ravi/woff/RaviFaNum-Medium.woff", revision: "17c542f3f09d2bdd1d78731a6423e565" }, - { url: "/fonts/ravi/woff/RaviFaNum-Regular.woff", revision: "273e22bd0de532ba2125a698283c1018" }, - { url: "/fonts/ravi/woff/RaviFaNum-SemiBold.woff", revision: "dbe9226f2750c458d98978040b598e3d" }, - { url: "/fonts/ravi/woff/RaviFaNum-Thin.woff", revision: "b1dbca91208166254cb056dc2c0c6deb" }, - { url: "/fonts/ravi/woff2/RaviFaNum-Black.woff2", revision: "1bd26161a92c0ce17d7efe2e2b92b711" }, - { url: "/fonts/ravi/woff2/RaviFaNum-Bold.woff2", revision: "0b8f9c1e8c43cb6b75976e6ed03b962a" }, - { url: "/fonts/ravi/woff2/RaviFaNum-ExtraBlack.woff2", revision: "b240e942626cd3cc9aad40e6b2d82b83" }, - { url: "/fonts/ravi/woff2/RaviFaNum-Light.woff2", revision: "fb63448719499a4890a597bd04d364e9" }, - { url: "/fonts/ravi/woff2/RaviFaNum-Medium.woff2", revision: "3836aef44caba770a8ab89562388edae" }, - { url: "/fonts/ravi/woff2/RaviFaNum-Regular.woff2", revision: "f3a02ae211202db6cf7e3f8e361178d1" }, - { url: "/fonts/ravi/woff2/RaviFaNum-SemiBold.woff2", revision: "b977c1a597f4ae718255fb5bf6b1664c" }, - { url: "/fonts/ravi/woff2/RaviFaNum-Thin.woff2", revision: "4816a8911769fb658a51610490972f37" }, - { url: "/icons/141-logo.svg", revision: "9f019d133602624a7bd092bbdf38f9b6" }, - { url: "/icons/add-icon.svg", revision: "58a4f32f5a4dd5cbf71a88ae57c44258" }, - { url: "/icons/alert.svg", revision: "384384920637c63565496653ecdae64a" }, - { url: "/icons/announcement.svg", revision: "788a30a198ad58e10b61551e61030563" }, - { url: "/icons/aparat.svg", revision: "1e797a397302c0b1d5aa164577fdca03" }, - { url: "/icons/application.svg", revision: "b657ac894fafdeb6f001932cffc29f34" }, - { url: "/icons/arrow-down.svg", revision: "2d358facbd91097e31c0d90d0d8bfc9e" }, - { url: "/icons/arrow-left.svg", revision: "f23ea23577408f232b1e3f5227cea25b" }, - { url: "/icons/arrow-right-left.svg", revision: "32bd0c13986aaa2a3d580ca6d48e66e3" }, - { url: "/icons/arrow-right.svg", revision: "e9059d0691489a29c6c8b9b6f5a74b62" }, - { url: "/icons/arrow-top.svg", revision: "1133540c40b30bbbb1cee25ea0390790" }, - { url: "/icons/avatar-icon.svg", revision: "6ff72d5b15d5888c01db8903807085a0" }, - { url: "/icons/back-icon.svg", revision: "d1a5156f9e0be1b928cd13d0954d7da0" }, - { url: "/icons/back-reverse-icon.svg", revision: "46df2e7d7e715e36169073670138a5b4" }, - { url: "/icons/bazzar.svg", revision: "cffa7ed4ca75524161f51605095de4d7" }, - { url: "/icons/burger-icon.svg", revision: "4a3ecb9a58ca1a585a6e8b183312045d" }, - { url: "/icons/check-icon.svg", revision: "c6cfe0d451a100ed87c54507cea3a5d6" }, - { url: "/icons/check.svg", revision: "801bf1c02ab10e641cb2521669927df5" }, - { url: "/icons/chevron-icon.svg", revision: "7a8e869d7d7fd8ec614ed9f9bf0c05a5" }, - { url: "/icons/close-hex-icon.svg", revision: "a4f0f5b2bfb53dfc0da92c2a99c2ee70" }, - { url: "/icons/close-icon.svg", revision: "ad1e681e5aa16aca145c7c3c364450a3" }, - { url: "/icons/code.svg", revision: "880705d1d0c423af68170e3f6416053e" }, - { url: "/icons/compass.svg", revision: "632e87c0e920e7eedf0073a48366fcfd" }, - { url: "/icons/complaints.svg", revision: "63bd0aee9b69afd81acf44ba0101e449" }, - { url: "/icons/complaints/dakheli.svg", revision: "08d8bbcf22d5b28800ac5e40b3bb5546" }, - { url: "/icons/complaints/driver.svg", revision: "09df5d323a599316d26d687353474cb8" }, - { url: "/icons/complaints/mosafer.svg", revision: "8c12479e18f17c5000b5e6318df52352" }, - { url: "/icons/complaints/payane_haye_marzi.svg", revision: "800c8caea2b9b72921040b0483b4cce3" }, - { url: "/icons/complaints/product_owner.svg", revision: "f015dd33091e7ba00d5348880280f267" }, - { url: "/icons/complaints/taavoni.svg", revision: "d3871cf06bc63ac81f068e18a77baca7" }, - { url: "/icons/complaints/transit.svg", revision: "30449520ad604b5f2f8c59212c4c6cd8" }, - { url: "/icons/complaints/transport.svg", revision: "d44129fcd1a7cc6fb46b3edda8cb9060" }, - { url: "/icons/copy.svg", revision: "1d3380cc9abe9778934138dc14ab07b9" }, - { url: "/icons/corridors.svg", revision: "8a96f1f1ad533e9a4797c3587413f5c0" }, - { url: "/icons/cursor-circle.svg", revision: "73a6e596f571ec898a41a544f0021030" }, - { url: "/icons/dark-mode-icon.svg", revision: "a27cd81416c40ae7d0e5377af6691209" }, - { url: "/icons/details.svg", revision: "6b8d857cc556218670b1dc414368bf97" }, - { url: "/icons/dots.svg", revision: "c96600c30e3420426183eca3852dcef8" }, - { url: "/icons/download.svg", revision: "d9d35e9dce12e47999a01e7cd9776991" }, - { url: "/icons/drive-mode.svg", revision: "8a8426222e8ab57e5017142891ca148b" }, - { url: "/icons/edit-icon.svg", revision: "2106e27585760b7f96e8abbfda1a7ce6" }, - { url: "/icons/eye-closed-icon.svg", revision: "ab939fcc62bb9e192651eed424138ae0" }, - { url: "/icons/eye-open-icon.svg", revision: "3c157c0791c0d2afbee2633936bea1bd" }, - { url: "/icons/fav-corridors.svg", revision: "919ba19ef54dd46bcde5bd21b7880932" }, - { url: "/icons/favorite-locaton/flag-mark.svg", revision: "89502336c0f25f3c3da92a0b82538915" }, - { url: "/icons/favorite-locaton/heart-mark.svg", revision: "50d89df5d8c3bfbe9c24737d8291f99c" }, - { url: "/icons/favorite-locaton/home-mark.svg", revision: "3b3c8ee376ea6d891f33f0779610df54" }, - { url: "/icons/favorite-locaton/home.svg", revision: "d95063e22de32d43b97f7f256fe09784" }, - { url: "/icons/favorite-locaton/others.svg", revision: "d7d28c4ebbdb8974463e8fc833071195" }, - { url: "/icons/favorite-locaton/star-mark.svg", revision: "32c0394546e6bcf0e8a217c2c52035c9" }, - { url: "/icons/favorite-locaton/travel.svg", revision: "75cb87057af86d3c202a11fd485de6ae" }, - { url: "/icons/favorite-locaton/work-mark.svg", revision: "46187fa2a3001b4eaf1d660671f38e9c" }, - { url: "/icons/favorite-locaton/work.svg", revision: "3ac45165337fa3b459a797117bc3971a" }, - { url: "/icons/favorite.svg", revision: "a09728378a13d428026b08e8b5ea6f06" }, - { url: "/icons/filter-icon.svg", revision: "5ff69822476db97c69e2cc5fe4723ac6" }, - { url: "/icons/fork-lift.svg", revision: "ca81a0937886349ec2aa280153dc32f8" }, - { url: "/icons/google-maps.svg", revision: "ffd379f1a749760c7861d66b84011a69" }, - { url: "/icons/google-play.svg", revision: "9e86fed964087a760afecafb39d78b4d" }, - { url: "/icons/history-icon.svg", revision: "731b455170a42058d2b5f0a18472639d" }, - { url: "/icons/instagram.svg", revision: "4fc0ed18b2b14b3a1a11a62bcca79f93" }, - { url: "/icons/iran-map-location-icon.svg", revision: "7c69e64b33f36b416e05b68373759839" }, - { url: "/icons/layers-icon.svg", revision: "f1df3674d501fcfa5d80f34cab0b6401" }, - { url: "/icons/light-mode-icon.svg", revision: "60f216ed655f621a4aafc342eeb48ab4" }, - { url: "/icons/linkedin.svg", revision: "f743df0c42d7060999a0791b560dffaf" }, - { url: "/icons/list.svg", revision: "35fdf5e1efa4552a4bf623b3b5863b15" }, - { url: "/icons/login.svg", revision: "5cb93e171336b4b5cb4c36780accfc49" }, - { url: "/icons/logout.svg", revision: "2b0d623f7f7645fb7698060d7811cbb9" }, - { url: "/icons/maneuvers/alt-road.svg", revision: "988c4969a7d2aca312670c9531fc799a" }, - { url: "/icons/maneuvers/bus.svg", revision: "d86f65dd607cebfef952d4b36e968dd3" }, - { url: "/icons/maneuvers/continue-straight.svg", revision: "ad352cf98568411942f9fa4d4298d96f" }, - { url: "/icons/maneuvers/destination-bus.svg", revision: "e0fb09e71a77921bb3b0d38909b23dbd" }, - { url: "/icons/maneuvers/destination-ferry.svg", revision: "fbb2813494e519a22d601cae76eeac36" }, - { url: "/icons/maneuvers/destination-left.svg", revision: "b977c8c08ecf45621f89cd10b8e9ccb8" }, - { url: "/icons/maneuvers/destination-right.svg", revision: "ac7786f54997a10e57fdb66225a8715d" }, - { url: "/icons/maneuvers/destination-train.svg", revision: "186efee01ebc27097652281577f5e203" }, - { url: "/icons/maneuvers/destination-walk.svg", revision: "887463d4a7a8e93e3e9856576962adfd" }, - { url: "/icons/maneuvers/destination.svg", revision: "b7f94fec17634eee4bd91c93596ee3f7" }, - { url: "/icons/maneuvers/exit-left.svg", revision: "3cd1eb2133853ea6c53ab932acc85050" }, - { url: "/icons/maneuvers/exit-right.svg", revision: "63a4869ef4295f37f822ac1e4b38af70" }, - { url: "/icons/maneuvers/ferry.svg", revision: "efa7f2d136de33860ca889ed391acfe4" }, - { url: "/icons/maneuvers/fork-left.svg", revision: "b8c5d741048a737a9e5438993a559c86" }, - { url: "/icons/maneuvers/fork-right.svg", revision: "f35ba5b21f7f653037869e2b24634607" }, - { url: "/icons/maneuvers/merge-left.svg", revision: "91861f07b0a291ad2d73d00a0cd0d105" }, - { url: "/icons/maneuvers/merge-right.svg", revision: "72a4514b7d3a9467d3f73ed7624fe4f1" }, - { url: "/icons/maneuvers/none.svg", revision: "7ee0ce4437cc978515d8dbb071fddf89" }, - { url: "/icons/maneuvers/off-ramp-left.svg", revision: "83731d9bfefacdd4e1f1aea174a43a60" }, - { url: "/icons/maneuvers/off-ramp-right.svg", revision: "24aa960398f6752b53ad8a3ee954539a" }, - { url: "/icons/maneuvers/on-ramp-left.svg", revision: "c12d001316af6a4edaad87620934ca01" }, - { url: "/icons/maneuvers/on-ramp-right.svg", revision: "cb361b0284aa9eb05d6846a294a1c5a5" }, - { url: "/icons/maneuvers/roundabout_enter.svg", revision: "8980edb4e0c07eb3b91aaa638cabbc74" }, - { url: "/icons/maneuvers/roundabout_exit.svg", revision: "3062476e964be99951da0ae39d5dd0ad" }, - { url: "/icons/maneuvers/sharp-left.svg", revision: "8cfa728568f781c2d543d1ae2cd59386" }, - { url: "/icons/maneuvers/sharp-right.svg", revision: "21d727c6095e74be47d30a8071258b53" }, - { url: "/icons/maneuvers/slight-left.svg", revision: "7f4c9c58dbc4266f36d760792e02c4af" }, - { url: "/icons/maneuvers/slight-right.svg", revision: "182ea6685fe9c0b5400ab3061a6ad1ef" }, - { url: "/icons/maneuvers/start-left.svg", revision: "2f4934fba0303d3d912ae0712bd1e823" }, - { url: "/icons/maneuvers/start-right.svg", revision: "53e97b964d4eaa266f98d451f1da5634" }, - { url: "/icons/maneuvers/start.svg", revision: "0763a90360e095a9a6d375590b6f7105" }, - { url: "/icons/maneuvers/train.svg", revision: "9dd42195c6538f2ac4240182433520ce" }, - { url: "/icons/maneuvers/turn-left-route.svg", revision: "8eb30a0b3ce7afd405f35b4dc441ec95" }, - { url: "/icons/maneuvers/turn-left.svg", revision: "70150f0632c451f0db77b35cdbb3d63f" }, - { url: "/icons/maneuvers/turn-right.svg", revision: "9cf828267c08774091d7087275b29fdd" }, - { url: "/icons/maneuvers/u-turn-left.svg", revision: "7a1f6c77bda29e195cae6205e473a1d4" }, - { url: "/icons/maneuvers/u-turn-right.svg", revision: "edd4086ffcf4e3ba246371956e1c16b5" }, - { url: "/icons/maneuvers/walk.svg", revision: "5bcbc65550dd679782efb5c73552d072" }, - { url: "/icons/map.svg", revision: "73b927ed00af1b2a32740957361e33c6" }, - { url: "/icons/minus-icon.svg", revision: "f4d7580d206aa344f434e93e9d7faa7c" }, - { url: "/icons/myket.svg", revision: "3a498eb4d6457cd2359ac32a8a48bdf6" }, - { url: "/icons/nav-icon.svg", revision: "f508de5fc68e01a005795e6b58ff5775" }, - { url: "/icons/neshan-logo.png", revision: "030c32f072089f9340a1f35447ddba7e" }, - { url: "/icons/news-icon.svg", revision: "8352c107e678057bed72b563e37fe6d8" }, - { url: "/icons/news-speaker.svg", revision: "f597c0fe7562e139f79d3ce884d81fe5" }, - { url: "/icons/news.svg", revision: "4f0024e83a415d7d5b2906c386711315" }, - { url: "/icons/panel/complaints.svg", revision: "ec4ca4cf1d0e661a5c48392ac29e67bf" }, - { url: "/icons/panel/downloads.svg", revision: "b59a48737ee21710a1d9e53ace0ade10" }, - { url: "/icons/panel/info.svg", revision: "5525a4bb50088836bc5bc0c196ae904e" }, - { url: "/icons/panel/likes.svg", revision: "7aa61676b5e21c06c004d54088e16d42" }, - { url: "/icons/panel/logout.svg", revision: "c0cb82cc28db5f601e708ffe28ac34e6" }, - { url: "/icons/pause-icon.svg", revision: "36981abcd9aa176723d077656b6a8f84" }, - { url: "/icons/phone.svg", revision: "b3d977209d2c5b289a1a80f73b6be4a0" }, - { url: "/icons/play-icon.svg", revision: "adc446870028241a1bb10e06bc27dd1f" }, - { url: "/icons/refresh-icon.svg", revision: "4606b03c270dc5fb4a335aa4c2bbcaec" }, - { url: "/icons/repeat.svg", revision: "20b51cce86df9890afd8ebf9ea621ce8" }, - { url: "/icons/reset-north.svg", revision: "10735480406cd5da186ff1f5c3a217a9" }, - { url: "/icons/rms-logo.svg", revision: "a21559b3676b0ce6871a863f1f9e606f" }, - { url: "/icons/road-cameras.svg", revision: "c781fb367851f91cf3574db370403c59" }, - { url: "/icons/road-cameras/navbar-image.svg", revision: "243abce8d7e9a8a2874ab72fe90cc0ed" }, - { url: "/icons/road-cameras/road-cameras-white.svg", revision: "b6db4df9707976236a9982c51afd097d" }, - { url: "/icons/rocket.svg", revision: "4531bfa792ef0861abc06e6c21002525" }, - { url: "/icons/route-marker/destination-icon.svg", revision: "058f4280e45768f818c6a7b9fcc602bc" }, - { url: "/icons/route-marker/marker-icon.svg", revision: "3b298e49725756bff9e04f1c7665710f" }, - { url: "/icons/route-marker/marker-preview-icon.svg", revision: "5c78d16dab440791f943e44ba1d4f757" }, - { url: "/icons/route-marker/origin-icon.svg", revision: "057323a68dda31d291372781ee1a602c" }, - { - url: "/icons/route-marker/originDestination-marker.svg", - revision: "572ca842704bac369c1e7be0504ed588", - }, - { url: "/icons/route-marker/route-car-preview.svg", revision: "091e1077bbd6ce56bbe8e2717c9f755a" }, - { - url: "/icons/route-marker/routes-split-arrows-icon.svg", - revision: "d9bf7552969f108107a55a0c736831d9", - }, - { url: "/icons/route-marker/swap-locations-icon.svg", revision: "6bc1aef1f43ec3c650cd6d797e0163a2" }, - { url: "/icons/route.svg", revision: "2ffee03802439348fb2735bdd896d688" }, - { url: "/icons/routes.svg", revision: "7e1ee8b6c597fff9c72bf9a5df9c954b" }, - { url: "/icons/save-icon.svg", revision: "f8d1a987aa080d41f16b73173dee4c46" }, - { url: "/icons/saved-icon.svg", revision: "04084a3469f91d364227ede780546058" }, - { url: "/icons/search-icon.svg", revision: "fc5a0aa6d3d6d2e941c7639e6095d92a" }, - { url: "/icons/share-icon.svg", revision: "d985439edb72a1a72b9f2373ed4a7d5f" }, - { url: "/icons/side-menu-display-icon.svg", revision: "da1070dd5d40b19608e4dee45062a4e6" }, - { url: "/icons/skip-audio.svg", revision: "1aee395771476c16dd94aa3f80406976" }, - { url: "/icons/speed-test.svg", revision: "a900e30790c1cecffbf4ac16217e8443" }, - { url: "/icons/start-routing-icon.svg", revision: "42b3af664047914c50c8ca304cc1f999" }, - { url: "/icons/support.svg", revision: "a5ab29d443c2ffbe895f5dca1dc0c24e" }, - { url: "/icons/target-location/more-icon.svg", revision: "cab084662e569360483303f732c16815" }, - { - url: "/icons/target-location/target-location-icon.svg", - revision: "8c7ff1275d8ed1918964a6b999d1a9e1", - }, - { url: "/icons/target-location/target-pin-marker.svg", revision: "321985bec9fd5fce2aa6b21316237619" }, - { url: "/icons/target-location/target-pin.svg", revision: "5c570462625e2baf53944fc9b7410858" }, - { url: "/icons/trash-icon.svg", revision: "b3459e74c8f05538358266475a745834" }, - { url: "/icons/weather/0.svg", revision: "b27e318265d63cdfae05f5b8b1de5514" }, - { url: "/icons/weather/1.svg", revision: "b27e318265d63cdfae05f5b8b1de5514" }, - { url: "/icons/weather/10.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, - { url: "/icons/weather/11.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, - { url: "/icons/weather/12.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, - { url: "/icons/weather/13.svg", revision: "063892303ecc4b67ca2e465d8404807b" }, - { url: "/icons/weather/14.svg", revision: "e064824c7a00bf24578428afd82d0fe4" }, - { url: "/icons/weather/15.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/16.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/17.svg", revision: "31f67f1b8c07b2e19212bbfe5ba608b3" }, - { url: "/icons/weather/18.svg", revision: "a917cde2f2be55bca40015ef8800a3ee" }, - { url: "/icons/weather/19.svg", revision: "dbed19cd5c63a8d020f50d73e7389611" }, - { url: "/icons/weather/2.svg", revision: "ff7a0d3060a90ff5ca72ec566495c80f" }, - { url: "/icons/weather/20.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/21.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/22.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/23.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, - { url: "/icons/weather/24.svg", revision: "4f072f8fca28178cd37f4940e0c97634" }, - { url: "/icons/weather/25.svg", revision: "d0e16e6f4ca6ff914fe33484520721f1" }, - { url: "/icons/weather/26.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, - { url: "/icons/weather/27.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, - { url: "/icons/weather/28.svg", revision: "0e0f72c54c29aa2907d05b8424b59c55" }, - { url: "/icons/weather/29.svg", revision: "063892303ecc4b67ca2e465d8404807b" }, - { url: "/icons/weather/3.svg", revision: "aec78635aefae9f99ae1086243bc8c7a" }, - { url: "/icons/weather/30.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, - { url: "/icons/weather/31.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, - { url: "/icons/weather/32.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, - { url: "/icons/weather/33.svg", revision: "063892303ecc4b67ca2e465d8404807b" }, - { url: "/icons/weather/34.svg", revision: "063892303ecc4b67ca2e465d8404807b" }, - { url: "/icons/weather/35.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, - { url: "/icons/weather/36.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/37.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/38.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/39.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/4.svg", revision: "59868567d022e9367817f7745083c3da" }, - { url: "/icons/weather/40.svg", revision: "656b34afba42aa13cb1a0c1adf77c292" }, - { url: "/icons/weather/41.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, - { url: "/icons/weather/42.svg", revision: "e3858b50ac4ea67f9ff0927f2e565acf" }, - { url: "/icons/weather/43.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, - { url: "/icons/weather/44.svg", revision: "e3858b50ac4ea67f9ff0927f2e565acf" }, - { url: "/icons/weather/45.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, - { url: "/icons/weather/46.svg", revision: "e3858b50ac4ea67f9ff0927f2e565acf" }, - { url: "/icons/weather/47.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, - { url: "/icons/weather/48.svg", revision: "e3858b50ac4ea67f9ff0927f2e565acf" }, - { url: "/icons/weather/49.svg", revision: "a9529240bb05d8f39977c1a13a5e895d" }, - { url: "/icons/weather/5.svg", revision: "656b34afba42aa13cb1a0c1adf77c292" }, - { url: "/icons/weather/50.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/51.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/52.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/53.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/54.svg", revision: "f46d001eb38e45894b87f1477ad88574" }, - { url: "/icons/weather/55.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/56.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/57.svg", revision: "f46d001eb38e45894b87f1477ad88574" }, - { url: "/icons/weather/58.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/59.svg", revision: "f46d001eb38e45894b87f1477ad88574" }, - { url: "/icons/weather/6.svg", revision: "d93f4da6356ea87b85309f97983a5ce2" }, - { url: "/icons/weather/60.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/61.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/62.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/63.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/64.svg", revision: "d0e16e6f4ca6ff914fe33484520721f1" }, - { url: "/icons/weather/65.svg", revision: "d0e16e6f4ca6ff914fe33484520721f1" }, - { url: "/icons/weather/66.svg", revision: "d0e16e6f4ca6ff914fe33484520721f1" }, - { url: "/icons/weather/67.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, - { url: "/icons/weather/68.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, - { url: "/icons/weather/69.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, - { url: "/icons/weather/7.svg", revision: "a917cde2f2be55bca40015ef8800a3ee" }, - { url: "/icons/weather/70.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/71.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/72.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/73.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/74.svg", revision: "9f7f4883c5af876d89e5a107915e50fd" }, - { url: "/icons/weather/75.svg", revision: "9f7f4883c5af876d89e5a107915e50fd" }, - { url: "/icons/weather/76.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/77.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/78.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/79.svg", revision: "4f072f8fca28178cd37f4940e0c97634" }, - { url: "/icons/weather/8.svg", revision: "d93f4da6356ea87b85309f97983a5ce2" }, - { url: "/icons/weather/80.svg", revision: "0540c2948226c18934d3a7199acc108e" }, - { url: "/icons/weather/81.svg", revision: "0540c2948226c18934d3a7199acc108e" }, - { url: "/icons/weather/82.svg", revision: "def915bf95e1a2e8a391ce389e78ff8b" }, - { url: "/icons/weather/83.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, - { url: "/icons/weather/84.svg", revision: "00de4bed58ba728b54a7af0ddfa62125" }, - { url: "/icons/weather/85.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/86.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/87.svg", revision: "60f3b3494c16828d38726d02ebac9ab6" }, - { url: "/icons/weather/88.svg", revision: "9f7f4883c5af876d89e5a107915e50fd" }, - { url: "/icons/weather/89.svg", revision: "a33408d45050528b1239afc69f35b135" }, - { url: "/icons/weather/9.svg", revision: "ce0eb225adf2916004a7d8178c3259ce" }, - { url: "/icons/weather/90.svg", revision: "a33408d45050528b1239afc69f35b135" }, - { url: "/icons/weather/91.svg", revision: "1fd188f9cb3728f1ac9ca138ac3acb7d" }, - { url: "/icons/weather/92.svg", revision: "f46d001eb38e45894b87f1477ad88574" }, - { url: "/icons/weather/93.svg", revision: "71658fe5afff17ccc16be82324bf83be" }, - { url: "/icons/weather/94.svg", revision: "9f7f4883c5af876d89e5a107915e50fd" }, - { url: "/icons/weather/95.svg", revision: "f75344eb3522df874278bde7ef582b41" }, - { url: "/icons/weather/96.svg", revision: "4f072f8fca28178cd37f4940e0c97634" }, - { url: "/icons/weather/97.svg", revision: "5356a63464dd019547232266f17d9d0d" }, - { url: "/icons/weather/98.svg", revision: "02e450fe59d0fba8e5d9b711af5bdf0e" }, - { url: "/icons/weather/99.svg", revision: "ae08d00ce67ec757ebf42b4614f7f31d" }, - { url: "/icons/weather/unknown.svg", revision: "d728638282add95aa2e551e59fef4914" }, - { url: "/icons/web-application.svg", revision: "f010b1e081ac3614331a357ecef97df8" }, - { url: "/icons/web-services/accidents.svg", revision: "36cbe94373f06a53bb6e92ef32b9ed41" }, - { url: "/icons/web-services/cameras.svg", revision: "255ebbb49d9eaf06a310eb3a52459b35" }, - { - url: "/icons/web-services/car-technical-assistance.svg", - revision: "3a188050a64bab29ae59b789fee03908", - }, - { url: "/icons/web-services/freeway-tolls.svg", revision: "6738403521cb3c722840e891b672ad05" }, - { url: "/icons/web-services/fuel-station.svg", revision: "5147c976fdffaca17315037962b1aadc" }, - { url: "/icons/web-services/iran-khodro.svg", revision: "77c9c43291d45a59fb939d0464bd1d7d" }, - { url: "/icons/web-services/islamic-distance.svg", revision: "46a7376777a10d77f742f68a13576caa" }, - { url: "/icons/web-services/medical-centers.svg", revision: "f19dd4ba5598ac52564dbb587ed7fdab" }, - { url: "/icons/web-services/mosques.svg", revision: "d1f948574af8de9e78efee6673ffa2a9" }, - { url: "/icons/web-services/obstruction.svg", revision: "5ed7313e7d64d145f35d8c3a132868a2" }, - { url: "/icons/web-services/repair-shop.svg", revision: "73ab394accf93119d1d7079062af0edb" }, - { url: "/icons/web-services/road-workshop.svg", revision: "f44d052c43a4aefdbef40de629e89ebc" }, - { url: "/icons/web-services/saipa.svg", revision: "bbb93c984dd918d32aff5a84bcf33395" }, - { url: "/icons/web-services/toll-house.svg", revision: "e86cd683f8075cdcdd46878c6bc88068" }, - { url: "/icons/web-services/traffic-counter.svg", revision: "1bbab75b333fd5723a0b777bf4ce7eb8" }, - { url: "/icons/web-services/weather-condition.svg", revision: "474f62b8fe4820153affa42d71ba19bf" }, - { url: "/icons/web-services/weather-forecast.svg", revision: "690650193c482dddf34be44c3d3dcb34" }, - { - url: "/icons/web-services/welfare-service-complex.svg", - revision: "5810aba1ae1f5b3bc12328b28cadf884", - }, - { url: "/icons/web-services/wind.svg", revision: "790d7352ef56b646a06801128952f8b7" }, - { url: "/images/akharinvaziat.jpg", revision: "b36e281c23f3308a2f4db58ab32f5f7d" }, - { url: "/images/auth-bg-light.png", revision: "f45da66bb13cac891cea5febf76c0f8e" }, - { url: "/images/auth-bg.webp", revision: "00d75da2d9e52aceaf39dfec0f2d7c81" }, - { url: "/images/auth-form-bg.png", revision: "7db836dbd4b891818150a64f82eeb1e2" }, - { url: "/images/camera-front-1.jpg", revision: "0863b7d13604b9c8505247d56d5a75cd" }, - { url: "/images/camera-front-2.jpg", revision: "de603f9ae96e94ea8497a0e8ec103ba6" }, - { url: "/images/camera.png", revision: "44983ad17515b1b74e6694105b6d9ab0" }, - { url: "/images/complaints.jpg", revision: "5e1f74f488c2b617c23dd02355e73415" }, - { url: "/images/complaints/bari-road.svg", revision: "80c0c2c001dc56cd721b0c85f6e0ebc9" }, - { url: "/images/complaints/gradient-suitcase.png", revision: "a03310e940b3c8808d04cd6b3c614828" }, - { url: "/images/complaints/gradient-truck.png", revision: "27d4f586b0a7e4019cd1ff3ed1b8d31e" }, - { url: "/images/complaints/gradient-warning.png", revision: "81c30665797c701cdc8bc11c17608e3f" }, - { url: "/images/complaints/iran-map.svg", revision: "f3627c633ed567deb04d526e832aeeaa" }, - { url: "/images/complaints/moshkelate-rah.svg", revision: "acef3f6878c5423108bda5a51d33200c" }, - { url: "/images/corridor-front-1.jpg", revision: "f8f5df92bbaaf1864f671f7efc591fb0" }, - { url: "/images/corridor-front-2.jpg", revision: "1c0b41193d4bf7f812bfca7a882413fd" }, - { url: "/images/ensedad.jpg", revision: "040dc43a29db2dc5a405acd5c37ce953" }, - { url: "/images/hamlOnaghl.png", revision: "492a512d2f88ca6857a8257b061ad1b9" }, - { url: "/images/havashenasi.jpg", revision: "775663acd2a79baa54da2d6d46d16d69" }, - { url: "/images/kargah.jpg", revision: "9f8f0114df6cf44352a3a179c6aa3b3c" }, - { url: "/images/layerPreviews/base-layer.png", revision: "7f46d655e3ec0b60cf513492592f6b99" }, - { url: "/images/layerPreviews/bright-layer.png", revision: "c2f60f53f660b1e98ef1f856b2ec73fd" }, - { url: "/images/layerPreviews/dark-layer.png", revision: "8acfad0d04e60a832b1b4c8181528eb4" }, - { url: "/images/mahdodiat.jpg", revision: "90ff96fc73fd728449df0c9c0086605a" }, - { url: "/images/mahdodiatpolice.jpg", revision: "a09370d7fc869e995d4f49165aec2791" }, - { url: "/images/mockImages/mock-camera-preview-img.png", revision: "ec537f305d83707ff0bbfe49d1a8c320" }, - { url: "/images/news.jpg", revision: "52af0a8b9fce258b4dbab54e5cde7063" }, - { url: "/images/not-found-image.png", revision: "53e248b101253df08715c4bbc5f30022" }, - { url: "/images/routeCamera.jpg", revision: "86d70730015051e33de3921e9a1696b1" }, - { url: "/images/routing-location-preview.png", revision: "bd50d6d4ef50aaee30666d222ef1dd47" }, - { url: "/images/witel.png", revision: "7a8d428a73ff90cbc53f2f3c2f59929e" }, - { url: "/images/zoom-bg.svg", revision: "5affa927869ffbcdb9c27ac1c820d70b" }, - { url: "/logo/144px.png", revision: "3bcf1d5579d0af575cc1eda5ecfbb885" }, - { url: "/logo/152px.png", revision: "528235a9aed87d6444d66370ba3d46f5" }, - { url: "/logo/192px.png", revision: "0c4a75b022ba55e1bb5ca8455290ac83" }, - { url: "/logo/384px.png", revision: "9d33499c40a17a309f033ee8fd725af6" }, - { url: "/logo/512px.png", revision: "26e82c66b146d1aecab909f3804db780" }, - { url: "/manifest.json", revision: "263717f7faf1aee8eccdc3df0e421570" }, - { url: "/mapbox-gl-rtl-text.js", revision: "e3d225c844639a90ecf80d6fc97fdb54" }, - { url: "/offline.html", revision: "b9086e4460f494636bec42eefbc7ab31" }, - ], - { ignoreURLParametersMatching: [] } - ), - e.cleanupOutdatedCaches(), - e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/offline.html"))), - e.registerRoute( - "/", - new e.NetworkFirst({ - cacheName: "start-url", - plugins: [ - { - cacheWillUpdate: async ({ request: e, response: a, event: i, state: s }) => - a && "opaqueredirect" === a.type - ? new Response(a.body, { status: 200, statusText: "OK", headers: a.headers }) - : a, - }, - ], - }), - "GET" - ), - e.registerRoute( - /^https:\/\/fonts\.(?:gstatic)\.com\/.*/i, - new e.CacheFirst({ - cacheName: "google-fonts-webfonts", - plugins: [new e.ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 31536e3 })], - }), - "GET" - ), - e.registerRoute( - /^https:\/\/fonts\.(?:googleapis)\.com\/.*/i, - new e.StaleWhileRevalidate({ - cacheName: "google-fonts-stylesheets", - plugins: [new e.ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })], - }), - "GET" - ), - e.registerRoute( - /\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i, - new e.StaleWhileRevalidate({ - cacheName: "static-font-assets", - plugins: [new e.ExpirationPlugin({ maxEntries: 4, maxAgeSeconds: 604800 })], - }), - "GET" - ), - e.registerRoute( - /\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i, - new e.StaleWhileRevalidate({ - cacheName: "static-image-assets", - plugins: [new e.ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })], - }), - "GET" - ), - e.registerRoute( - /\/_next\/image\?url=.+$/i, - new e.StaleWhileRevalidate({ - cacheName: "next-image", - plugins: [new e.ExpirationPlugin({ maxEntries: 64, maxAgeSeconds: 86400 })], - }), - "GET" - ), - e.registerRoute( - /\.(?:mp3|wav|ogg)$/i, - new e.CacheFirst({ - cacheName: "static-audio-assets", - plugins: [ - new e.RangeRequestsPlugin(), - new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 }), - ], - }), - "GET" - ), - e.registerRoute( - /\.(?:mp4)$/i, - new e.CacheFirst({ - cacheName: "static-video-assets", - plugins: [ - new e.RangeRequestsPlugin(), - new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 }), - ], - }), - "GET" - ), - e.registerRoute( - /\.(?:js)$/i, - new e.StaleWhileRevalidate({ - cacheName: "static-js-assets", - plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], - }), - "GET" - ), - e.registerRoute( - /\.(?:css|less)$/i, - new e.StaleWhileRevalidate({ - cacheName: "static-style-assets", - plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], - }), - "GET" - ), - e.registerRoute( - /\/_next\/data\/.+\/.+\.json$/i, - new e.StaleWhileRevalidate({ - cacheName: "next-data", - plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], - }), - "GET" - ), - e.registerRoute( - /\.(?:json|xml|csv)$/i, - new e.NetworkFirst({ - cacheName: "static-data-assets", - plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], - }), - "GET" - ), - e.registerRoute( - ({ url: e }) => { - if (!(self.origin === e.origin)) return !1; - const a = e.pathname; - return !a.startsWith("/api/auth/") && !!a.startsWith("/api/"); - }, - new e.NetworkFirst({ - cacheName: "apis", - networkTimeoutSeconds: 10, - plugins: [new e.ExpirationPlugin({ maxEntries: 16, maxAgeSeconds: 86400 })], - }), - "GET" - ), - e.registerRoute( - ({ url: e }) => { - if (!(self.origin === e.origin)) return !1; - return !e.pathname.startsWith("/api/"); - }, - new e.NetworkFirst({ - cacheName: "others", - networkTimeoutSeconds: 10, - plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 86400 })], - }), - "GET" - ), - e.registerRoute( - ({ url: e }) => !(self.origin === e.origin), - new e.NetworkFirst({ - cacheName: "cross-origin", - networkTimeoutSeconds: 10, - plugins: [new e.ExpirationPlugin({ maxEntries: 32, maxAgeSeconds: 3600 })], - }), - "GET" - ); + + self.skipWaiting(); }); diff --git a/public/workbox-24ed2e00.js b/public/workbox-24ed2e00.js deleted file mode 100644 index 34432df..0000000 --- a/public/workbox-24ed2e00.js +++ /dev/null @@ -1,1115 +0,0 @@ -define(["exports"], function (t) { - "use strict"; - try { - self["workbox:core:6.5.4"] && _(); - } catch (t) {} - const e = (t, ...e) => { - let s = t; - return e.length > 0 && (s += ` :: ${JSON.stringify(e)}`), s; - }; - class s extends Error { - constructor(t, s) { - super(e(t, s)), (this.name = t), (this.details = s); - } - } - try { - self["workbox:routing:6.5.4"] && _(); - } catch (t) {} - const n = (t) => (t && "object" == typeof t ? t : { handle: t }); - class r { - constructor(t, e, s = "GET") { - (this.handler = n(e)), (this.match = t), (this.method = s); - } - setCatchHandler(t) { - this.catchHandler = n(t); - } - } - class i extends r { - constructor(t, e, s) { - super( - ({ url: e }) => { - const s = t.exec(e.href); - if (s && (e.origin === location.origin || 0 === s.index)) return s.slice(1); - }, - e, - s - ); - } - } - class a { - constructor() { - (this.t = new Map()), (this.i = new Map()); - } - get routes() { - return this.t; - } - addFetchListener() { - self.addEventListener("fetch", (t) => { - const { request: e } = t, - s = this.handleRequest({ request: e, event: t }); - s && t.respondWith(s); - }); - } - addCacheListener() { - self.addEventListener("message", (t) => { - if (t.data && "CACHE_URLS" === t.data.type) { - const { payload: e } = t.data, - s = Promise.all( - e.urlsToCache.map((e) => { - "string" == typeof e && (e = [e]); - const s = new Request(...e); - return this.handleRequest({ request: s, event: t }); - }) - ); - t.waitUntil(s), t.ports && t.ports[0] && s.then(() => t.ports[0].postMessage(!0)); - } - }); - } - handleRequest({ request: t, event: e }) { - const s = new URL(t.url, location.href); - if (!s.protocol.startsWith("http")) return; - const n = s.origin === location.origin, - { params: r, route: i } = this.findMatchingRoute({ event: e, request: t, sameOrigin: n, url: s }); - let a = i && i.handler; - const o = t.method; - if ((!a && this.i.has(o) && (a = this.i.get(o)), !a)) return; - let c; - try { - c = a.handle({ url: s, request: t, event: e, params: r }); - } catch (t) { - c = Promise.reject(t); - } - const h = i && i.catchHandler; - return ( - c instanceof Promise && - (this.o || h) && - (c = c.catch(async (n) => { - if (h) - try { - return await h.handle({ url: s, request: t, event: e, params: r }); - } catch (t) { - t instanceof Error && (n = t); - } - if (this.o) return this.o.handle({ url: s, request: t, event: e }); - throw n; - })), - c - ); - } - findMatchingRoute({ url: t, sameOrigin: e, request: s, event: n }) { - const r = this.t.get(s.method) || []; - for (const i of r) { - let r; - const a = i.match({ url: t, sameOrigin: e, request: s, event: n }); - if (a) - return ( - (r = a), - ((Array.isArray(r) && 0 === r.length) || - (a.constructor === Object && 0 === Object.keys(a).length) || - "boolean" == typeof a) && - (r = void 0), - { route: i, params: r } - ); - } - return {}; - } - setDefaultHandler(t, e = "GET") { - this.i.set(e, n(t)); - } - setCatchHandler(t) { - this.o = n(t); - } - registerRoute(t) { - this.t.has(t.method) || this.t.set(t.method, []), this.t.get(t.method).push(t); - } - unregisterRoute(t) { - if (!this.t.has(t.method)) throw new s("unregister-route-but-not-found-with-method", { method: t.method }); - const e = this.t.get(t.method).indexOf(t); - if (!(e > -1)) throw new s("unregister-route-route-not-registered"); - this.t.get(t.method).splice(e, 1); - } - } - let o; - const c = () => (o || ((o = new a()), o.addFetchListener(), o.addCacheListener()), o); - function h(t, e, n) { - let a; - if ("string" == typeof t) { - const s = new URL(t, location.href); - a = new r(({ url: t }) => t.href === s.href, e, n); - } else if (t instanceof RegExp) a = new i(t, e, n); - else if ("function" == typeof t) a = new r(t, e, n); - else { - if (!(t instanceof r)) - throw new s("unsupported-route-type", { - moduleName: "workbox-routing", - funcName: "registerRoute", - paramName: "capture", - }); - a = t; - } - return c().registerRoute(a), a; - } - try { - self["workbox:strategies:6.5.4"] && _(); - } catch (t) {} - const u = { cacheWillUpdate: async ({ response: t }) => (200 === t.status || 0 === t.status ? t : null) }, - l = { - googleAnalytics: "googleAnalytics", - precache: "precache-v2", - prefix: "workbox", - runtime: "runtime", - suffix: "undefined" != typeof registration ? registration.scope : "", - }, - f = (t) => [l.prefix, t, l.suffix].filter((t) => t && t.length > 0).join("-"), - w = (t) => t || f(l.precache), - d = (t) => t || f(l.runtime); - function p(t, e) { - const s = new URL(t); - for (const t of e) s.searchParams.delete(t); - return s.href; - } - class y { - constructor() { - this.promise = new Promise((t, e) => { - (this.resolve = t), (this.reject = e); - }); - } - } - const g = new Set(); - function m(t) { - return "string" == typeof t ? new Request(t) : t; - } - class v { - constructor(t, e) { - (this.h = {}), - Object.assign(this, e), - (this.event = e.event), - (this.u = t), - (this.l = new y()), - (this.p = []), - (this.m = [...t.plugins]), - (this.v = new Map()); - for (const t of this.m) this.v.set(t, {}); - this.event.waitUntil(this.l.promise); - } - async fetch(t) { - const { event: e } = this; - let n = m(t); - if ("navigate" === n.mode && e instanceof FetchEvent && e.preloadResponse) { - const t = await e.preloadResponse; - if (t) return t; - } - const r = this.hasCallback("fetchDidFail") ? n.clone() : null; - try { - for (const t of this.iterateCallbacks("requestWillFetch")) - n = await t({ request: n.clone(), event: e }); - } catch (t) { - if (t instanceof Error) - throw new s("plugin-error-request-will-fetch", { thrownErrorMessage: t.message }); - } - const i = n.clone(); - try { - let t; - t = await fetch(n, "navigate" === n.mode ? void 0 : this.u.fetchOptions); - for (const s of this.iterateCallbacks("fetchDidSucceed")) - t = await s({ event: e, request: i, response: t }); - return t; - } catch (t) { - throw ( - (r && - (await this.runCallbacks("fetchDidFail", { - error: t, - event: e, - originalRequest: r.clone(), - request: i.clone(), - })), - t) - ); - } - } - async fetchAndCachePut(t) { - const e = await this.fetch(t), - s = e.clone(); - return this.waitUntil(this.cachePut(t, s)), e; - } - async cacheMatch(t) { - const e = m(t); - let s; - const { cacheName: n, matchOptions: r } = this.u, - i = await this.getCacheKey(e, "read"), - a = Object.assign(Object.assign({}, r), { cacheName: n }); - s = await caches.match(i, a); - for (const t of this.iterateCallbacks("cachedResponseWillBeUsed")) - s = - (await t({ cacheName: n, matchOptions: r, cachedResponse: s, request: i, event: this.event })) || - void 0; - return s; - } - async cachePut(t, e) { - const n = m(t); - var r; - await ((r = 0), new Promise((t) => setTimeout(t, r))); - const i = await this.getCacheKey(n, "write"); - if (!e) - throw new s("cache-put-with-no-response", { - url: - ((a = i.url), - new URL(String(a), location.href).href.replace(new RegExp(`^${location.origin}`), "")), - }); - var a; - const o = await this.R(e); - if (!o) return !1; - const { cacheName: c, matchOptions: h } = this.u, - u = await self.caches.open(c), - l = this.hasCallback("cacheDidUpdate"), - f = l - ? await (async function (t, e, s, n) { - const r = p(e.url, s); - if (e.url === r) return t.match(e, n); - const i = Object.assign(Object.assign({}, n), { ignoreSearch: !0 }), - a = await t.keys(e, i); - for (const e of a) if (r === p(e.url, s)) return t.match(e, n); - })(u, i.clone(), ["__WB_REVISION__"], h) - : null; - try { - await u.put(i, l ? o.clone() : o); - } catch (t) { - if (t instanceof Error) - throw ( - ("QuotaExceededError" === t.name && - (await (async function () { - for (const t of g) await t(); - })()), - t) - ); - } - for (const t of this.iterateCallbacks("cacheDidUpdate")) - await t({ cacheName: c, oldResponse: f, newResponse: o.clone(), request: i, event: this.event }); - return !0; - } - async getCacheKey(t, e) { - const s = `${t.url} | ${e}`; - if (!this.h[s]) { - let n = t; - for (const t of this.iterateCallbacks("cacheKeyWillBeUsed")) - n = m(await t({ mode: e, request: n, event: this.event, params: this.params })); - this.h[s] = n; - } - return this.h[s]; - } - hasCallback(t) { - for (const e of this.u.plugins) if (t in e) return !0; - return !1; - } - async runCallbacks(t, e) { - for (const s of this.iterateCallbacks(t)) await s(e); - } - *iterateCallbacks(t) { - for (const e of this.u.plugins) - if ("function" == typeof e[t]) { - const s = this.v.get(e), - n = (n) => { - const r = Object.assign(Object.assign({}, n), { state: s }); - return e[t](r); - }; - yield n; - } - } - waitUntil(t) { - return this.p.push(t), t; - } - async doneWaiting() { - let t; - for (; (t = this.p.shift()); ) await t; - } - destroy() { - this.l.resolve(null); - } - async R(t) { - let e = t, - s = !1; - for (const t of this.iterateCallbacks("cacheWillUpdate")) - if ( - ((e = (await t({ request: this.request, response: e, event: this.event })) || void 0), (s = !0), !e) - ) - break; - return s || (e && 200 !== e.status && (e = void 0)), e; - } - } - class R { - constructor(t = {}) { - (this.cacheName = d(t.cacheName)), - (this.plugins = t.plugins || []), - (this.fetchOptions = t.fetchOptions), - (this.matchOptions = t.matchOptions); - } - handle(t) { - const [e] = this.handleAll(t); - return e; - } - handleAll(t) { - t instanceof FetchEvent && (t = { event: t, request: t.request }); - const e = t.event, - s = "string" == typeof t.request ? new Request(t.request) : t.request, - n = "params" in t ? t.params : void 0, - r = new v(this, { event: e, request: s, params: n }), - i = this.q(r, s, e); - return [i, this.D(i, r, s, e)]; - } - async q(t, e, n) { - let r; - await t.runCallbacks("handlerWillStart", { event: n, request: e }); - try { - if (((r = await this.U(e, t)), !r || "error" === r.type)) throw new s("no-response", { url: e.url }); - } catch (s) { - if (s instanceof Error) - for (const i of t.iterateCallbacks("handlerDidError")) - if (((r = await i({ error: s, event: n, request: e })), r)) break; - if (!r) throw s; - } - for (const s of t.iterateCallbacks("handlerWillRespond")) - r = await s({ event: n, request: e, response: r }); - return r; - } - async D(t, e, s, n) { - let r, i; - try { - r = await t; - } catch (i) {} - try { - await e.runCallbacks("handlerDidRespond", { event: n, request: s, response: r }), await e.doneWaiting(); - } catch (t) { - t instanceof Error && (i = t); - } - if ( - (await e.runCallbacks("handlerDidComplete", { event: n, request: s, response: r, error: i }), - e.destroy(), - i) - ) - throw i; - } - } - function b(t) { - t.then(() => {}); - } - function q() { - return ( - (q = Object.assign - ? Object.assign.bind() - : function (t) { - for (var e = 1; e < arguments.length; e++) { - var s = arguments[e]; - for (var n in s) ({}).hasOwnProperty.call(s, n) && (t[n] = s[n]); - } - return t; - }), - q.apply(null, arguments) - ); - } - let D, U; - const x = new WeakMap(), - L = new WeakMap(), - I = new WeakMap(), - C = new WeakMap(), - E = new WeakMap(); - let N = { - get(t, e, s) { - if (t instanceof IDBTransaction) { - if ("done" === e) return L.get(t); - if ("objectStoreNames" === e) return t.objectStoreNames || I.get(t); - if ("store" === e) return s.objectStoreNames[1] ? void 0 : s.objectStore(s.objectStoreNames[0]); - } - return k(t[e]); - }, - set: (t, e, s) => ((t[e] = s), !0), - has: (t, e) => (t instanceof IDBTransaction && ("done" === e || "store" === e)) || e in t, - }; - function O(t) { - return t !== IDBDatabase.prototype.transaction || "objectStoreNames" in IDBTransaction.prototype - ? ( - U || - (U = [ - IDBCursor.prototype.advance, - IDBCursor.prototype.continue, - IDBCursor.prototype.continuePrimaryKey, - ]) - ).includes(t) - ? function (...e) { - return t.apply(B(this), e), k(x.get(this)); - } - : function (...e) { - return k(t.apply(B(this), e)); - } - : function (e, ...s) { - const n = t.call(B(this), e, ...s); - return I.set(n, e.sort ? e.sort() : [e]), k(n); - }; - } - function T(t) { - return "function" == typeof t - ? O(t) - : (t instanceof IDBTransaction && - (function (t) { - if (L.has(t)) return; - const e = new Promise((e, s) => { - const n = () => { - t.removeEventListener("complete", r), - t.removeEventListener("error", i), - t.removeEventListener("abort", i); - }, - r = () => { - e(), n(); - }, - i = () => { - s(t.error || new DOMException("AbortError", "AbortError")), n(); - }; - t.addEventListener("complete", r), - t.addEventListener("error", i), - t.addEventListener("abort", i); - }); - L.set(t, e); - })(t), - (e = t), - (D || (D = [IDBDatabase, IDBObjectStore, IDBIndex, IDBCursor, IDBTransaction])).some( - (t) => e instanceof t - ) - ? new Proxy(t, N) - : t); - var e; - } - function k(t) { - if (t instanceof IDBRequest) - return (function (t) { - const e = new Promise((e, s) => { - const n = () => { - t.removeEventListener("success", r), t.removeEventListener("error", i); - }, - r = () => { - e(k(t.result)), n(); - }, - i = () => { - s(t.error), n(); - }; - t.addEventListener("success", r), t.addEventListener("error", i); - }); - return ( - e - .then((e) => { - e instanceof IDBCursor && x.set(e, t); - }) - .catch(() => {}), - E.set(e, t), - e - ); - })(t); - if (C.has(t)) return C.get(t); - const e = T(t); - return e !== t && (C.set(t, e), E.set(e, t)), e; - } - const B = (t) => E.get(t); - const P = ["get", "getKey", "getAll", "getAllKeys", "count"], - M = ["put", "add", "delete", "clear"], - W = new Map(); - function j(t, e) { - if (!(t instanceof IDBDatabase) || e in t || "string" != typeof e) return; - if (W.get(e)) return W.get(e); - const s = e.replace(/FromIndex$/, ""), - n = e !== s, - r = M.includes(s); - if (!(s in (n ? IDBIndex : IDBObjectStore).prototype) || (!r && !P.includes(s))) return; - const i = async function (t, ...e) { - const i = this.transaction(t, r ? "readwrite" : "readonly"); - let a = i.store; - return n && (a = a.index(e.shift())), (await Promise.all([a[s](...e), r && i.done]))[0]; - }; - return W.set(e, i), i; - } - N = ((t) => q({}, t, { get: (e, s, n) => j(e, s) || t.get(e, s, n), has: (e, s) => !!j(e, s) || t.has(e, s) }))(N); - try { - self["workbox:expiration:6.5.4"] && _(); - } catch (t) {} - const S = "cache-entries", - K = (t) => { - const e = new URL(t, location.href); - return (e.hash = ""), e.href; - }; - class A { - constructor(t) { - (this._ = null), (this.L = t); - } - I(t) { - const e = t.createObjectStore(S, { keyPath: "id" }); - e.createIndex("cacheName", "cacheName", { unique: !1 }), - e.createIndex("timestamp", "timestamp", { unique: !1 }); - } - C(t) { - this.I(t), - this.L && - (function (t, { blocked: e } = {}) { - const s = indexedDB.deleteDatabase(t); - e && s.addEventListener("blocked", (t) => e(t.oldVersion, t)), k(s).then(() => {}); - })(this.L); - } - async setTimestamp(t, e) { - const s = { url: (t = K(t)), timestamp: e, cacheName: this.L, id: this.N(t) }, - n = (await this.getDb()).transaction(S, "readwrite", { durability: "relaxed" }); - await n.store.put(s), await n.done; - } - async getTimestamp(t) { - const e = await this.getDb(), - s = await e.get(S, this.N(t)); - return null == s ? void 0 : s.timestamp; - } - async expireEntries(t, e) { - const s = await this.getDb(); - let n = await s.transaction(S).store.index("timestamp").openCursor(null, "prev"); - const r = []; - let i = 0; - for (; n; ) { - const s = n.value; - s.cacheName === this.L && ((t && s.timestamp < t) || (e && i >= e) ? r.push(n.value) : i++), - (n = await n.continue()); - } - const a = []; - for (const t of r) await s.delete(S, t.id), a.push(t.url); - return a; - } - N(t) { - return this.L + "|" + K(t); - } - async getDb() { - return ( - this._ || - (this._ = await (function (t, e, { blocked: s, upgrade: n, blocking: r, terminated: i } = {}) { - const a = indexedDB.open(t, e), - o = k(a); - return ( - n && - a.addEventListener("upgradeneeded", (t) => { - n(k(a.result), t.oldVersion, t.newVersion, k(a.transaction), t); - }), - s && a.addEventListener("blocked", (t) => s(t.oldVersion, t.newVersion, t)), - o - .then((t) => { - i && t.addEventListener("close", () => i()), - r && - t.addEventListener("versionchange", (t) => - r(t.oldVersion, t.newVersion, t) - ); - }) - .catch(() => {}), - o - ); - })("workbox-expiration", 1, { upgrade: this.C.bind(this) })), - this._ - ); - } - } - class F { - constructor(t, e = {}) { - (this.O = !1), - (this.T = !1), - (this.k = e.maxEntries), - (this.B = e.maxAgeSeconds), - (this.P = e.matchOptions), - (this.L = t), - (this.M = new A(t)); - } - async expireEntries() { - if (this.O) return void (this.T = !0); - this.O = !0; - const t = this.B ? Date.now() - 1e3 * this.B : 0, - e = await this.M.expireEntries(t, this.k), - s = await self.caches.open(this.L); - for (const t of e) await s.delete(t, this.P); - (this.O = !1), this.T && ((this.T = !1), b(this.expireEntries())); - } - async updateTimestamp(t) { - await this.M.setTimestamp(t, Date.now()); - } - async isURLExpired(t) { - if (this.B) { - const e = await this.M.getTimestamp(t), - s = Date.now() - 1e3 * this.B; - return void 0 === e || e < s; - } - return !1; - } - async delete() { - (this.T = !1), await this.M.expireEntries(1 / 0); - } - } - try { - self["workbox:range-requests:6.5.4"] && _(); - } catch (t) {} - async function H(t, e) { - try { - if (206 === e.status) return e; - const n = t.headers.get("range"); - if (!n) throw new s("no-range-header"); - const r = (function (t) { - const e = t.trim().toLowerCase(); - if (!e.startsWith("bytes=")) throw new s("unit-must-be-bytes", { normalizedRangeHeader: e }); - if (e.includes(",")) throw new s("single-range-only", { normalizedRangeHeader: e }); - const n = /(\d*)-(\d*)/.exec(e); - if (!n || (!n[1] && !n[2])) throw new s("invalid-range-values", { normalizedRangeHeader: e }); - return { start: "" === n[1] ? void 0 : Number(n[1]), end: "" === n[2] ? void 0 : Number(n[2]) }; - })(n), - i = await e.blob(), - a = (function (t, e, n) { - const r = t.size; - if ((n && n > r) || (e && e < 0)) - throw new s("range-not-satisfiable", { size: r, end: n, start: e }); - let i, a; - return ( - void 0 !== e && void 0 !== n - ? ((i = e), (a = n + 1)) - : void 0 !== e && void 0 === n - ? ((i = e), (a = r)) - : void 0 !== n && void 0 === e && ((i = r - n), (a = r)), - { start: i, end: a } - ); - })(i, r.start, r.end), - o = i.slice(a.start, a.end), - c = o.size, - h = new Response(o, { status: 206, statusText: "Partial Content", headers: e.headers }); - return ( - h.headers.set("Content-Length", String(c)), - h.headers.set("Content-Range", `bytes ${a.start}-${a.end - 1}/${i.size}`), - h - ); - } catch (t) { - return new Response("", { status: 416, statusText: "Range Not Satisfiable" }); - } - } - function $(t, e) { - const s = e(); - return t.waitUntil(s), s; - } - try { - self["workbox:precaching:6.5.4"] && _(); - } catch (t) {} - function z(t) { - if (!t) throw new s("add-to-cache-list-unexpected-type", { entry: t }); - if ("string" == typeof t) { - const e = new URL(t, location.href); - return { cacheKey: e.href, url: e.href }; - } - const { revision: e, url: n } = t; - if (!n) throw new s("add-to-cache-list-unexpected-type", { entry: t }); - if (!e) { - const t = new URL(n, location.href); - return { cacheKey: t.href, url: t.href }; - } - const r = new URL(n, location.href), - i = new URL(n, location.href); - return r.searchParams.set("__WB_REVISION__", e), { cacheKey: r.href, url: i.href }; - } - class G { - constructor() { - (this.updatedURLs = []), - (this.notUpdatedURLs = []), - (this.handlerWillStart = async ({ request: t, state: e }) => { - e && (e.originalRequest = t); - }), - (this.cachedResponseWillBeUsed = async ({ event: t, state: e, cachedResponse: s }) => { - if ("install" === t.type && e && e.originalRequest && e.originalRequest instanceof Request) { - const t = e.originalRequest.url; - s ? this.notUpdatedURLs.push(t) : this.updatedURLs.push(t); - } - return s; - }); - } - } - class V { - constructor({ precacheController: t }) { - (this.cacheKeyWillBeUsed = async ({ request: t, params: e }) => { - const s = (null == e ? void 0 : e.cacheKey) || this.W.getCacheKeyForURL(t.url); - return s ? new Request(s, { headers: t.headers }) : t; - }), - (this.W = t); - } - } - let J, Q; - async function X(t, e) { - let n = null; - if (t.url) { - n = new URL(t.url).origin; - } - if (n !== self.location.origin) throw new s("cross-origin-copy-response", { origin: n }); - const r = t.clone(), - i = { headers: new Headers(r.headers), status: r.status, statusText: r.statusText }, - a = e ? e(i) : i, - o = (function () { - if (void 0 === J) { - const t = new Response(""); - if ("body" in t) - try { - new Response(t.body), (J = !0); - } catch (t) { - J = !1; - } - J = !1; - } - return J; - })() - ? r.body - : await r.blob(); - return new Response(o, a); - } - class Y extends R { - constructor(t = {}) { - (t.cacheName = w(t.cacheName)), - super(t), - (this.j = !1 !== t.fallbackToNetwork), - this.plugins.push(Y.copyRedirectedCacheableResponsesPlugin); - } - async U(t, e) { - const s = await e.cacheMatch(t); - return s || (e.event && "install" === e.event.type ? await this.S(t, e) : await this.K(t, e)); - } - async K(t, e) { - let n; - const r = e.params || {}; - if (!this.j) throw new s("missing-precache-entry", { cacheName: this.cacheName, url: t.url }); - { - const s = r.integrity, - i = t.integrity, - a = !i || i === s; - (n = await e.fetch(new Request(t, { integrity: "no-cors" !== t.mode ? i || s : void 0 }))), - s && a && "no-cors" !== t.mode && (this.A(), await e.cachePut(t, n.clone())); - } - return n; - } - async S(t, e) { - this.A(); - const n = await e.fetch(t); - if (!(await e.cachePut(t, n.clone()))) - throw new s("bad-precaching-response", { url: t.url, status: n.status }); - return n; - } - A() { - let t = null, - e = 0; - for (const [s, n] of this.plugins.entries()) - n !== Y.copyRedirectedCacheableResponsesPlugin && - (n === Y.defaultPrecacheCacheabilityPlugin && (t = s), n.cacheWillUpdate && e++); - 0 === e - ? this.plugins.push(Y.defaultPrecacheCacheabilityPlugin) - : e > 1 && null !== t && this.plugins.splice(t, 1); - } - } - (Y.defaultPrecacheCacheabilityPlugin = { - cacheWillUpdate: async ({ response: t }) => (!t || t.status >= 400 ? null : t), - }), - (Y.copyRedirectedCacheableResponsesPlugin = { - cacheWillUpdate: async ({ response: t }) => (t.redirected ? await X(t) : t), - }); - class Z { - constructor({ cacheName: t, plugins: e = [], fallbackToNetwork: s = !0 } = {}) { - (this.F = new Map()), - (this.H = new Map()), - (this.$ = new Map()), - (this.u = new Y({ - cacheName: w(t), - plugins: [...e, new V({ precacheController: this })], - fallbackToNetwork: s, - })), - (this.install = this.install.bind(this)), - (this.activate = this.activate.bind(this)); - } - get strategy() { - return this.u; - } - precache(t) { - this.addToCacheList(t), - this.G || - (self.addEventListener("install", this.install), - self.addEventListener("activate", this.activate), - (this.G = !0)); - } - addToCacheList(t) { - const e = []; - for (const n of t) { - "string" == typeof n ? e.push(n) : n && void 0 === n.revision && e.push(n.url); - const { cacheKey: t, url: r } = z(n), - i = "string" != typeof n && n.revision ? "reload" : "default"; - if (this.F.has(r) && this.F.get(r) !== t) - throw new s("add-to-cache-list-conflicting-entries", { firstEntry: this.F.get(r), secondEntry: t }); - if ("string" != typeof n && n.integrity) { - if (this.$.has(t) && this.$.get(t) !== n.integrity) - throw new s("add-to-cache-list-conflicting-integrities", { url: r }); - this.$.set(t, n.integrity); - } - if ((this.F.set(r, t), this.H.set(r, i), e.length > 0)) { - const t = `Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`; - console.warn(t); - } - } - } - install(t) { - return $(t, async () => { - const e = new G(); - this.strategy.plugins.push(e); - for (const [e, s] of this.F) { - const n = this.$.get(s), - r = this.H.get(e), - i = new Request(e, { integrity: n, cache: r, credentials: "same-origin" }); - await Promise.all(this.strategy.handleAll({ params: { cacheKey: s }, request: i, event: t })); - } - const { updatedURLs: s, notUpdatedURLs: n } = e; - return { updatedURLs: s, notUpdatedURLs: n }; - }); - } - activate(t) { - return $(t, async () => { - const t = await self.caches.open(this.strategy.cacheName), - e = await t.keys(), - s = new Set(this.F.values()), - n = []; - for (const r of e) s.has(r.url) || (await t.delete(r), n.push(r.url)); - return { deletedURLs: n }; - }); - } - getURLsToCacheKeys() { - return this.F; - } - getCachedURLs() { - return [...this.F.keys()]; - } - getCacheKeyForURL(t) { - const e = new URL(t, location.href); - return this.F.get(e.href); - } - getIntegrityForCacheKey(t) { - return this.$.get(t); - } - async matchPrecache(t) { - const e = t instanceof Request ? t.url : t, - s = this.getCacheKeyForURL(e); - if (s) { - return (await self.caches.open(this.strategy.cacheName)).match(s); - } - } - createHandlerBoundToURL(t) { - const e = this.getCacheKeyForURL(t); - if (!e) throw new s("non-precached-url", { url: t }); - return (s) => ( - (s.request = new Request(t)), - (s.params = Object.assign({ cacheKey: e }, s.params)), - this.strategy.handle(s) - ); - } - } - const tt = () => (Q || (Q = new Z()), Q); - class et extends r { - constructor(t, e) { - super(({ request: s }) => { - const n = t.getURLsToCacheKeys(); - for (const r of (function* ( - t, - { - ignoreURLParametersMatching: e = [/^utm_/, /^fbclid$/], - directoryIndex: s = "index.html", - cleanURLs: n = !0, - urlManipulation: r, - } = {} - ) { - const i = new URL(t, location.href); - (i.hash = ""), yield i.href; - const a = (function (t, e = []) { - for (const s of [...t.searchParams.keys()]) - e.some((t) => t.test(s)) && t.searchParams.delete(s); - return t; - })(i, e); - if ((yield a.href, s && a.pathname.endsWith("/"))) { - const t = new URL(a.href); - (t.pathname += s), yield t.href; - } - if (n) { - const t = new URL(a.href); - (t.pathname += ".html"), yield t.href; - } - if (r) { - const t = r({ url: i }); - for (const e of t) yield e.href; - } - })(s.url, e)) { - const e = n.get(r); - if (e) { - return { cacheKey: e, integrity: t.getIntegrityForCacheKey(e) }; - } - } - }, t.strategy); - } - } - (t.CacheFirst = class extends R { - async U(t, e) { - let n, - r = await e.cacheMatch(t); - if (!r) - try { - r = await e.fetchAndCachePut(t); - } catch (t) { - t instanceof Error && (n = t); - } - if (!r) throw new s("no-response", { url: t.url, error: n }); - return r; - } - }), - (t.ExpirationPlugin = class { - constructor(t = {}) { - (this.cachedResponseWillBeUsed = async ({ event: t, request: e, cacheName: s, cachedResponse: n }) => { - if (!n) return null; - const r = this.V(n), - i = this.J(s); - b(i.expireEntries()); - const a = i.updateTimestamp(e.url); - if (t) - try { - t.waitUntil(a); - } catch (t) {} - return r ? n : null; - }), - (this.cacheDidUpdate = async ({ cacheName: t, request: e }) => { - const s = this.J(t); - await s.updateTimestamp(e.url), await s.expireEntries(); - }), - (this.X = t), - (this.B = t.maxAgeSeconds), - (this.Y = new Map()), - t.purgeOnQuotaError && - (function (t) { - g.add(t); - })(() => this.deleteCacheAndMetadata()); - } - J(t) { - if (t === d()) throw new s("expire-custom-caches-only"); - let e = this.Y.get(t); - return e || ((e = new F(t, this.X)), this.Y.set(t, e)), e; - } - V(t) { - if (!this.B) return !0; - const e = this.Z(t); - if (null === e) return !0; - return e >= Date.now() - 1e3 * this.B; - } - Z(t) { - if (!t.headers.has("date")) return null; - const e = t.headers.get("date"), - s = new Date(e).getTime(); - return isNaN(s) ? null : s; - } - async deleteCacheAndMetadata() { - for (const [t, e] of this.Y) await self.caches.delete(t), await e.delete(); - this.Y = new Map(); - } - }), - (t.NavigationRoute = class extends r { - constructor(t, { allowlist: e = [/./], denylist: s = [] } = {}) { - super((t) => this.tt(t), t), (this.et = e), (this.st = s); - } - tt({ url: t, request: e }) { - if (e && "navigate" !== e.mode) return !1; - const s = t.pathname + t.search; - for (const t of this.st) if (t.test(s)) return !1; - return !!this.et.some((t) => t.test(s)); - } - }), - (t.NetworkFirst = class extends R { - constructor(t = {}) { - super(t), - this.plugins.some((t) => "cacheWillUpdate" in t) || this.plugins.unshift(u), - (this.nt = t.networkTimeoutSeconds || 0); - } - async U(t, e) { - const n = [], - r = []; - let i; - if (this.nt) { - const { id: s, promise: a } = this.rt({ request: t, logs: n, handler: e }); - (i = s), r.push(a); - } - const a = this.it({ timeoutId: i, request: t, logs: n, handler: e }); - r.push(a); - const o = await e.waitUntil((async () => (await e.waitUntil(Promise.race(r))) || (await a))()); - if (!o) throw new s("no-response", { url: t.url }); - return o; - } - rt({ request: t, logs: e, handler: s }) { - let n; - return { - promise: new Promise((e) => { - n = setTimeout(async () => { - e(await s.cacheMatch(t)); - }, 1e3 * this.nt); - }), - id: n, - }; - } - async it({ timeoutId: t, request: e, logs: s, handler: n }) { - let r, i; - try { - i = await n.fetchAndCachePut(e); - } catch (t) { - t instanceof Error && (r = t); - } - return t && clearTimeout(t), (!r && i) || (i = await n.cacheMatch(e)), i; - } - }), - (t.RangeRequestsPlugin = class { - constructor() { - this.cachedResponseWillBeUsed = async ({ request: t, cachedResponse: e }) => - e && t.headers.has("range") ? await H(t, e) : e; - } - }), - (t.StaleWhileRevalidate = class extends R { - constructor(t = {}) { - super(t), this.plugins.some((t) => "cacheWillUpdate" in t) || this.plugins.unshift(u); - } - async U(t, e) { - const n = e.fetchAndCachePut(t).catch(() => {}); - e.waitUntil(n); - let r, - i = await e.cacheMatch(t); - if (i); - else - try { - i = await n; - } catch (t) { - t instanceof Error && (r = t); - } - if (!i) throw new s("no-response", { url: t.url, error: r }); - return i; - } - }), - (t.cleanupOutdatedCaches = function () { - self.addEventListener("activate", (t) => { - const e = w(); - t.waitUntil( - (async (t, e = "-precache-") => { - const s = (await self.caches.keys()).filter( - (s) => s.includes(e) && s.includes(self.registration.scope) && s !== t - ); - return await Promise.all(s.map((t) => self.caches.delete(t))), s; - })(e).then((t) => {}) - ); - }); - }), - (t.clientsClaim = function () { - self.addEventListener("activate", () => self.clients.claim()); - }), - (t.createHandlerBoundToURL = function (t) { - return tt().createHandlerBoundToURL(t); - }), - (t.precacheAndRoute = function (t, e) { - !(function (t) { - tt().precache(t); - })(t), - (function (t) { - const e = tt(); - h(new et(e, t)); - })(e); - }), - (t.registerRoute = h); -}); diff --git a/src/app/layout.tsx b/src/app/layout.tsx index a0c4f9f..7901112 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -10,6 +10,7 @@ import Modal from "@/components/UI/Modal"; import ToastProvider from "@/utils/ToastProvider"; import { Sidebar } from "@/components/SideBar"; import { AppShell } from "@/providers/AppShell"; +import ServiceWorkerRegister from "@/components/ServiceWorkerRegister"; export const metadata: Metadata = { title: { @@ -17,17 +18,27 @@ export const metadata: Metadata = { default: "سالن رو", }, description: "وب سایت سالن رو", + applicationName: "سالنرو", + authors: { name: "شرکت میرفران تک", url: "https://menulita.ir", }, - manifest: "/manifest.json", + manifest: "/manifest.webmanifest", + icons: { icon: "/logo/192px.png", apple: "/logo/512px.png", }, + + appleWebApp: { + capable: true, + statusBarStyle: "default", + title: "سالنرو", + }, }; + export const viewport = { width: "device-width", initialScale: 1, @@ -40,6 +51,7 @@ export default async function RootLayout({ children }: { children: React.ReactNo return ( +