PromucFlow_constructor/app/client/src/serviceWorker.ts
Diljit e79e0ffa43
chore: Remove some logs and errors from console - 1/n (#35674)
## Description
This PR removes some of the errors and logs from the console. The
following fixes were added to this PR
- Remove the error => Refused to set unsafe header "Expect"
- Remove the aria label warnings
- Remove the logs from service worker in dev mode


Fixes #`Issue Number`  
_or_  
Fixes `Issue URL`
> [!WARNING]  
> _If no issue exists, please create an issue first, and check with the
maintainers if the issue is valid._

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/10438062046>
> Commit: 63fbfb22f40508ab298c765c4edbba7c42a125e1
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10438062046&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Sun, 18 Aug 2024 06:12:03 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [ ] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Summary by CodeRabbit

- **Accessibility Improvements**
- Added `aria-label` attributes to the `StyledSearchInput` and `Label`
components for enhanced screen reader support.
- Improved the semantic structure of the `Label` component by providing
additional context for assistive technologies.

- **Performance Enhancements**
- Removed the `Expect` header from API requests to streamline the
request process.

- **Logging Adjustments**
- Disabled development logs in the service worker to enhance performance
in production environments.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2024-08-18 14:48:08 +05:30

118 lines
3.4 KiB
TypeScript

import { precacheAndRoute } from "workbox-precaching";
import { clientsClaim, setCacheNameDetails, skipWaiting } from "workbox-core";
import { registerRoute, Route } from "workbox-routing";
import {
CacheFirst,
NetworkOnly,
StaleWhileRevalidate,
} from "workbox-strategies";
import {
cachedApiUrlRegex,
getApplicationParamsFromUrl,
getPrefetchRequests,
PrefetchApiService,
} from "ee/utils/serviceWorkerUtils";
import type { RouteHandlerCallback } from "workbox-core/types";
setCacheNameDetails({
prefix: "appsmith",
suffix: "",
precache: "precache-v1",
runtime: "runtime",
googleAnalytics: "appsmith-ga",
});
const regexMap = {
appViewPage: new RegExp(/api\/v1\/pages\/\w+\/view$/),
static3PAssets: new RegExp(
/(tiny.cloud|googleapis|gstatic|cloudfront).*.(js|css|woff2)/,
),
shims: new RegExp(/shims\/.*.js/),
profile: new RegExp(/v1\/(users\/profile|workspaces)/),
};
/* eslint-disable no-restricted-globals */
// Note: if you need to filter out some files from precaching,
// do that in craco.build.config.js → workbox webpack plugin options
// TODO: Fix this the next time the file is edited
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const toPrecache = (self as any).__WB_MANIFEST;
precacheAndRoute(toPrecache);
self.__WB_DISABLE_DEV_LOGS = true;
skipWaiting();
clientsClaim();
const prefetchApiService = new PrefetchApiService();
/**
* Route handler callback for HTML pages.
* This callback is responsible for prefetching the API requests for the application page.
*/
const htmlRouteHandlerCallback: RouteHandlerCallback = async ({
event,
request,
url,
}) => {
// Extract application params from the URL
const applicationParams = getApplicationParamsFromUrl(url);
// If application params are present, prefetch the API requests for the application
if (applicationParams) {
const prefetchRequests = getPrefetchRequests(applicationParams);
prefetchRequests.forEach((prefetchRequest) => {
prefetchApiService.cacheApi(prefetchRequest).catch(() => {
// Silently fail
});
});
}
const networkHandler = new NetworkOnly();
return networkHandler.handle({ event, request });
};
// This route's caching seems too aggressive.
// TODO(abhinav): Figure out if this is really necessary.
// Maybe add the assets locally?
registerRoute(({ url }) => {
return (
regexMap.shims.test(url.pathname) || regexMap.static3PAssets.test(url.href)
);
}, new CacheFirst());
registerRoute(({ url }) => {
return regexMap.profile.test(url.pathname);
}, new NetworkOnly());
registerRoute(({ url }) => {
return regexMap.appViewPage.test(url.pathname);
}, new StaleWhileRevalidate());
registerRoute(
new Route(({ request, sameOrigin }) => {
return sameOrigin && request.destination === "document";
}, htmlRouteHandlerCallback),
);
// Route for fetching the API directly
registerRoute(
// Intercept requests to the consolidated API and module instances API
cachedApiUrlRegex,
async ({ event, request }) => {
// Check for cached response
const cachedResponse = await prefetchApiService.getCachedResponse(request);
// If the response is cached, return the response
if (cachedResponse) {
return cachedResponse;
}
// If the response is not cached, fetch the response
const networkHandler = new NetworkOnly();
return networkHandler.handle({ event, request });
},
"GET",
);