{
    "compilerOptions": {
        // Just have a build folder be the output folder by default
        "outDir": "build",

        // Fuck JS
        "allowJs": false,
        // sets allowSyntheticDefaultImports
        "esModuleInterop": true,
        // Check d.ts types
        "skipLibCheck": false,

        "target": "esnext",
        "module": "esnext",
        /* 
         * Decorators are rolled into esnext
         * dom/dom-iterable are generated by ts
         */
        "lib": ["esnext", "ESNext.Iterator", "dom", "dom.iterable"],
        
        // "bundler" basically lets you omit file types
        "moduleResolution": "bundler",
        // Other bundler-related settings.
        "sourceMap": true,
        "declaration": true,
        "emitDeclarationOnly": true,

        "moduleDetection": "force",
        "strict": true,

        // These are nice but annoying when writing code.
        "noUnusedLocals": false,
        "allowUnusedLabels": true,
        "noUnusedParameters": false,

        "resolveJsonModule": true,
        "verbatimModuleSyntax": true,
        "useDefineForClassFields": true,
        "noUncheckedIndexedAccess": true,
        "noFallthroughCasesInSwitch": true,
        "noUncheckedSideEffectImports": true,
        "types": ["bun"]
    }
}