web: support top-level-await transform in desktop builds

This commit is contained in:
Abdullah Atta
2023-06-20 17:49:23 +05:00
parent f733e6e95b
commit fb90ef3137
4 changed files with 1086 additions and 23 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -101,6 +101,7 @@
"vite-plugin-env-compatible": "^1.1.1",
"vite-plugin-pwa": "^0.16.3",
"vite-plugin-svgr": "^3.2.0",
"vite-plugin-top-level-await": "^1.3.1",
"vitest": "^0.32.0",
"workbox-core": "^7.0.0",
"workbox-expiration": "^7.0.0",

View File

@@ -21,9 +21,7 @@ import { type desktop as bridge } from "./bridge";
export const desktop: typeof bridge | undefined =
import.meta.env.REACT_APP_PLATFORM === "desktop"
? process.env.NODE_ENV === "development"
? // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
(await import("./bridge")).desktop
: require("./bridge.ts").desktop
? // eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
(await import("./bridge")).desktop
: undefined;

View File

@@ -23,6 +23,7 @@ import svgrPlugin from "vite-plugin-svgr";
import envCompatible from "vite-plugin-env-compatible";
import { VitePWA, ManifestOptions } from "vite-plugin-pwa";
import path from "path";
import topLevelAwait from "vite-plugin-top-level-await";
const WEB_MANIFEST: Partial<ManifestOptions> = {
name: "Notesnook",
@@ -142,6 +143,8 @@ const WEB_MANIFEST: Partial<ManifestOptions> = {
const isTesting =
process.env.REACT_APP_TEST === "true" ||
process.env.NODE_ENV === "development";
const isDesktop = process.env.REACT_APP_PLATFORM === "desktop";
export default defineConfig({
envPrefix: "REACT_APP_",
build: {
@@ -171,6 +174,16 @@ export default defineConfig({
format: "es"
},
plugins: [
...(isDesktop
? [
topLevelAwait({
// The export name of top-level await promise for each chunk module
promiseExportName: "__tla",
// The function to generate import names of top-level await promise in each chunk module
promiseImportName: (i) => `__tla_${i}`
})
]
: []),
VitePWA({
strategies: "injectManifest",
minify: true,