MCPcopy
hub / github.com/shadowwalker/next-pwa / getFallbackEnvs

Function getFallbackEnvs

build-fallback-worker.js:9–55  ·  view source on GitHub ↗
({ fallbacks, basedir, id, pageExtensions })

Source from the content-addressed store, hash-verified

7const TerserPlugin = require('terser-webpack-plugin')
8
9const getFallbackEnvs = ({ fallbacks, basedir, id, pageExtensions }) => {
10 let { document, data } = fallbacks
11
12 if (!document) {
13 let pagesDir = undefined
14
15 if (fs.existsSync(path.join(basedir, 'pages'))) {
16 pagesDir = path.join(basedir, 'pages')
17 } else if (fs.existsSync(path.join(basedir, 'src', 'pages'))) {
18 pagesDir = path.join(basedir, 'src', 'pages')
19 }
20
21 if (!pagesDir) return
22
23 const offlines = pageExtensions
24 .map(ext => path.join(pagesDir, `_offline.${ext}`))
25 .filter(entry => fs.existsSync(entry))
26 if (offlines.length === 1) {
27 document = '/_offline'
28 }
29 }
30
31 if (data && data.endsWith('.json')) {
32 data = path.posix.join('/_next/data', id, data)
33 }
34
35 const envs = {
36 __PWA_FALLBACK_DOCUMENT__: document || false,
37 __PWA_FALLBACK_IMAGE__: fallbacks.image || false,
38 __PWA_FALLBACK_AUDIO__: fallbacks.audio || false,
39 __PWA_FALLBACK_VIDEO__: fallbacks.video || false,
40 __PWA_FALLBACK_FONT__: fallbacks.font || false,
41 __PWA_FALLBACK_DATA__: data || false
42 }
43
44 if (Object.values(envs).filter(v => !!v).length === 0) return
45
46 console.log('> [PWA] Fallback to precache routes when fetch failed from cache or network:')
47 if (envs.__PWA_FALLBACK_DOCUMENT__) console.log(`> [PWA] document (page): ${envs.__PWA_FALLBACK_DOCUMENT__}`)
48 if (envs.__PWA_FALLBACK_IMAGE__) console.log(`> [PWA] image: ${envs.__PWA_FALLBACK_IMAGE__}`)
49 if (envs.__PWA_FALLBACK_AUDIO__) console.log(`> [PWA] audio: ${envs.__PWA_FALLBACK_AUDIO__}`)
50 if (envs.__PWA_FALLBACK_VIDEO__) console.log(`> [PWA] video: ${envs.__PWA_FALLBACK_VIDEO__}`)
51 if (envs.__PWA_FALLBACK_FONT__) console.log(`> [PWA] font: ${envs.__PWA_FALLBACK_FONT__}`)
52 if (envs.__PWA_FALLBACK_DATA__) console.log(`> [PWA] data (/_next/data/**/*.json): ${envs.__PWA_FALLBACK_DATA__}`)
53
54 return envs
55}
56
57const buildFallbackWorker = ({ id, fallbacks, basedir, destdir, minify, pageExtensions }) => {
58 const envs = getFallbackEnvs({ fallbacks, basedir, id, pageExtensions })

Callers 1

buildFallbackWorkerFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…