Repository: Hestenb62/_legacy_backup
Author: Hesten Berger
Commit Message: added guides
URL: https://github.com/Hestenb62/_legacy_backup/commit/4b99b95e12bda0e1e737deb82a2355b9a4825b23
Code Changes:
diff --git a/.codememory/chunks.json b/.codememory/chunks.json
new file mode 100644
index 0000000..23675b4
--- /dev/null
+++ b/.codememory/chunks.json
@@ -0,0 +1,47438 @@
+[
+ {
+ "id": "FSnbUmw8ToCRVoW_b17lT",
+ "chunk": {
+ "id": "FSnbUmw8ToCRVoW_b17lT",
+ "filepath": "c:\\Users\\Heste\\OneDrive\\Documents\\_legacy_backup\\service-worker.js",
+ "content": "const CACHE_NAME = 'hestens-learning-v18';\r\nconst ASSETS_TO_CACHE = [\r\n\r\n // Main Directory Pages & Manifest\r\n '/',\r\n '/index.php',\r\n '/offline.php',\r\n '/updates.php',\r\n '/manifest.json',\r\n '/assessment/index.php',\r\n '/assessment/diagnostic.php',\r\n '/library/index.php',\r\n '/student/index.php',\r\n '/student/skill-tree.php',\r\n '/student/interactive-labs.php',\r\n\r\n // Pages Directory\r\n '/pages/accessibility.php',\r\n '/pages/help-center.php',\r\n '/pages/mission.php',\r\n '/pages/parents.php',\r\n '/pages/profile.php',\r\n '/pages/settings.php',\r\n '/pages/standards.php',\r\n '/pages/teachers.php',\r\n\r\n // Images & Icons\r\n '/assets/images/6791421e-7ca7-40bd-83d3-06a479bf7f36.png',\r\n\r\n // CSS Layers & Layouts\r\n '/assets/css/global-tokens.css',\r\n '/assets/css/global-reset.css',\r\n '/assets/css/global-primitives.css',\r\n '/assets/css/global-components.css',\r\n '/assets/css/pages/accessibility.css',\r\n '/assets/css/pages/updates.css',\r\n '/assets/css/pages/skill-tree.css',\r\n '/assets/css/pages/interactive-labs.css',\r\n '/assets/css/pages/diagnostic.css',\r\n '/assets/css/pages/student.css',\r\n '/assets/css/level-style.css',\r\n '/assets/css/reader-main.css',\r\n '/assets/css/components/sticky-reading-bar.css',\r\n '/assets/css/components/fixed-tools.css',\r\n '/assets/css/components/command-palette.css',\r\n '/assets/css/components/shortcuts-modal.css',\r\n '/assets/css/components/quest-badges.css',\r\n '/assets/css/components/accommodations.css',\r\n '/assets/css/layouts/header.css',\r\n '/assets/css/layouts/footer.css',\r\n '/assets/css/layouts/print.css',\r\n\r\n // JavaScript Core & Data\r\n '/assets/js/audio-feedback.js',\r\n '/assets/js/assessment-core.js',\r\n '/assets/js/assessment-questionGenerator.js',\r\n '/assets/js/assessment/adaptive-diagnostic.js',\r\n '/assets/js/global-a11y.js',\r\n '/assets/js/accessibility/accommodation-engine.js',\r\n '/assets/js/labs/interactive-labs.js',\r\n '/assets/js/offline-status.js',\r\n '/assets/js/offline-storage-manager.js',\r\n // Statutory & Standards Research Documents\r\n '/assets/text/accessability-wcag-2-1-aa.md',\r\n '/assets/text/accessability-wcag-aaa.md',\r\n '/assets/text/accessability-section-508.md',\r\n '/assets/text/accessability-udl.md',\r\n '/assets/text/library-gutenburg.md',\r\n '/assets/js/global-error-handler.js',\r\n '/assets/js/global-standard.js',\r\n '/assets/js/global-study-tools.js',\r\n '/assets/js/flashcard-studio.js',\r\n '/assets/js/gamification/quest-manager.js',\r\n '/assets/js/gamification/skill-tree.js',\r\n '/assets/js/index-main.js',\r\n '/assets/js/global-announcements.js',\r\n '/assets/js/global-core-ui.js',\r\n '/assets/js/gdrive-sync.js',\r\n '/assets/data/global-learningLevels.js',\r\n '/assets/js/standards-ccss-math-ela.js'\r\n];\r\n\r\n// Install Event: Caches critical assets safely with individual fallback\r\nself.addEventListener('install', (event) => {\r\n event.waitUntil(\r\n caches.open(CACHE_NAME).then(async (cache) => {\r\n console.log('[Service Worker] Caching pre-defined assets');\r\n await Promise.allSettled(\r\n ASSETS_TO_CACHE.map((url) =>\r\n cache.add(url).catch((err) => {\r\n console.warn(`[Service Worker] Non-critical cache fail for: ${url}`, err);\r\n })\r\n )\r\n );\r\n })\r\n );\r\n self.skipWaiting();\r\n});\r\n\r\n// Activate Event: Cleans up old caches\r\nself.addEventListener('activate', (event) => {\r\n event.waitUntil(\r\n caches.keys().then((keyList) => {\r\n return Promise.all(\r\n keyList.map((key) => {\r\n if (key !== CACHE_NAME) {\r\n console.log('[Service Worker] Removing old cache', key);\r\n return caches.delete(key);\r\n }\r\n })\r\n );\r\n })\r\n );\r\n self.clients.claim();\r\n});\r\n\r\n// Fetch Event: The Strategy\r\nself.addEventListener('fetch', (event) => {\r\n // Only process GET requests from http/https schemes\r\n if (event.request.method !== 'GET' || !event.request.url.startsWith('http')) {\r\n return;\r\n }\r\n\r\n // 1. For HTML pages (PHP), use Network First, then Cache\r\n if (event.request.headers.get('accept') && event.request.headers.get('accept').includes('text/html')) {\r\n event.respondWith(\r\n fetch(event.request)\r\n .then((response) => {\r\n if (response && response.status === 200) {\r\n const copy = response.clone();\r\n caches.open(CACHE_NAME).then((cache) => {\r\n cache.put(event.request, copy);\r\n });\r\n }\r\n return response;\r\n })\r\n .catch(() => {\r\n return caches.match(event.request).then((response) => {\r\n if (response) return response;\r\n return caches.match('/offline.php');\r\n });\r\n })\r\n );\r\n }\r\n // 2. For images, fonts, and static assets (CSS/JS), use Stale-While-Revalidate\r\n else {\r\n event.respondWith(\r\n caches.match(event.request).then((cachedResponse) => {\r\n const fetchPromise = fetch(event.request).then((networkResponse) => {\r\n if (networkResponse && networkResponse.status === 200) {\r\n const copy = networkResponse.clone();\r\n caches.open(CACHE_NAME).then((cache) => {\r\n cache.put(event.request, copy);\r\n });\r\n }\r\n return networkResponse;\r\n }).catch(() => {\r\n // Network failed, return cached if available\r\n return cachedResponse;\r\n });\r\n \r\n // Return cached response immediately if available, while network fetch happens in background\r\n return cachedResponse || fetchPromise;\r\n })\r\n );\r\n }\r\n});\r\n\r\n",
+ "type": "module",
+ "name": "service-worker.js",
+ "startLine": 0,
+ "endLine": 168,
+ "language": "javascript",
+ "metadata": {
+ "lastModified": "2026-09-23T07:45:31.015Z"
+ }
+ },
+ "embedding": [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,