{
  "compilerOptions": {
    "target": "es2016", // Specify ECMAScript target version to ES2016
    "module": "commonjs", // Specify module code generation
    "lib": ["es2016"], // Include ES2016 library features
    "outDir": "./dist", // Redirect output structure to the directory
    "rootDir": "./src", // Specify the root directory of input files
    "strict": true, // Enable all strict type-checking options
    "esModuleInterop": true, // Enables emit interoperability between CommonJS and ES Modules
    "skipLibCheck": true, // Skip type checking of all declaration files (*.d.ts)
    "forceConsistentCasingInFileNames": true, // Disallow inconsistently-cased references to the same file

    /* Module Resolution Options */
    "moduleResolution": "node", // Resolve modules using Node.js style
    "resolveJsonModule": true, // Include modules imported with '.json' extension
    "baseUrl": "./", // Base directory to resolve non-absolute module names
    "paths": {
      // A series of entries which re-map imports to lookup locations relative to the 'baseUrl'
      "*": ["node_modules/*"]
    },

    /* Source Map Options */
    "sourceMap": true, // Generates corresponding '.map' file

    /* Experimental Options */
    "experimentalDecorators": true, // Enables experimental support for ES decorators
    "emitDecoratorMetadata": true, // Enables experimental support for emitting type metadata for decorators

    /* Advanced Options */
    "declaration": true, // Generates corresponding '.d.ts' file
    "declarationMap": true, // Generates a sourcemap for each corresponding '.d.ts' file
    "importHelpers": true, // Import emit helpers from 'tslib'
    "noImplicitAny": true, // Raise error on expressions and declarations with an implied 'any' type
    "removeComments": false // Do not emit comments to output
  },
  "include": ["src/**/*"], // Include all files in the src directory
  "exclude": ["node_modules", "dist"] // Exclude node_modules and dist directories
}
