Skip to content

Commit ceab94a

Browse files
authored
fix: expose injectRegister in pwa info (#611)
* fix: expose `injectRegister` in pwa info * docs: update api mode jsdocs
1 parent 3ceab95 commit ceab94a

File tree

6 files changed

+25
-5
lines changed

6 files changed

+25
-5
lines changed

examples/vanilla-ts-dev-options/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
"build-auto": "rimraf dev-dist && DEBUG=vite-plugin-pwa SW_DEV=true SW_INLINE=auto vite build --force",
1717
"build-inline": "rimraf dev-dist && DEBUG=vite-plugin-pwa SW_DEV=true SW_INLINE=inline vite build --force",
1818
"build-script": "rimraf dev-dist && DEBUG=vite-plugin-pwa SW_DEV=true SW_INLINE=script vite build --force",
19+
"build-script-defer": "rimraf dev-dist && DEBUG=vite-plugin-pwa SW_DEV=true SW_INLINE=script-defer vite build --force",
1920
"serve": "serve dist"
2021
},
2122
"devDependencies": {

info.d.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,15 @@ declare module 'virtual:pwa-info' {
2121
*/
2222
registerSW?: {
2323
/**
24-
* When this flag is `true` the service worker must be registered via inline script otherwise registered via script with src attribute `registerSW.js` .
24+
* When this flag is `true` the service worker must be registered via inline script otherwise registered via script with src attribute `registerSW.js`.
25+
*
26+
* @deprecated From `v0.17.2` this flag is deprecated, use `mode` instead.
2527
*/
2628
inline: boolean
29+
/**
30+
* When this flag is `inline` the service worker must be registered via inline script otherwise registered via script with src attribute `registerSW.js`.
31+
*/
32+
mode: 'inline' | 'script' | 'script-defer'
2733
/**
2834
* The path for the inline script: will contain the service worker url.
2935
*/

src/api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ export function createAPI(ctx: PWAPluginContext): VitePluginPWAAPI {
117117
// hint when required
118118
shouldRegisterSW,
119119
inline: options.injectRegister === 'inline',
120+
mode: mode === 'auto' ? 'script' : mode,
120121
scope: options.scope,
121122
inlinePath: `${base}${ctx.devEnvironment ? DEV_SW_NAME : options.filename}`,
122123
registerPath: `${base}${FILE_SW_REGISTER}`,

src/html.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,12 @@ export function generateWebManifest(options: ResolvedVitePWAOptions, dev: boolea
5555
}
5656

5757
export function generateRegisterSW(options: ResolvedVitePWAOptions, dev: boolean) {
58-
if (options.injectRegister === 'inline')
58+
if (options.injectRegister === 'inline') {
5959
return `<script id="vite-plugin-pwa:inline-sw">${generateSimpleSWRegister(options, dev)}</script>`
60+
}
6061
else if (options.injectRegister === 'script' || options.injectRegister === 'script-defer') {
6162
const hasDefer = options.injectRegister === 'script-defer'
62-
return `<script id="vite-plugin-pwa:register-sw" src="${dev ? options.base : options.buildBase}${FILE_SW_REGISTER}" ${hasDefer ? 'defer' : ''}></script>`
63+
return `<script id="vite-plugin-pwa:register-sw" src="${dev ? options.base : options.buildBase}${FILE_SW_REGISTER}"${hasDefer ? ' defer' : ''}></script>`
6364
}
6465

6566
return undefined

src/plugins/info.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ interface VirtualPwaInfo {
3232
linkTag: string
3333
}
3434
registerSW?: {
35+
/**
36+
* @deprecated use `mode` instead
37+
*/
3538
inline: boolean
39+
mode: 'inline' | 'script' | 'script-defer'
3640
inlinePath: string
3741
registerPath: string
3842
scope: string
@@ -61,9 +65,10 @@ function generatePwaInfo(ctx: PWAPluginContext, api: VitePluginPWAAPI) {
6165
if (registerSWData) {
6266
const scriptTag = registerSWData.toScriptTag()
6367
if (scriptTag) {
64-
const { inline, inlinePath, registerPath, type, scope } = registerSWData
68+
const { inline, mode, inlinePath, registerPath, type, scope } = registerSWData
6569
entry.registerSW = {
6670
inline,
71+
mode,
6772
inlinePath,
6873
registerPath,
6974
type,

src/types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,9 +410,15 @@ export interface WebManifestData {
410410
export interface RegisterSWData {
411411
shouldRegisterSW: boolean
412412
/**
413-
* When this flag is `true` the service worker must be registered via inline script otherwise registered via script with src attribute `registerSW.js` .
413+
* When this flag is `true` the service worker must be registered via inline script otherwise registered via script with src attribute `registerSW.js`.
414+
*
415+
* @deprecated From `v0.17.2` this flag is deprecated, use `mode` instead.
414416
*/
415417
inline: boolean
418+
/**
419+
* When this flag is `inline` the service worker must be registered via inline script otherwise registered via script with src attribute `registerSW.js`.
420+
*/
421+
mode: 'inline' | 'script' | 'script-defer'
416422
/**
417423
* The path for the inline script: will contain the service worker url.
418424
*/

0 commit comments

Comments
 (0)