{ "include": [".eslintrc.cjs", ".prettierrc.cjs"], "compilerOptions": { /* LANGUAGE COMPILATION OPTIONS */ "target": "ES2020", "lib": ["DOM", "DOM.Iterable", "ES2020"], "module": "Node16", "moduleResolution": "nodenext", "resolveJsonModule": true, "allowJs": true, "checkJs": true, /* EMIT RULES */ "outDir": "./dist", "noEmit": true, // TSUP takes care of emitting js for us, in a MUCH faster way "declaration": true, "declarationMap": true, "sourceMap": true, "removeComments": true, /* TYPE CHECKING RULES */ "strict": true, // "noImplicitAny": true, // Included in "Strict" // "noImplicitThis": true, // Included in "Strict" // "strictBindCallApply": true, // Included in "Strict" // "strictFunctionTypes": true, // Included in "Strict" // "strictNullChecks": true, // Included in "Strict" // "strictPropertyInitialization": true, // Included in "Strict" "noFallthroughCasesInSwitch": true, "noImplicitOverride": true, "noImplicitReturns": true, "noUnusedLocals": true, "noUnusedParameters": true, "useUnknownInCatchVariables": true, "noUncheckedIndexedAccess": true, // TLDR - Checking an indexed value (array[0]) now forces type as there is no confirmation that index exists // THE BELOW ARE EXTRA STRICT OPTIONS THAT SHOULD ONLY BY CONSIDERED IN VERY SAFE PROJECTS // "exactOptionalPropertyTypes": true, // TLDR - Setting to undefined is not the same as a property not being defined at all // "noPropertyAccessFromIndexSignature": true, // TLDR - Use dot notation for objects if youre sure it exists, use ['index'] notaion if unsure /* OTHER OPTIONS */ "allowSyntheticDefaultImports": true, "esModuleInterop": true, // "emitDecoratorMetadata": true, // "experimentalDecorators": true, "forceConsistentCasingInFileNames": true, "skipLibCheck": true, "useDefineForClassFields": true } }