export declare const TSCONFIG_MD = "# TypeScript Configuration Guide\n\nThis package provides reusable TypeScript configurations for different project types.\n\n## Requirements\n\n- **TypeScript 6.0+** required\n- Modern bundler (tsup, vite, esbuild)\n\n## Quick Selection\n\n| Project Type | Monorepo? | Config |\n| ------------------------- | --------- | ----------------------------- |\n| Next.js app | Any | `nextjs.json` |\n| React + Vite app | Any | `base.json` |\n| React library | Yes | `shared-react-library.json` |\n| React library | No | `react-library.json` |\n| Node.js library | Yes | `shared-library.json` |\n| Node.js library | No | `library.json` |\n| Backend service (Node.js) | Any | `service.json` |\n| Backend service (Workers) | Any | `service-worker.json` |\n| Pulumi / IaC | Any | `infra-pulumi.json` |\n| Node.js CLI | Any | `base.json` or `service.json` |\n| E2E tests | Any | `base.json` |\n\n## Configuration Descriptions\n\n### `base.json`\n\n**For:** CLI tools, tests, build scripts, React apps (Vite, CRA)\n\n**Features:**\n\n- Strict typing by default\n- `src/` \u2192 `dist/` structure\n- Explicit configuration (all options specified)\n\n**Example:**\n\n```json\n{\n \"extends\": \"@shibanet0/datamitsu-config/tsconfig/base.json\"\n}\n```\n\n---\n\n### `library.json`\n\n**For:** Standalone npm package (NOT in monorepo)\n\n**Adds:** `noEmit: true` - bundler handles all output\n\n**Example:** Standalone npm utility package\n\n---\n\n### `react-library.json`\n\n**For:** Standalone React library (NOT in monorepo)\n\n**Adds:**\n\n- DOM types\n- JSX support\n- `noEmit: true`\n\n**\u26A0\uFE0F WARNING:** DO NOT use for Node.js projects! Adds DOM types that don't exist in Node.js.\n\n---\n\n### `service.json`\n\n**For:** Backend APIs, serverless functions, microservices \u2014 running on **Node.js**\n\n**Adds:**\n\n- `types: [\"node\"]`\n- `noEmit: true`\n\n**Example:** Express API, AWS Lambda\n\n**Note:** For the Cloudflare Workers runtime use `service-worker.json` instead \u2014 it swaps Node types for Workers types.\n\n---\n\n### `service-worker.json`\n\n**For:** Backend services on the **Cloudflare Workers** runtime\n\n**Adds:**\n\n- `types: [\"@cloudflare/workers-types\"]`\n- `noEmit: true`\n\n**Note:** Add `@cloudflare/workers-types` as a dev dependency. For Node.js services use `service.json`.\n\n---\n\n### `shared-library.json`\n\n**For:** Library INSIDE a monorepo\n\n**Adds:**\n\n- `composite: true` - project references\n- `declaration: true` - emits .d.ts\n- `declarationMap: true`\n\n**Why NOT noEmit:** Project references require TypeScript to emit declarations for IDE \"go to definition\".\n\n---\n\n### `shared-react-library.json`\n\n**For:** React library INSIDE a monorepo\n\n**Adds:**\n\n- DOM types + JSX\n- `composite: true`\n- Declaration emit\n\n---\n\n### `nextjs.json`\n\n**For:** Next.js apps (Pages/App Router)\n\n**Features:**\n\n- `jsx: \"preserve\"` - Next.js transforms itself\n- `noEmit: true`\n- Next.js plugin\n\n---\n\n### `infra-pulumi.json`\n\n**For:** [Pulumi](https://www.pulumi.com/) Infrastructure-as-Code projects\n\n**Standalone preset** \u2014 does **NOT** extend `base.json`. Pulumi runs TypeScript through its own ts-node runtime (full transpile), which is incompatible with the base preset's `verbatimModuleSyntax`, `module: \"preserve\"`, and erasable-only constraints.\n\n**Adds / differs:**\n\n- `experimentalDecorators: true` \u2014 Pulumi component resources use decorators\n- `module: \"esnext\"`, `sourceMap: true`, `noEmit: true`\n- `types: [\"node\"]`\n- `allowImportingTsExtensions: true` \u2014 import sibling modules with an explicit `.ts`\n\n**\u26A0\uFE0F The erasable-only rule does NOT apply here.** Because Pulumi _compiles_ the code (rather than stripping types), non-erasable syntax (`enum`, decorators, etc.) is legal in Pulumi code \u2014 and **only** in Pulumi code. Every other preset in this family forbids it.\n\n---\n\n## Common Mistakes\n\n### \u274C react-library for Node.js projects\n\n```json\n// WRONG for Node.js API\n{\n \"extends\": \"@shibanet0/datamitsu-config/tsconfig/react-library.json\"\n}\n```\n\n**Problem:** Adds DOM types (`document`, `window`) to Node.js environment.\n\n**Solution:** Use `service.json`\n\n---\n\n### \u274C library instead of shared-library in monorepo\n\n```json\n// WRONG in monorepo\n{\n \"extends\": \"@shibanet0/datamitsu-config/tsconfig/library.json\"\n}\n```\n\n**Problem:** `noEmit: true` disables declaration emit, IDE can't \"go to definition\".\n\n**Solution:** Use `shared-library.json`\n\n---\n\n### \u274C Forgot explicit types after TS6\n\n**Problem:**\n\n```typescript\nimport { readFile } from \"node:fs/promises\";\n// Error: Cannot find module 'node:fs/promises'\n```\n\n**Solution:**\n\n```json\n{\n \"extends\": \"@shibanet0/datamitsu-config/tsconfig/service.json\",\n \"compilerOptions\": {\n \"types\": [\"node\"]\n }\n}\n```\n\n---\n\n## Path Aliases\n\n**These configurations DO NOT include path aliases (`~/*`, `@/*`).**\n\n**Why?**\n\n- Require duplication in tsconfig, bundler, jest, eslint\n- Problems when publishing libraries\n- Different syntax across tools\n\n**Use relative paths:**\n\n```typescript\nimport { helper } from \"../../utils/helper\";\n```\n\n**Benefits:**\n\n- Work everywhere without configuration\n- ES modules standard\n- IDE auto-updates\n\n---\n\n## Philosophy\n\n**Bundler-centric approach:**\n\n- TypeScript only for type checking\n- Bundler handles compilation, sourcemaps, declarations\n- Exception: monorepo `shared-*` configs emit declarations for project references\n\n**Explicit configuration:**\n\n- All options specified explicitly, even if they're TS6 defaults\n- No magic, maximum compatibility\n- \"Just works\" everywhere\n\n---\n\n## Migration to TS6\n\n**TypeScript 6.0+ required:**\n\n```bash\npnpm add -D typescript@latest\n```\n\n**Add explicit types:**\n\n```json\n{\n \"extends\": \"@shibanet0/datamitsu-config/tsconfig/service.json\",\n \"compilerOptions\": {\n \"types\": [\"node\"]\n }\n}\n```\n\n**Check types:**\n\n```bash\ntsc --noEmit\n```\n\n---\n\n## Based on\n\n[@codecompose/typescript-config](https://github.com/0x80/typescript-config/commit/58337f95dea59ca25031ffa55a593bda5c78b882) by 0x80."; export declare const TSCONFIG_MD_HASH = "1cf0bf81b69fc29c4f63362043bc228940e1a327268c651a05893baec7931994";