Currently, we globally enable both DOM and Node.js types. While this mostly works, it can cause conflicts - particularly with `fetch`. For example, TypeScript may incorrectly allow browser-only properties (like `cache`) and reject valid Node.js ones like `dispatcher`. This PR disables DOM types for server-only packages like payload, ensuring Node-specific typings are applied. This caught a few instances of incorrect fetch usage that were previously masked by overlapping DOM types. This is not a perfect solution - packages that contain both server and client code (like richtext-lexical or next) will still suffer from this issue. However, it's an improvement in cases where we can cleanly separate server and client types, like for the `payload` package which is server-only. ## Use-case This change enables https://github.com/payloadcms/payload/pull/12622 to explore using node-native fetch + `dispatcher`, instead of `node-fetch` + `agent`. Currently, it will incorrectly report that `dispatcher` is not a valid property for node-native fetch
95 lines
4.1 KiB
JSON
95 lines
4.1 KiB
JSON
{
|
|
"compilerOptions": {
|
|
/* Strictness */
|
|
"strict": true,
|
|
"noUncheckedIndexedAccess": true,
|
|
"noImplicitOverride": true,
|
|
"composite": true,
|
|
"declaration": true,
|
|
"declarationMap": true,
|
|
"target": "ES2022",
|
|
"rootDir": "${configDir}/src",
|
|
"module": "NodeNext",
|
|
"moduleResolution": "NodeNext",
|
|
"allowJs": true,
|
|
"checkJs": false,
|
|
"esModuleInterop": true,
|
|
"forceConsistentCasingInFileNames": true,
|
|
"jsx": "preserve",
|
|
"outDir": "${configDir}/dist",
|
|
"resolveJsonModule": true,
|
|
"skipLibCheck": true,
|
|
"emitDeclarationOnly": true,
|
|
"sourceMap": true,
|
|
"lib": ["DOM", "DOM.Iterable", "ES2022"],
|
|
"types": ["node", "jest"],
|
|
"incremental": true,
|
|
"isolatedModules": true,
|
|
"plugins": [
|
|
{
|
|
"name": "next"
|
|
}
|
|
],
|
|
"paths": {
|
|
"@payload-config": ["./test/_community/config.ts"],
|
|
"@payloadcms/admin-bar": ["./packages/admin-bar/src"],
|
|
"@payloadcms/live-preview": ["./packages/live-preview/src"],
|
|
"@payloadcms/live-preview-react": ["./packages/live-preview-react/src/index.ts"],
|
|
"@payloadcms/live-preview-vue": ["./packages/live-preview-vue/src/index.ts"],
|
|
"@payloadcms/ui": ["./packages/ui/src/exports/client/index.ts"],
|
|
"@payloadcms/ui/shared": ["./packages/ui/src/exports/shared/index.ts"],
|
|
"@payloadcms/ui/rsc": ["./packages/ui/src/exports/rsc/index.ts"],
|
|
"@payloadcms/ui/scss": ["./packages/ui/src/scss.scss"],
|
|
"@payloadcms/ui/scss/app.scss": ["./packages/ui/src/scss/app.scss"],
|
|
"@payloadcms/next/*": ["./packages/next/src/exports/*.ts"],
|
|
"@payloadcms/richtext-lexical/client": [
|
|
"./packages/richtext-lexical/src/exports/client/index.ts"
|
|
],
|
|
"@payloadcms/richtext-lexical/rsc": ["./packages/richtext-lexical/src/exports/server/rsc.ts"],
|
|
"@payloadcms/richtext-slate/rsc": ["./packages/richtext-slate/src/exports/server/rsc.ts"],
|
|
"@payloadcms/richtext-slate/client": [
|
|
"./packages/richtext-slate/src/exports/client/index.ts"
|
|
],
|
|
"@payloadcms/plugin-seo/client": ["./packages/plugin-seo/src/exports/client.ts"],
|
|
"@payloadcms/plugin-sentry/client": ["./packages/plugin-sentry/src/exports/client.ts"],
|
|
"@payloadcms/plugin-stripe/client": ["./packages/plugin-stripe/src/exports/client.ts"],
|
|
"@payloadcms/plugin-search/client": ["./packages/plugin-search/src/exports/client.ts"],
|
|
"@payloadcms/plugin-form-builder/client": [
|
|
"./packages/plugin-form-builder/src/exports/client.ts"
|
|
],
|
|
"@payloadcms/plugin-import-export/rsc": [
|
|
"./packages/plugin-import-export/src/exports/rsc.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant/rsc": ["./packages/plugin-multi-tenant/src/exports/rsc.ts"],
|
|
"@payloadcms/plugin-multi-tenant/utilities": [
|
|
"./packages/plugin-multi-tenant/src/exports/utilities.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant/fields": [
|
|
"./packages/plugin-multi-tenant/src/exports/fields.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant/client": [
|
|
"./packages/plugin-multi-tenant/src/exports/client.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant": ["./packages/plugin-multi-tenant/src/index.ts"],
|
|
"@payloadcms/plugin-multi-tenant/translations/languages/all": [
|
|
"./packages/plugin-multi-tenant/src/translations/index.ts"
|
|
],
|
|
"@payloadcms/plugin-multi-tenant/translations/languages/*": [
|
|
"./packages/plugin-multi-tenant/src/translations/languages/*.ts"
|
|
],
|
|
"@payloadcms/next": ["./packages/next/src/exports/*"],
|
|
"@payloadcms/storage-azure/client": ["./packages/storage-azure/src/exports/client.ts"],
|
|
"@payloadcms/storage-s3/client": ["./packages/storage-s3/src/exports/client.ts"],
|
|
"@payloadcms/storage-vercel-blob/client": [
|
|
"./packages/storage-vercel-blob/src/exports/client.ts"
|
|
],
|
|
"@payloadcms/storage-gcs/client": ["./packages/storage-gcs/src/exports/client.ts"],
|
|
"@payloadcms/storage-uploadthing/client": [
|
|
"./packages/storage-uploadthing/src/exports/client.ts"
|
|
]
|
|
}
|
|
},
|
|
"include": ["${configDir}/src"],
|
|
"exclude": ["${configDir}/dist", "${configDir}/build", "${configDir}/temp", "**/*.spec.ts"]
|
|
}
|