From efb9b61373d5bb639695164246e84c12de8a6d04 Mon Sep 17 00:00:00 2001 From: Douglas DUTEIL Date: Wed, 1 Jul 2026 10:37:25 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A6=20Make=20@proconnect-gouv/proconne?= =?UTF-8?q?ct.email=20publishable=20standalone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Problem** The package built fine inside the monorepo but was unusable as a standalone npm dependency: tsc emitted extensionless relative imports under Bundler resolution, which plain Node ESM can't resolve (ERR_MODULE_NOT_FOUND). It was also still marked private, shipped src/tests/stories in the tarball, and listed a TS-only editor plugin as a runtime dependency. **Proposal** Switch module/moduleResolution to NodeNext and add explicit .js extensions to all relative imports (directory imports resolve to index.js). Flip private to false, scope the published tarball to dist via "files", and move @kitajs/ts-html-plugin to devDependencies. Verified by packing, installing the tarball into a clean throwaway Node project, and rendering a template with plain `node`. --- .changeset/wild-plums-jog.md | 7 ++++++ packages/email/.storybook/index.tsx | 4 ++-- packages/email/package.json | 7 +++--- packages/email/src/Add2fa.stories.tsx | 2 +- packages/email/src/Add2fa.tsx | 4 ++-- packages/email/src/AddAccessKey.stories.tsx | 2 +- packages/email/src/AddAccessKey.tsx | 4 ++-- .../email/src/Delete2faProtection.stories.tsx | 2 +- packages/email/src/Delete2faProtection.tsx | 4 ++-- .../email/src/DeleteAccessKey.stories.tsx | 2 +- packages/email/src/DeleteAccessKey.tsx | 4 ++-- packages/email/src/DeleteAccount.stories.tsx | 2 +- packages/email/src/DeleteAccount.tsx | 4 ++-- .../email/src/DeleteFreeTotpMail.stories.tsx | 2 +- packages/email/src/DeleteFreeTotpMail.tsx | 4 ++-- packages/email/src/MagicLink.stories.tsx | 2 +- packages/email/src/MagicLink.tsx | 10 ++++---- ...ficialContactEmailVerification.stories.tsx | 2 +- .../src/OfficialContactEmailVerification.tsx | 4 ++-- packages/email/src/ResetPassword.stories.tsx | 2 +- packages/email/src/ResetPassword.tsx | 4 ++-- .../src/UpdatePersonalDataMail.stories.tsx | 2 +- packages/email/src/UpdatePersonalDataMail.tsx | 4 ++-- packages/email/src/VerifyEmail.stories.tsx | 2 +- packages/email/src/VerifyEmail.tsx | 4 ++-- packages/email/src/Welcome.stories.tsx | 2 +- packages/email/src/Welcome.tsx | 4 ++-- packages/email/src/_layout.tsx | 2 +- packages/email/src/components/Badge.tsx | 2 +- packages/email/src/components/Button.tsx | 2 +- packages/email/src/components/Em.tsx | 2 +- packages/email/src/components/Link.tsx | 2 +- packages/email/src/components/Text.tsx | 2 +- packages/email/src/components/index.ts | 16 ++++++------- packages/email/src/index.ts | 24 +++++++++---------- packages/email/tsconfig.json | 4 ++-- 36 files changed, 81 insertions(+), 71 deletions(-) create mode 100644 .changeset/wild-plums-jog.md diff --git a/.changeset/wild-plums-jog.md b/.changeset/wild-plums-jog.md new file mode 100644 index 000000000..32cc60723 --- /dev/null +++ b/.changeset/wild-plums-jog.md @@ -0,0 +1,7 @@ +--- +"@proconnect-gouv/proconnect.email": patch +--- + +📦 Rend le package installable de manière autonome hors du monorepo + +Passe la résolution de modules TypeScript en `NodeNext` et ajoute les extensions `.js` explicites sur les imports relatifs (requis par Node ESM). Marque le package public (`private: false`), limite le tarball publié au dossier `dist` via `files`, et déplace `@kitajs/ts-html-plugin` en dépendance de développement. diff --git a/packages/email/.storybook/index.tsx b/packages/email/.storybook/index.tsx index 84c803448..68c7e0223 100644 --- a/packages/email/.storybook/index.tsx +++ b/packages/email/.storybook/index.tsx @@ -7,8 +7,8 @@ import type { Renderer, StoryAnnotations, } from "@storybook/csf"; -import { ChangeView } from "./ChangeView"; -import { SendEmailFormWebComponent } from "./SendEmailFormWebComponent"; +import { ChangeView } from "./ChangeView.js"; +import { SendEmailFormWebComponent } from "./SendEmailFormWebComponent.js"; // diff --git a/packages/email/package.json b/packages/email/package.json index 1fe5c1262..686e4908f 100644 --- a/packages/email/package.json +++ b/packages/email/package.json @@ -1,7 +1,7 @@ { "name": "@proconnect-gouv/proconnect.email", "version": "1.0.0", - "private": true, + "private": false, "homepage": "https://github.com/proconnect-gouv/proconnect-identite/tree/main/packages/email#readme", "bugs": "https://github.com/proconnect-gouv/proconnect-identite/issues", "repository": { @@ -12,6 +12,7 @@ "license": "MIT", "sideEffects": false, "type": "module", + "files": ["dist"], "exports": { ".": { "require": { @@ -35,10 +36,10 @@ "type-check": "tsc --noEmit" }, "dependencies": { - "@kitajs/html": "^4.2.9", - "@kitajs/ts-html-plugin": "^4.1.1" + "@kitajs/html": "^4.2.9" }, "devDependencies": { + "@kitajs/ts-html-plugin": "^4.1.1", "@proconnect-gouv/proconnect.devtools.typescript": "1.0.0", "@storybook/csf": "^0.1.13", "prettier": "^3.8.3", diff --git a/packages/email/src/Add2fa.stories.tsx b/packages/email/src/Add2fa.stories.tsx index 7efe757aa..37dcdd5f0 100644 --- a/packages/email/src/Add2fa.stories.tsx +++ b/packages/email/src/Add2fa.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import Add2fa, { type Props } from "./Add2fa"; +import Add2fa, { type Props } from "./Add2fa.js"; // diff --git a/packages/email/src/Add2fa.tsx b/packages/email/src/Add2fa.tsx index dc57b5e82..2b454233c 100644 --- a/packages/email/src/Add2fa.tsx +++ b/packages/email/src/Add2fa.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Text } from "./components/index.js"; // diff --git a/packages/email/src/AddAccessKey.stories.tsx b/packages/email/src/AddAccessKey.stories.tsx index d0a5f7ee9..9bd30135a 100644 --- a/packages/email/src/AddAccessKey.stories.tsx +++ b/packages/email/src/AddAccessKey.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import AddAccessKey, { type Props } from "./AddAccessKey"; +import AddAccessKey, { type Props } from "./AddAccessKey.js"; // diff --git a/packages/email/src/AddAccessKey.tsx b/packages/email/src/AddAccessKey.tsx index 58f51f445..eafdeaffc 100644 --- a/packages/email/src/AddAccessKey.tsx +++ b/packages/email/src/AddAccessKey.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Link, Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Link, Text } from "./components/index.js"; // diff --git a/packages/email/src/Delete2faProtection.stories.tsx b/packages/email/src/Delete2faProtection.stories.tsx index 7158cd38a..db62c89b9 100644 --- a/packages/email/src/Delete2faProtection.stories.tsx +++ b/packages/email/src/Delete2faProtection.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import Delete2faProtection, { type Props } from "./Delete2faProtection"; +import Delete2faProtection, { type Props } from "./Delete2faProtection.js"; // diff --git a/packages/email/src/Delete2faProtection.tsx b/packages/email/src/Delete2faProtection.tsx index b22d7f089..5852fb781 100644 --- a/packages/email/src/Delete2faProtection.tsx +++ b/packages/email/src/Delete2faProtection.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Text } from "./components/index.js"; // diff --git a/packages/email/src/DeleteAccessKey.stories.tsx b/packages/email/src/DeleteAccessKey.stories.tsx index 46745161a..286998578 100644 --- a/packages/email/src/DeleteAccessKey.stories.tsx +++ b/packages/email/src/DeleteAccessKey.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import DeleteAccessKey, { type Props } from "./DeleteAccessKey"; +import DeleteAccessKey, { type Props } from "./DeleteAccessKey.js"; // diff --git a/packages/email/src/DeleteAccessKey.tsx b/packages/email/src/DeleteAccessKey.tsx index 9937266c2..cbf764e33 100644 --- a/packages/email/src/DeleteAccessKey.tsx +++ b/packages/email/src/DeleteAccessKey.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Link, Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Link, Text } from "./components/index.js"; // diff --git a/packages/email/src/DeleteAccount.stories.tsx b/packages/email/src/DeleteAccount.stories.tsx index 55c0d08dd..081fb49b0 100644 --- a/packages/email/src/DeleteAccount.stories.tsx +++ b/packages/email/src/DeleteAccount.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import DeleteAccount, { type Props } from "./DeleteAccount"; +import DeleteAccount, { type Props } from "./DeleteAccount.js"; // diff --git a/packages/email/src/DeleteAccount.tsx b/packages/email/src/DeleteAccount.tsx index 708298886..0cfa8f1cb 100644 --- a/packages/email/src/DeleteAccount.tsx +++ b/packages/email/src/DeleteAccount.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Link, Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Link, Text } from "./components/index.js"; // diff --git a/packages/email/src/DeleteFreeTotpMail.stories.tsx b/packages/email/src/DeleteFreeTotpMail.stories.tsx index 7d66571f3..c06396a45 100644 --- a/packages/email/src/DeleteFreeTotpMail.stories.tsx +++ b/packages/email/src/DeleteFreeTotpMail.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import DeleteFreeTotpMail, { type Props } from "./DeleteFreeTotpMail"; +import DeleteFreeTotpMail, { type Props } from "./DeleteFreeTotpMail.js"; // diff --git a/packages/email/src/DeleteFreeTotpMail.tsx b/packages/email/src/DeleteFreeTotpMail.tsx index adfb7521e..ce8e26314 100644 --- a/packages/email/src/DeleteFreeTotpMail.tsx +++ b/packages/email/src/DeleteFreeTotpMail.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Link, Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Link, Text } from "./components/index.js"; // diff --git a/packages/email/src/MagicLink.stories.tsx b/packages/email/src/MagicLink.stories.tsx index ab1c688aa..a9b06396d 100644 --- a/packages/email/src/MagicLink.stories.tsx +++ b/packages/email/src/MagicLink.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import MagicLink, { type Props } from "./MagicLink"; +import MagicLink, { type Props } from "./MagicLink.js"; // diff --git a/packages/email/src/MagicLink.tsx b/packages/email/src/MagicLink.tsx index a314d7b5b..c74da3b19 100644 --- a/packages/email/src/MagicLink.tsx +++ b/packages/email/src/MagicLink.tsx @@ -1,18 +1,19 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Button, Em, Text } from "./components"; +import { escapeHtml } from "@kitajs/html"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Button, Em, Text } from "./components/index.js"; // export default function MagicLink(props: Props) { - const { baseurl, magic_link } = props; + const { baseurl, magic_link, app_name = "ProConnect" } = props; return ( Bonjour,
- Vous avez demandé un lien d'identification à ProConnect. Utilisez + Vous avez demandé un lien d'identification à {escapeHtml(app_name)}. Utilisez le bouton ci-dessous pour vous connecter instantanément.
Il est valable 1 heure. @@ -29,4 +30,5 @@ export default function MagicLink(props: Props) { export type Props = LayoutProps & { magic_link: string; + app_name?: string; }; diff --git a/packages/email/src/OfficialContactEmailVerification.stories.tsx b/packages/email/src/OfficialContactEmailVerification.stories.tsx index 3d9fa9705..b80cf8ba7 100644 --- a/packages/email/src/OfficialContactEmailVerification.stories.tsx +++ b/packages/email/src/OfficialContactEmailVerification.stories.tsx @@ -3,7 +3,7 @@ import type { ComponentAnnotations, Renderer } from "@storybook/csf"; import OfficialContactEmailVerification, { type Props, -} from "./OfficialContactEmailVerification"; +} from "./OfficialContactEmailVerification.js"; // diff --git a/packages/email/src/OfficialContactEmailVerification.tsx b/packages/email/src/OfficialContactEmailVerification.tsx index ae7c19d73..0769802e0 100644 --- a/packages/email/src/OfficialContactEmailVerification.tsx +++ b/packages/email/src/OfficialContactEmailVerification.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Badge, Em, Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Badge, Em, Text } from "./components/index.js"; // diff --git a/packages/email/src/ResetPassword.stories.tsx b/packages/email/src/ResetPassword.stories.tsx index d4c3f4e89..9891c10cd 100644 --- a/packages/email/src/ResetPassword.stories.tsx +++ b/packages/email/src/ResetPassword.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import ResetPassword, { type Props } from "./ResetPassword"; +import ResetPassword, { type Props } from "./ResetPassword.js"; // diff --git a/packages/email/src/ResetPassword.tsx b/packages/email/src/ResetPassword.tsx index 60ca09021..0cf8a85c5 100644 --- a/packages/email/src/ResetPassword.tsx +++ b/packages/email/src/ResetPassword.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Button, Em, Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Button, Em, Text } from "./components/index.js"; // diff --git a/packages/email/src/UpdatePersonalDataMail.stories.tsx b/packages/email/src/UpdatePersonalDataMail.stories.tsx index df781ed08..181833550 100644 --- a/packages/email/src/UpdatePersonalDataMail.stories.tsx +++ b/packages/email/src/UpdatePersonalDataMail.stories.tsx @@ -5,7 +5,7 @@ import type { Renderer, StoryAnnotations, } from "@storybook/csf"; -import UpdatePersonalDataMail, { type Props } from "./UpdatePersonalDataMail"; +import UpdatePersonalDataMail, { type Props } from "./UpdatePersonalDataMail.js"; // export default { diff --git a/packages/email/src/UpdatePersonalDataMail.tsx b/packages/email/src/UpdatePersonalDataMail.tsx index 0fe53cbc9..1c7bae143 100644 --- a/packages/email/src/UpdatePersonalDataMail.tsx +++ b/packages/email/src/UpdatePersonalDataMail.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Text } from "./components/index.js"; export default function UpdatePersonalDataMail(props: Props) { const { baseurl, family_name, given_name, updatedFields } = props; diff --git a/packages/email/src/VerifyEmail.stories.tsx b/packages/email/src/VerifyEmail.stories.tsx index 6a11e6a45..910aa7325 100644 --- a/packages/email/src/VerifyEmail.stories.tsx +++ b/packages/email/src/VerifyEmail.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import VerifyEmail, { type Props } from "./VerifyEmail"; +import VerifyEmail, { type Props } from "./VerifyEmail.js"; // diff --git a/packages/email/src/VerifyEmail.tsx b/packages/email/src/VerifyEmail.tsx index fb88283bb..2155da264 100644 --- a/packages/email/src/VerifyEmail.tsx +++ b/packages/email/src/VerifyEmail.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Badge, Em, Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Badge, Em, Text } from "./components/index.js"; // diff --git a/packages/email/src/Welcome.stories.tsx b/packages/email/src/Welcome.stories.tsx index cc317fd9a..dee8c6e31 100644 --- a/packages/email/src/Welcome.stories.tsx +++ b/packages/email/src/Welcome.stories.tsx @@ -1,7 +1,7 @@ // import type { ComponentAnnotations, Renderer } from "@storybook/csf"; -import Welcome, { type Props } from "./Welcome"; +import Welcome, { type Props } from "./Welcome.js"; // diff --git a/packages/email/src/Welcome.tsx b/packages/email/src/Welcome.tsx index 1d6552263..9096f8621 100644 --- a/packages/email/src/Welcome.tsx +++ b/packages/email/src/Welcome.tsx @@ -1,7 +1,7 @@ // -import { Layout, type LayoutProps } from "./_layout"; -import { Em, Link, Text } from "./components"; +import { Layout, type LayoutProps } from "./_layout.js"; +import { Em, Link, Text } from "./components/index.js"; // diff --git a/packages/email/src/_layout.tsx b/packages/email/src/_layout.tsx index 806b0f1c1..e0d65b6d5 100644 --- a/packages/email/src/_layout.tsx +++ b/packages/email/src/_layout.tsx @@ -1,7 +1,7 @@ // import type { PropsWithChildren } from "@kitajs/html"; -import { Html, ProConnectLogo, Section, Text } from "./components"; +import { Html, ProConnectLogo, Section, Text } from "./components/index.js"; // diff --git a/packages/email/src/components/Badge.tsx b/packages/email/src/components/Badge.tsx index 26f183c0a..c47792cc7 100644 --- a/packages/email/src/components/Badge.tsx +++ b/packages/email/src/components/Badge.tsx @@ -1,7 +1,7 @@ // import type { PropsWithChildren } from "@kitajs/html"; -import { fontFamily, info_950 } from "./style"; +import { fontFamily, info_950 } from "./style.js"; // diff --git a/packages/email/src/components/Button.tsx b/packages/email/src/components/Button.tsx index 13f0045fe..54be75e53 100644 --- a/packages/email/src/components/Button.tsx +++ b/packages/email/src/components/Button.tsx @@ -1,7 +1,7 @@ // import type { PropsWithChildren } from "@kitajs/html"; -import { blueFranceSun_113, fontFamily } from "./style"; +import { blueFranceSun_113, fontFamily } from "./style.js"; // diff --git a/packages/email/src/components/Em.tsx b/packages/email/src/components/Em.tsx index 6e7fe227d..02cd626f8 100644 --- a/packages/email/src/components/Em.tsx +++ b/packages/email/src/components/Em.tsx @@ -1,7 +1,7 @@ // import type { PropsWithChildren } from "@kitajs/html"; -import { blueFranceSun_113, fontFamily } from "./style"; +import { blueFranceSun_113, fontFamily } from "./style.js"; // diff --git a/packages/email/src/components/Link.tsx b/packages/email/src/components/Link.tsx index d807c3d85..f24b80892 100644 --- a/packages/email/src/components/Link.tsx +++ b/packages/email/src/components/Link.tsx @@ -1,7 +1,7 @@ // import type { PropsWithChildren } from "@kitajs/html"; -import { fontFamily } from "./style"; +import { fontFamily } from "./style.js"; // diff --git a/packages/email/src/components/Text.tsx b/packages/email/src/components/Text.tsx index f222e52e5..b1fa29cee 100644 --- a/packages/email/src/components/Text.tsx +++ b/packages/email/src/components/Text.tsx @@ -1,7 +1,7 @@ // import type { PropsWithChildren } from "@kitajs/html"; -import { fontFamily } from "./style"; +import { fontFamily } from "./style.js"; // diff --git a/packages/email/src/components/index.ts b/packages/email/src/components/index.ts index de9e95bee..0b9d8da94 100644 --- a/packages/email/src/components/index.ts +++ b/packages/email/src/components/index.ts @@ -1,10 +1,10 @@ // -export * from "./Badge"; -export * from "./Button"; -export * from "./Em"; -export * from "./Html"; -export * from "./Link"; -export * from "./ProConnectLogo"; -export * from "./Section"; -export * from "./Text"; +export * from "./Badge.js"; +export * from "./Button.js"; +export * from "./Em.js"; +export * from "./Html.js"; +export * from "./Link.js"; +export * from "./ProConnectLogo.js"; +export * from "./Section.js"; +export * from "./Text.js"; diff --git a/packages/email/src/index.ts b/packages/email/src/index.ts index 573a7ed77..f944d7707 100644 --- a/packages/email/src/index.ts +++ b/packages/email/src/index.ts @@ -1,14 +1,14 @@ // -export { default as Add2fa } from "./Add2fa"; -export { default as AddAccessKey } from "./AddAccessKey"; -export { default as Delete2faProtection } from "./Delete2faProtection"; -export { default as DeleteAccessKey } from "./DeleteAccessKey"; -export { default as DeleteAccount } from "./DeleteAccount"; -export { default as DeleteFreeTotpMail } from "./DeleteFreeTotpMail"; -export { default as MagicLink } from "./MagicLink"; -export { default as OfficialContactEmailVerification } from "./OfficialContactEmailVerification"; -export { default as ResetPassword } from "./ResetPassword"; -export { default as UpdatePersonalDataMail } from "./UpdatePersonalDataMail"; -export { default as VerifyEmail } from "./VerifyEmail"; -export { default as Welcome } from "./Welcome"; +export { default as Add2fa } from "./Add2fa.js"; +export { default as AddAccessKey } from "./AddAccessKey.js"; +export { default as Delete2faProtection } from "./Delete2faProtection.js"; +export { default as DeleteAccessKey } from "./DeleteAccessKey.js"; +export { default as DeleteAccount } from "./DeleteAccount.js"; +export { default as DeleteFreeTotpMail } from "./DeleteFreeTotpMail.js"; +export { default as MagicLink } from "./MagicLink.js"; +export { default as OfficialContactEmailVerification } from "./OfficialContactEmailVerification.js"; +export { default as ResetPassword } from "./ResetPassword.js"; +export { default as UpdatePersonalDataMail } from "./UpdatePersonalDataMail.js"; +export { default as VerifyEmail } from "./VerifyEmail.js"; +export { default as Welcome } from "./Welcome.js"; diff --git a/packages/email/tsconfig.json b/packages/email/tsconfig.json index 511bc7994..6042e67a7 100644 --- a/packages/email/tsconfig.json +++ b/packages/email/tsconfig.json @@ -7,8 +7,8 @@ "jsx": "react-jsx", "jsxImportSource": "@kitajs/html", "lib": ["ES2023", "DOM"], - "module": "Preserve", - "moduleResolution": "Bundler", + "module": "NodeNext", + "moduleResolution": "NodeNext", "noEmitOnError": true, "plugins": [{ "name": "@kitajs/ts-html-plugin" }], "preserveSymlinks": true,