The mapping had grown three copies: the clear-mode ramp in electron/window-opacity.ts, a second clamp + mode normalizer in electron/translucency.ts, and a third clamp in the renderer store, with a "keep in sync" comment standing in for a shared type. Anything the two processes must agree on -- what a mode is, where the lever clamps, what intensity means as an opacity -- now lives in apps/shared/src/translucency.ts and both ends import it. electron/translucency.ts keeps only the piece that needs a BrowserWindow to mean anything (the constructor backing), and re-exports the rest so main.ts has a single import. Its relative specifier is deliberate: the electron bundle is built by esbuild with no tsconfig path resolution, so a bare @hermes/shared/translucency would typecheck and then fail to bundle -- the same constraint connection-registry.test.ts documents for backendScopeKey. The renderer's tsconfig drops its reference to the electron project. With both projects claiming the shared file, that edge made the renderer resolve it through the electron project's build output and demand a prior `tsc --build`. Nothing in src/ consumes electron's emitted types, so the reference bought nothing; `npm run typecheck` still checks both projects.
29 lines
876 B
JSON
29 lines
876 B
JSON
{
|
|
"compilerOptions": {
|
|
"target": "ES2023",
|
|
"useDefineForClassFields": true,
|
|
"lib": ["DOM", "DOM.Iterable", "ES2023"],
|
|
"types": ["node"],
|
|
"allowJs": false,
|
|
"skipLibCheck": true,
|
|
"esModuleInterop": true,
|
|
"allowSyntheticDefaultImports": true,
|
|
"strict": true,
|
|
"forceConsistentCasingInFileNames": true,
|
|
"module": "ESNext",
|
|
"moduleResolution": "Bundler",
|
|
"resolveJsonModule": true,
|
|
"isolatedModules": true,
|
|
"jsx": "react-jsx",
|
|
"paths": {
|
|
"@/*": ["./src/*"],
|
|
"@hermes/plugin-sdk": ["./src/sdk/index.ts"],
|
|
"@hermes/shared/billing": ["../shared/src/billing-types.ts"],
|
|
"@hermes/shared/translucency": ["../shared/src/translucency.ts"],
|
|
"@hermes/shared": ["../shared/src/index.ts"]
|
|
}
|
|
},
|
|
"include": ["src", "../shared/src"],
|
|
"exclude": ["e2e", "electron", "playwright.config.ts"]
|
|
}
|