{
  "$schema": "https://json.schemastore.org/tsconfig",
  "exclude": ["node_modules", "dist"],
  "include": ["**/*.ts", "**/*.tsx", "**/*.js"],
  // "include": [".eslintrc.cjs", "prettier.config.mjs"],
  "compilerOptions": {
    "lib": ["esnext", "dom", "dom.iterable"],
    "module": "esnext",
    "target": "esnext",
    "moduleResolution": "bundler",
    "moduleDetection": "force",
    "allowImportingTsExtensions": true,
    "resolveJsonModule": true,
    "verbatimModuleSyntax": true,
    "composite": false,
    "downlevelIteration": true,
    "jsx": "react-jsx",
    "jsxImportSource": "react",
    // "jsx": "react",
    // "jsxFactory": "Html.createElement",
    // "jsxFragmentFactory": "Html.Fragment",
    "allowJs": false,
    "checkJs": false,

    // "typeRoots": ["node_modules/@types", "**/node_modules/@types"],

    /* EMIT RULES */
    "outDir": "./dist",
    "noEmit": true, // TSUP takes care of emitting js for us, in a MUCH faster way
    "sourceMap": true,
    "declaration": false,
    // "declarationMap": true,
    // "removeComments": true,
    "isolatedModules": true,

    /* TYPE CHECKING RULES */
    "strict": true,
    "noImplicitAny": false, // 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"

    // ---- ASTRO STRICTEST ------
    // Report errors for fallthrough cases in switch statements
    "noFallthroughCasesInSwitch": true,
    // Force functions designed to override their parent class to be specified as `override`.
    "noImplicitOverride": true,
    // Force functions to specify that they can return `undefined` if a possible code path does not return a value.
    "noImplicitReturns": true,
    // Report an error when a variable is declared but never used.
    "noUnusedLocals": true,
    // Report an error when a parameter is declared but never used.
    "noUnusedParameters": true,
    // Force the usage of the indexed syntax to access fields declared using an index signature.
    "noUncheckedIndexedAccess": true,
    // Report an error when the value `undefined` is given to an optional property that doesn't specify `undefined` as a valid value.
    "exactOptionalPropertyTypes": true,
    // Report an error for unreachable code instead of just a warning.
    "allowUnreachableCode": false,
    // Report an error for unused labels instead of just a warning.
    "allowUnusedLabels": false,
    // Disallow JavaScript files from being imported
    // "allowJs": false

    // /* OTHER OPTIONS */
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    // // "emitDecoratorMetadata": true,
    // // "experimentalDecorators": true,
    "forceConsistentCasingInFileNames": true,
    "skipLibCheck": true
    // "useDefineForClassFields": true
  }
}
