From dacfecc959e5ed9eeb00b8486c2d18d7bba7b7fb Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sat, 4 May 2024 16:21:26 +0000 Subject: [PATCH 1/3] chore(release): @remix-pwa/cli@1.2.3 [skip ci] ## @remix-pwa/cli 1.2.3 (2024-05-04) ### Bug Fixes * **cli:** fixed json imports for newer node releases 945c219 --- packages/cli/CHANGELOG.md | 7 +++++++ packages/cli/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 7d48676..97f8cf0 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,3 +1,10 @@ +## @remix-pwa/cli 1.2.3 (2024-05-04) + + +### Bug Fixes + +* **cli:** fixed json imports for newer node releases 945c219 + ## @remix-pwa/cli 1.2.3-dev.1 (2024-05-04) diff --git a/packages/cli/package.json b/packages/cli/package.json index a468c83..513fff4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@remix-pwa/cli", - "version": "1.2.3-dev.1", + "version": "1.2.3", "description": "An elegant CLI for everything Remix PWA 💖", "repository": { "type": "git", From 08f0d11875790fdf119dbb7c054fadaaf4a60e96 Mon Sep 17 00:00:00 2001 From: Abdur-Rahman Fashola Date: Sun, 5 May 2024 09:46:52 +0100 Subject: [PATCH 2/3] chore: updated and sync-ed `lock` file --- package-lock.json | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 88e05f2..882f3f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16531,7 +16531,7 @@ }, "packages/cli": { "name": "@remix-pwa/cli", - "version": "1.2.2", + "version": "1.2.3", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^12.0.1", @@ -16994,7 +16994,7 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@remix-pwa/dev": "3.0.4", + "@remix-pwa/dev": "3.0.5", "@remix-run/dev": "^2.8.1", "@remix-run/eslint-config": "^2.8.1", "@types/react": "^18.2.22", @@ -17010,37 +17010,6 @@ "engines": { "node": ">=14.0.0" } - }, - "playground/node_modules/@remix-pwa/dev": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@remix-pwa/dev/-/dev-3.0.4.tgz", - "integrity": "sha512-P1z/2C4vcs6zJkpxxhO+iyhhRJ/7yygTK5LE+4LqL99PHI6keqbWaSdMsyqu3uJF0+BdX7yKzddKGumdBmvkLA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.6", - "@babel/generator": "^7.23.6", - "@babel/traverse": "^7.23.6", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", - "chokidar": "^3.6.0", - "fast-glob": "^3.3.2", - "fs-extra": "^11.2.0", - "lodash": "^4.17.21", - "magic-string": "^0.30.9", - "pathe": "^1.1.2", - "rollup-plugin-esbuild": "^6.1.1" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@remix-run/dev": "^1.15.0 || ^2.0.0" - }, - "peerDependenciesMeta": { - "@remix-run/dev": { - "optional": true - } - } } } } From 90d3a6d32cd6bebba5b5a150ee99bb08d3e39912 Mon Sep 17 00:00:00 2001 From: Abdur-Rahman Fashola Date: Sun, 5 May 2024 09:47:23 +0100 Subject: [PATCH 3/3] fix(sw): mini patches to message handler & `useSWEffect` hook --- packages/sw/index.ts | 1 + packages/sw/src/hooks/useSWEffect.ts | 7 +++++- packages/sw/src/message/NavigationHandler.ts | 26 ++++++++++++++------ packages/sw/src/types.ts | 5 ++++ 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/packages/sw/index.ts b/packages/sw/index.ts index ec3cec3..aa1690a 100644 --- a/packages/sw/index.ts +++ b/packages/sw/index.ts @@ -32,6 +32,7 @@ export { ManifestLink } from './src/components/ManifestLink.js'; export type { DefaultErrorHandler, DefaultFetchHandler, + DefaultFetchHandlerArgs, GetLoadContextFunction, WorkerActionArgs, WorkerActionFunction, diff --git a/packages/sw/src/hooks/useSWEffect.ts b/packages/sw/src/hooks/useSWEffect.ts index 0d0879f..c79122a 100644 --- a/packages/sw/src/hooks/useSWEffect.ts +++ b/packages/sw/src/hooks/useSWEffect.ts @@ -1,6 +1,9 @@ import type { Location } from '@remix-run/react'; import { useLocation } from '@remix-run/react'; import { useEffect, useRef } from 'react'; + +import { messageSW } from '../utils/utils.js'; + interface SWMessagePayload { /** * The current location of the application. @@ -33,7 +36,7 @@ export function useSWEffect(options: UseSWEffectOptions = { cacheType: 'jit' }): useEffect(() => { const sendMessageToSW = (event: string, payload: SWMessagePayload) => { if ('serviceWorker' in navigator && navigator.serviceWorker.controller) { - navigator.serviceWorker.controller.postMessage({ type: event, payload }); + messageSW(navigator.serviceWorker.controller, { type: event, payload }); } }; @@ -76,9 +79,11 @@ export function useSWEffect(options: UseSWEffectOptions = { cacheType: 'jit' }): if (messageDebounceRef.current) { clearTimeout(messageDebounceRef.current); } + if ('serviceWorker' in navigator) { navigator.serviceWorker.removeEventListener('controllerchange', handleLocationChange); } + if (isFirstRender.current) isFirstRender.current = false; }; }, [location]); diff --git a/packages/sw/src/message/NavigationHandler.ts b/packages/sw/src/message/NavigationHandler.ts index 6d1a5b9..8b0f630 100644 --- a/packages/sw/src/message/NavigationHandler.ts +++ b/packages/sw/src/message/NavigationHandler.ts @@ -1,4 +1,5 @@ import type { EnhancedCache } from '../cache/index.js'; +import type { Logger } from '../logger/logger.js'; import { logger } from '../logger/logger.js'; import { MessageHandler } from './MessageHandler.js'; @@ -12,6 +13,10 @@ export type NavigationHandlerOptions = { * handle the message. */ allowList?: string[] | RegExp[]; + /** + * The cache to use for handling the navigation event - caching the HTML responses. + */ + cache: EnhancedCache; /** * A list of regular expressions or strings to match against the current document URL. * If the current document URL matches any of the patterns, the handler will not @@ -19,9 +24,12 @@ export type NavigationHandlerOptions = { */ denyList?: string[] | RegExp[]; /** - * The cache to use for handling the navigation event - caching the HTML responses. + * The logger to use for logging messages. If this isn't provided, + * the default logger will be used. + * + * @default logger */ - cache: EnhancedCache; + logger?: Logger; }; /** @@ -32,6 +40,7 @@ export class NavigationHandler extends MessageHandler { private allowList: string[] | RegExp[]; private denyList: string[] | RegExp[]; private documentCache: EnhancedCache; + private logger: Logger; constructor(options: NavigationHandlerOptions) { super('REMIX_NAVIGATION'); @@ -39,6 +48,7 @@ export class NavigationHandler extends MessageHandler { this.allowList = options.allowList || []; this.denyList = options.denyList || []; this.documentCache = options.cache; + this.logger = options.logger || logger; this.bind(this.handleNavigation.bind(this)); } @@ -60,10 +70,10 @@ export class NavigationHandler extends MessageHandler { // eslint-disable-next-line dot-notation if (!cacheMatch && this.documentCache['strategy'].constructor.name !== 'CacheOnly') { - logger.debug(`Document request for ${documentUrl} not found in cache. Fetching from server...`); + this.logger.debug(`Document request for ${documentUrl} not found in cache. Fetching from server...`); const response = await fetch(documentUrl).catch(error => { - logger.error(`Error fetching document for ${documentUrl}:`, error); + this.logger.error(`Error fetching document for ${documentUrl}:`, error); }); if (!response) { @@ -74,14 +84,14 @@ export class NavigationHandler extends MessageHandler { } if (isSsr) { - logger.setLogLevel('warn'); - logger.log(`Document request for ${documentUrl} handled.`); - logger.setLogLevel('debug'); + this.logger.setLogLevel('warn'); + this.logger.log(`Document request for ${documentUrl} handled.`); + this.logger.setLogLevel('debug'); // Todo: Handle loader events on document request } } catch (error) { - logger.error(`Error handling document request for ${documentUrl}:`, error); + this.logger.error(`Error handling document request for ${documentUrl}:`, error); } } } diff --git a/packages/sw/src/types.ts b/packages/sw/src/types.ts index e19a594..c15934e 100644 --- a/packages/sw/src/types.ts +++ b/packages/sw/src/types.ts @@ -34,6 +34,11 @@ export type WorkerLoaderArgs = WorkerDataFunctionArgs; */ export type WorkerActionArgs = WorkerDataFunctionArgs; +/** + * The `defaultFetchHandler` arguments. + */ +export type DefaultFetchHandlerArgs = WorkerDataFunctionArgs; + /** * A worker action function. */