{
  "compilerOptions": {
    "target": "es2022",
    "lib": [
      "ES2022",
      "esnext",
      "dom"
    ],                   /* Specify a set of bundled library declaration files that describe the target runtime environment. */
    "experimentalDecorators": true,                   /* Enable experimental support for legacy experimental decorators. */
    "emitDecoratorMetadata": true,                    /* Emit design-type metadata for decorated declarations in source files. */
    "module": "ES2022",                                /* Specify what module code is generated. */
    "rootDir": "./",                                  /* Specify the root folder within your source files. */
    "moduleResolution": "node",                     /* Specify how TypeScript looks up a file from a given module specifier. */
    "baseUrl": "./",                                  /* Specify the base directory to resolve non-relative module names. */
    "paths": { "@/*": ["./src/*"] },                     /* Specify a set of entries that re-map imports to additional lookup locations. */
    "resolveJsonModule": true,                        /* Enable importing .json files. */
    "declaration": true,                              /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
    "declarationMap": true,                           /* Create sourcemaps for d.ts files. */
    "sourceMap": true,                                /* Create source map files for emitted JavaScript files. */
    "outDir": "./dist",                                   /* Specify an output folder for all emitted files. */
    "allowSyntheticDefaultImports": true,               /* Allow 'import x from y' when a module doesn't have a default export. */
    "esModuleInterop": true,                             /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */
    "forceConsistentCasingInFileNames": true,            /* Ensure that casing is correct in imports. */

    "strict": true,                                      /* Enable all strict type-checking options. */
    "strictPropertyInitialization": false,               /* Check for class properties that are declared but not set in the constructor. */
    "skipLibCheck": true                                 /* Skip type checking all .d.ts files. */
  },
  "ts-node": {
    "esm": true,
    "experimentalSpecifierResolution": "node",
  },
  "include": [
    "src/**/*",
    "test/**/*",
    "scripts/**/*",
    "./tsconfig.json",
    "./jest.config.ts",
    "./tsup.config.ts"
  ]
}
