@sicoti/tsconfig 1.0.1 โ†’ 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,85 @@
1
+ # Changelog
2
+
3
+ ## [2.0.2](https://github.com/Yuzu02/SICOTI/compare/tsconfig-v2.0.1...tsconfig-v2.0.2) (2026-08-23)
4
+
5
+
6
+ ### ๐Ÿ› Bug Fixes
7
+
8
+ * **tsconfig:** ๐Ÿงช allow the package contract its declared runtime ([93b0733](https://github.com/Yuzu02/SICOTI/commit/93b0733c967d4e6263a34a9fa84cc8fd123c69cd))
9
+ * **tsconfig:** ๐Ÿงช allow the package contract its declared runtime ([f792ae3](https://github.com/Yuzu02/SICOTI/commit/f792ae358e3da638f1f4210bb865c31e8a322da4))
10
+
11
+ ## [2.0.1](https://github.com/Yuzu02/SICOTI/compare/tsconfig-v2.0.0...tsconfig-v2.0.1) (2026-08-23)
12
+
13
+
14
+ ### ๐Ÿ› Bug Fixes
15
+
16
+ * **release:** ๐Ÿงญ recover tsconfig publication workflow ([710de2d](https://github.com/Yuzu02/SICOTI/commit/710de2d4c3f9a47c1c4a11ddf8ceddf1ec89ae84))
17
+ * **release:** ๐Ÿงญ recover tsconfig publication workflow ([ab8a982](https://github.com/Yuzu02/SICOTI/commit/ab8a982f01509d1daef191cd6321089343b58bf7))
18
+
19
+ ## [2.0.0](https://github.com/Yuzu02/SICOTI/compare/tsconfig-v1.1.0...tsconfig-v2.0.0) (2026-08-23)
20
+
21
+
22
+ ### โš  BREAKING CHANGES
23
+
24
+ * **release:** @sicoti/tsconfig now targets TypeScript 6+ and models Node, Bun, Next.js, NestJS, and bundled React runtimes explicitly. TypeScript 5.9 and previous emit semantics are no longer supported.
25
+ * **tsconfig:** @sicoti/tsconfig now targets TypeScript 6+ and models Node, Bun, Next.js, NestJS, and bundled React runtimes explicitly. TypeScript 5.9 and previous emit semantics are no longer supported.
26
+
27
+ ### โœจ Features
28
+
29
+ * **ci:** โœจ Add release renaming functionality and update config schema ([9db7ca1](https://github.com/Yuzu02/SICOTI/commit/9db7ca1df27c2a1b4e8fe3b584a8825997e281e4))
30
+ * **monorepo:** :sparkles: Added Moon Worker and Obs internal package ([66c2f56](https://github.com/Yuzu02/SICOTI/commit/66c2f5609a7c9a92b65d933cb10716aeaa99b79f))
31
+ * **monorepo:** :sparkles: merge @sicoti/observability package + LGTM infra ([f617192](https://github.com/Yuzu02/SICOTI/commit/f617192a1f0341cec4f201e7004eed8b27b911d9))
32
+ * **monorepo:** โœจ add per-shell auth policy with MFA enforcement and signup gate ([b699dbb](https://github.com/Yuzu02/SICOTI/commit/b699dbbcea92f66804c2db734c378a09a3e020e0))
33
+ * **monorepo:** โœจ Implement 6 enhancement plans โ€” DDD modularization, strict TS, DTO factory, infra ([a72098f](https://github.com/Yuzu02/SICOTI/commit/a72098f039a99bc46deab0a5bbdbeb8375d661da))
34
+ * **monorepo:** ๐Ÿš€ Integrate enhancements branch ([952ef90](https://github.com/Yuzu02/SICOTI/commit/952ef906c4a5a8a65c0fd3bdd076d527e0d0299a))
35
+ * **tsconfig:** ๐Ÿงญ modernize shared TypeScript runtime presets ([37a0473](https://github.com/Yuzu02/SICOTI/commit/37a0473a43fa8fcc2ff3120a775b4f26fd626ecf))
36
+
37
+
38
+ ### ๐Ÿ› Bug Fixes
39
+
40
+ * **api:** ๐Ÿ› Add Redis reconnect strategy for Better Auth secondary storage ([ae7ba14](https://github.com/Yuzu02/SICOTI/commit/ae7ba14ea5e3acd22971ff55b7661cfa0d97100f))
41
+
42
+
43
+ ### ๐Ÿงช Tests
44
+
45
+ * **monorepo:** ๐Ÿงช Set up Vitest, Playwright and Supertest testing infrastructure ([c97fb7f](https://github.com/Yuzu02/SICOTI/commit/c97fb7fcbe1ad7034d490fee4c39c4c657e1fc19))
46
+
47
+
48
+ ### ๐Ÿ‘ท Continuous Integration
49
+
50
+ * **config:** :chart_with_upwards_trend: Enhanced the Release Please Config ([ac138b3](https://github.com/Yuzu02/SICOTI/commit/ac138b318ca0e6db25e5518655a4fae12f6064e9))
51
+
52
+
53
+ ### ๐Ÿ”ง Miscellaneous Chores
54
+
55
+ * **deps:** :arrow_up: Upgrade deps and resolve conflicts ([1be80fe](https://github.com/Yuzu02/SICOTI/commit/1be80fe3c05f9bf23c63ec5bb9a37fe7411a77d1))
56
+ * **monorepo:** :arrow_up: Standarize CLAUDE.md to AGENTS.md and complete bdni fichas internal review ([7a1ec0c](https://github.com/Yuzu02/SICOTI/commit/7a1ec0c4afe8be81b6ae72dd386ea9b3c2417663))
57
+ * **monorepo:** :wrench: align shared surfaces and tooling ([b6ee331](https://github.com/Yuzu02/SICOTI/commit/b6ee331ac936dc8e0ac02d99f065687b77e59c81))
58
+ * **monorepo:** โฌ†๏ธ modernize toolchain and dependency stack ([5599016](https://github.com/Yuzu02/SICOTI/commit/55990167dfc33f4cd932495004dfef301fcf36a9))
59
+ * **monorepo:** ๐Ÿงน align CI contracts and documentation ([c9efe57](https://github.com/Yuzu02/SICOTI/commit/c9efe5762247df9a9d2651d8d1effffba8e8a1b3))
60
+ * **release:** ๐Ÿ”€ reconcile squashed main history ([daf7213](https://github.com/Yuzu02/SICOTI/commit/daf721371a4c45d10e2ab5101b18945f15e9d70e))
61
+ * **release:** weekly merge dev โ†’ main (2026-W34) ([0e40fa7](https://github.com/Yuzu02/SICOTI/commit/0e40fa7120a50cbc2ebf6d1349557249e30cbe00))
62
+
63
+ ## [1.1.0](https://github.com/Yuzu02/SICOTI/compare/tsconfig-v1.0.1...tsconfig-v1.1.0) (2026-03-20)
64
+
65
+
66
+ ### โœจ Features
67
+
68
+ * **monorepo:** :loud_sound: Added LGTM stack for local test ([ee69776](https://github.com/Yuzu02/SICOTI/commit/ee697762d0926b7a95723417b49e2ad64f5ce277))
69
+
70
+
71
+ ### ๐Ÿ’„ Styles
72
+
73
+ * **docs:** :art: clean up formatting and remove unnecessary whitespace in documentation files ([6fd7622](https://github.com/Yuzu02/SICOTI/commit/6fd76223f6ebcf41c7cf7be02c3c57fd46e71880))
74
+ * **monorepo:** :art: Complete setup of the tsconfig package ([013f572](https://github.com/Yuzu02/SICOTI/commit/013f572f646ffd14cc3a1387ed5884740b17e636))
75
+
76
+
77
+ ### โ™ป๏ธ Code Refactoring
78
+
79
+ * **monorepo:** :recycle: Upgrade dependencies and introduce Either utility ([#254](https://github.com/Yuzu02/SICOTI/issues/254)) ([d48cf89](https://github.com/Yuzu02/SICOTI/commit/d48cf893b735bbcb151ccd385650e1ed8faaf21f))
80
+
81
+
82
+ ### ๐Ÿ”ง Miscellaneous Chores
83
+
84
+ * **monorepo:** :arrow_up: Update dependencies and improve configuration ([#252](https://github.com/Yuzu02/SICOTI/issues/252)) ([b1cf3ea](https://github.com/Yuzu02/SICOTI/commit/b1cf3ea194ca1dd4368eb8469ee936544bf1799d))
85
+ * **setup:** :wrench: Establish centralized TypeScript configurations ([4295d31](https://github.com/Yuzu02/SICOTI/commit/4295d3134e19684a369169c38f05fe6cf6a96d5d))
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 SICOTI
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 SICOTI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@sicoti/tsconfig.svg?style=flat-square)](https://www.npmjs.com/package/@sicoti/tsconfig)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/@sicoti/tsconfig.svg?style=flat-square)](https://www.npmjs.com/package/@sicoti/tsconfig)
5
- [![TypeScript](https://img.shields.io/badge/TypeScript-%3E%3D5.9-blue?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-6%20%7C%207-blue?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)
7
7
 
8
8
  > Centralized, shareable TypeScript configuration presets that enforce maximum type safety and best practices for modern JavaScript projects. Built for Next.js, NestJS, React libraries, and Bun with zero configuration.
@@ -15,7 +15,7 @@
15
15
  - [โšก Quick Start](#-quick-start)
16
16
  - [Next.js Applications](#nextjs-applications)
17
17
  - [NestJS Applications](#nestjs-applications)
18
- - [React Component Libraries](#react-component-libraries)
18
+ - [Bundled React Component Libraries](#bundled-react-component-libraries)
19
19
  - [Bun Packages & CLI Tools](#bun-packages--cli-tools)
20
20
  - [๐Ÿ“‹ Available Presets](#-available-presets)
21
21
  - [๐Ÿ”’ Strict Type Checking](#-strict-type-checking)
@@ -36,7 +36,7 @@
36
36
  ## โœจ Features
37
37
 
38
38
  - ๐Ÿ”’ **Maximum Type Safety** โ€” Strict mode plus additional safety checks beyond `strict: true`
39
- - ๐Ÿ“ฆ **Environment-Specific Presets** โ€” Optimized configs for Next.js, NestJS, React libraries, and Bun
39
+ - ๐Ÿ“ฆ **Environment-Specific Presets** โ€” Optimized configs for Next.js, NestJS, Node/shared libraries, React libraries, and Bun
40
40
  - ๐ŸŽฏ **Zero Configuration** โ€” Works out of the box with sensible defaults
41
41
  - ๐Ÿ”ง **Fully Extensible** โ€” Easy to override any setting for your specific needs
42
42
  - ๐Ÿ“š **Well Documented** โ€” Clear comments explaining every option
@@ -59,8 +59,8 @@ bun add -D @sicoti/tsconfig typescript
59
59
 
60
60
  ## ๐Ÿ” Requirements
61
61
 
62
- - **TypeScript**: `>= 5.9.0`
63
- - **Node.js**: `>= 18.0.0` (for full ES module support)
62
+ - **TypeScript**: `>= 6 < 8` (consumer fixtures are compiled with TypeScript 6 and TypeScript 7)
63
+ - **Node.js**: `>= 24.0.0`
64
64
  - **Package Manager**: npm, yarn, pnpm, or bun
65
65
 
66
66
  ## โšก Quick Start
@@ -73,7 +73,6 @@ Choose the preset that matches your project type and extend it in your `tsconfig
73
73
  {
74
74
  "extends": "@sicoti/tsconfig/nextjs.json",
75
75
  "compilerOptions": {
76
- "baseUrl": ".",
77
76
  "paths": {
78
77
  "@/*": ["./src/*"]
79
78
  }
@@ -90,7 +89,6 @@ Choose the preset that matches your project type and extend it in your `tsconfig
90
89
  "extends": "@sicoti/tsconfig/nestjs.json",
91
90
  "compilerOptions": {
92
91
  "outDir": "./dist",
93
- "baseUrl": ".",
94
92
  "paths": {
95
93
  "@/*": ["./src/*"]
96
94
  }
@@ -100,15 +98,17 @@ Choose the preset that matches your project type and extend it in your `tsconfig
100
98
  }
101
99
  ```
102
100
 
103
- ### React Component Libraries
101
+ ### Bundled React Component Libraries
102
+
103
+ `react-library.json` models source that is bundled before publication (for
104
+ example with tsdown, Rolldown, Vite library mode, or an equivalent build tool).
105
+ TypeScript typechecks the source while the bundler owns JavaScript and declaration
106
+ output.
104
107
 
105
108
  ```jsonc
106
109
  {
107
110
  "extends": "@sicoti/tsconfig/react-library.json",
108
111
  "compilerOptions": {
109
- "outDir": "./dist",
110
- "rootDir": "./src",
111
- "baseUrl": ".",
112
112
  "paths": {
113
113
  "@/*": ["./src/*"]
114
114
  }
@@ -124,9 +124,6 @@ Choose the preset that matches your project type and extend it in your `tsconfig
124
124
  {
125
125
  "extends": "@sicoti/tsconfig/bun.json",
126
126
  "compilerOptions": {
127
- "outDir": "./dist",
128
- "rootDir": "./src",
129
- "baseUrl": ".",
130
127
  "paths": {
131
128
  "@/*": ["./src/*"]
132
129
  }
@@ -136,14 +133,28 @@ Choose the preset that matches your project type and extend it in your `tsconfig
136
133
  }
137
134
  ```
138
135
 
136
+ ### Node / Shared Libraries
137
+
138
+ `node.json` models direct Node ESM execution with `NodeNext` resolution and
139
+ declaration emit. Relative ESM imports therefore use the runtime extension that
140
+ Node will execute (for example `./value.js` from TypeScript source):
141
+
142
+ ```jsonc
143
+ {
144
+ "extends": "@sicoti/tsconfig/node.json",
145
+ "include": ["src/**/*"]
146
+ }
147
+ ```
148
+
139
149
  ## ๐Ÿ“‹ Available Presets
140
150
 
141
151
  | Preset | Use Case | Key Features |
142
152
  | :------- | :--------- | :------------- |
143
153
  | `nextjs.json` | Next.js apps (App Router / Pages Router) | `jsx: preserve`, `noEmit`, Next.js plugin |
144
- | `nestjs.json` | NestJS backend applications | Decorator metadata, source maps, DI support |
145
- | `react-library.json` | React component libraries | `jsx: react-jsx`, declaration files, source maps |
146
- | `bun.json` | Bun runtime packages & CLI tools | Declaration files, optimized for Bun bundler |
154
+ | `nestjs.json` | NestJS backend applications executed by Node | `NodeNext`, decorator metadata, source maps, DI support |
155
+ | `node.json` | Node ESM packages/libraries that emit declarations | `NodeNext`, Node types, declaration + source-map emit |
156
+ | `react-library.json` | React libraries bundled before publication | `module: Preserve`, bundler resolution, `jsx: react-jsx`, `noEmit` |
157
+ | `bun.json` | Bun-native packages & CLI tools | `module: Preserve`, bundler resolution, `.ts` imports, `noEmit` |
147
158
  | `base.json` | โš ๏ธ Internal foundation (not for direct use) | Universal strict settings |
148
159
 
149
160
  ## ๐Ÿ”’ Strict Type Checking
@@ -173,11 +184,14 @@ All presets inherit from `base.json` which enables maximum type safety:
173
184
  | `noFallthroughCasesInSwitch` | Error on switch case fall-through |
174
185
  | `allowUnreachableCode` | Error on unreachable code |
175
186
  | `noUncheckedIndexedAccess` | Add `undefined` to index signature results |
176
- | `exactOptionalPropertyTypes` | Distinguish between `undefined` and missing |
177
187
  | `noPropertyAccessFromIndexSignature` | Require bracket notation for index access |
178
188
  | `noImplicitOverride` | Require 'override' keyword for overrides |
179
189
  | `noUncheckedSideEffectImports` | Validate side-effect imports exist |
180
190
 
191
+ `exactOptionalPropertyTypes` is deliberately `false` in the shared baseline for
192
+ the current NestJS/Prisma/React compatibility boundary. This does not relax
193
+ `strict`, `noUncheckedIndexedAccess`, or `noPropertyAccessFromIndexSignature`.
194
+
181
195
  ## ๐Ÿ’ก Why These Checks Matter
182
196
 
183
197
  ### `noUncheckedIndexedAccess`
@@ -301,9 +315,10 @@ function getValue(condition: boolean): string {
301
315
  ```mermaid
302
316
  flowchart TD
303
317
  base["base.json<br/>Foundation (DO NOT extend directly)<br/>Universal strict settings"] --> nextjs["nextjs.json<br/>Next.js applications<br/>jsx: preserve, noEmit, Next.js plugin"]
304
- base --> nestjs["nestjs.json<br/>NestJS applications<br/>Decorator metadata, source maps, DI support"]
305
- base --> bun["bun.json<br/>Bun runtime packages & CLI tools<br/>Declaration files, optimized for Bun bundler"]
306
- base --> reactlib["react-library.json<br/>React component libraries<br/>jsx: react-jsx, declaration files, source maps"]
318
+ base --> nestjs["nestjs.json<br/>NestJS on Node<br/>NodeNext, decorators, source maps"]
319
+ base --> node["node.json<br/>Direct Node ESM<br/>NodeNext, declaration emit"]
320
+ base --> bun["bun.json<br/>Bun-native runtime<br/>Preserve, bundler resolution, noEmit"]
321
+ base --> reactlib["react-library.json<br/>Bundled React libraries<br/>Preserve, bundler resolution, noEmit"]
307
322
  ```
308
323
 
309
324
  ### Design Philosophy
@@ -311,13 +326,14 @@ flowchart TD
311
326
  **`base.json` includes:**
312
327
 
313
328
  - Universal strict type checking settings
314
- - Modern ES module configuration
329
+ - Runtime-neutral module hygiene
315
330
  - Code quality checks (unused code, control flow)
316
331
  - Import safety validations
317
332
 
318
333
  **`base.json` intentionally excludes:**
319
334
 
320
335
  - `lib` (DOM, ESNext) โ€” Varies by runtime environment
336
+ - `target`, `module`, `moduleResolution` โ€” Must model the actual runtime/bundler
321
337
  - `jsx` settings โ€” Only for React-based projects
322
338
  - `sourceMap`, `declaration` โ€” Build output varies by project
323
339
  - `emitDecoratorMetadata` โ€” Only for NestJS/decorator-based DI
@@ -332,7 +348,6 @@ You can override any setting in your project's `tsconfig.json`:
332
348
  "compilerOptions": {
333
349
  // Override specific settings
334
350
  "noUncheckedIndexedAccess": false, // Disable if too strict for your codebase
335
- "baseUrl": ".",
336
351
  "paths": {
337
352
  "@/*": ["./src/*"],
338
353
  "@components/*": ["./src/components/*"]
package/base.json CHANGED
@@ -19,7 +19,8 @@
19
19
  * base.json
20
20
  * โ”œโ”€โ”€ nextjs.json โ†’ Next.js applications
21
21
  * โ”œโ”€โ”€ nestjs.json โ†’ NestJS backend applications
22
- * โ”œโ”€โ”€ bun.json โ†’ Bun runtime packages & CLI tools
22
+ * โ”œโ”€โ”€ node.json โ†’ Node.js / shared library packages (declaration emit)
23
+ * โ”œโ”€โ”€ bun.json โ†’ Bun native runtime (no emit, .ts imports)
23
24
  * โ””โ”€โ”€ react-library.json โ†’ React component libraries
24
25
  *
25
26
  * Reference: https://www.typescriptlang.org/tsconfig
@@ -48,6 +49,8 @@
48
49
  // โ”€โ”€โ”€ Unused Code Detection โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
49
50
  "noUnusedLocals": true, // Error on unused local variables
50
51
  "noUnusedParameters": true, // Error on unused function parameters
52
+ "allowUnusedLabels": false, // Error on unused labels
53
+
51
54
 
52
55
  // โ”€โ”€โ”€ Control Flow Analysis โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
53
56
  "noImplicitReturns": true, // Error when not all paths return a value
@@ -56,7 +59,7 @@
56
59
 
57
60
  // โ”€โ”€โ”€ Index Signature Safety โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
58
61
  "noUncheckedIndexedAccess": true, // Add undefined to index signature results
59
- "exactOptionalPropertyTypes": true, // Distinguish between undefined and missing
62
+ "exactOptionalPropertyTypes": false, // Distinguish between undefined and missing
60
63
  "noPropertyAccessFromIndexSignature": true, // Require bracket notation for index access
61
64
 
62
65
  // โ”€โ”€โ”€ Class & Override Safety โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
@@ -65,13 +68,13 @@
65
68
  // โ”€โ”€โ”€ Import Validation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
66
69
  "noUncheckedSideEffectImports": true, // Validate side-effect imports exist
67
70
 
71
+
68
72
  /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
69
- * MODULE SYSTEM (Universal Settings)
73
+ * MODULE HYGIENE (Runtime-neutral Settings)
74
+ * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
75
+ * target/module/moduleResolution intentionally belong to runtime presets.
70
76
  * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
71
- "target": "ESNext", // Emit modern JavaScript
72
- "module": "ESNext", // Use ES modules
73
- "moduleResolution": "bundler", // Modern bundler resolution (Vite, esbuild, etc.)
74
- "moduleDetection": "force", // Treat all files as modules
77
+ "moduleDetection": "force", // Treat all files as modules consistently
75
78
 
76
79
  // โ”€โ”€โ”€ Module Interoperability โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
77
80
  "esModuleInterop": true, // Enable CommonJS/ESM interop
@@ -82,8 +85,6 @@
82
85
  /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
83
86
  * CODE QUALITY & CONSISTENCY
84
87
  * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
85
- "forceConsistentCasingInFileNames": true, // Enforce consistent file name casing
86
- "allowImportingTsExtensions": false, // Disallow .ts/.tsx extensions in imports
87
- "verbatimModuleSyntax": false // Allow flexible import/export syntax
88
+ "forceConsistentCasingInFileNames": true // Enforce consistent file name casing
88
89
  }
89
90
  }
package/bun.json CHANGED
@@ -1,20 +1,24 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/tsconfig.json",
3
- "display": "Bun Runtime Configuration",
3
+ "display": "Bun Native Configuration",
4
4
  "extends": "./base.json",
5
5
 
6
6
  /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
7
- * @sicoti/tsconfig - Bun Preset
7
+ * @sicoti/tsconfig - Bun Native Preset
8
8
  * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
9
9
  *
10
- * Optimized for Bun runtime packages, CLI tools, and utilities.
10
+ * Optimized for packages that run natively on the Bun runtime (no transpilation).
11
11
  *
12
12
  * Key characteristics:
13
- * - Server-side only (no DOM libs)
14
- * - Declaration files for library consumers
15
- * - Optimized for Bun's native bundler
16
- * - Incremental builds for faster development
17
- * - Relaxed unused checks for library exports
13
+ * - No emit โ€” Bun runs TypeScript directly
14
+ * - allowImportingTsExtensions โ€” import .ts files directly
15
+ * - verbatimModuleSyntax โ€” enforce explicit type-only imports
16
+ * - Bun types for Bun-specific APIs
17
+ *
18
+ * Use this preset for:
19
+ * - CLI tools (packages/cli)
20
+ * - Playground / experimentation (packages/playground)
21
+ * - Any package that runs directly on Bun without bundling
18
22
  *
19
23
  * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
20
24
 
@@ -22,18 +26,24 @@
22
26
  /* โ”€โ”€โ”€ Runtime Environment โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
23
27
  "lib": ["ESNext"], // Server-side only, no DOM
24
28
  "target": "ESNext", // Bun supports latest ECMAScript
29
+ "types": ["bun"], // Bun-specific global types
30
+
31
+ /* โ”€โ”€โ”€ Module Settings โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
32
+ "module": "Preserve", // Let Bun handle module resolution
33
+ "moduleResolution": "bundler", // Bun resolves modules with bundler-like semantics
34
+ "moduleDetection": "force", // Match Bun's recommended TypeScript configuration
35
+ "allowImportingTsExtensions": true, // Import .ts files directly (Bun native)
36
+ "verbatimModuleSyntax": true, // Enforce explicit type-only imports
25
37
 
26
38
  /* โ”€โ”€โ”€ Output Settings โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
27
- "noEmit": false, // Emit compiled output
28
- "declaration": true, // Generate .d.ts for consumers
29
- "declarationMap": true, // Source maps for declarations
39
+ "noEmit": true, // Bun runs TypeScript directly, no transpilation needed
30
40
  "skipLibCheck": true, // Skip .d.ts checking for performance
31
- "incremental": true, // Faster rebuilds
32
- "tsBuildInfoFile": "./.cache/tsconfig.tsbuildinfo", // Keep build artifacts out of root
33
41
 
34
- /* โ”€โ”€โ”€ Relaxed Checks for Library Development โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
35
- // Libraries may export utilities that appear unused locally
42
+ /* โ”€โ”€โ”€ Relaxed Checks for Development โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
36
43
  "noUnusedLocals": false,
37
- "noUnusedParameters": false
44
+ "noUnusedParameters": false,
45
+ // Bun's SpawnOptions and other internal types use optional properties
46
+ // that conflict with exactOptionalPropertyTypes
47
+ "exactOptionalPropertyTypes": false
38
48
  }
39
49
  }
package/nestjs.json CHANGED
@@ -22,6 +22,12 @@
22
22
  /* โ”€โ”€โ”€ Runtime Environment โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
23
23
  "lib": ["ESNext"], // Server-side only, no DOM
24
24
  "target": "ESNext", // Modern Node.js supports latest features
25
+ "types": ["node"], // NestJS applications execute on Node by default
26
+
27
+ /* โ”€โ”€โ”€ Node Module Host โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
28
+ "module": "NodeNext", // Model direct Node ESM execution by default
29
+ "moduleResolution": "NodeNext", // Keep TypeScript resolution aligned with Node
30
+ "verbatimModuleSyntax": false, // Preserve Nest decorator/import interoperability
25
31
 
26
32
  /* โ”€โ”€โ”€ NestJS Decorator Support โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
27
33
  "emitDecoratorMetadata": true, // Required for NestJS dependency injection
@@ -42,6 +48,8 @@
42
48
  /* โ”€โ”€โ”€ Relaxed Checks for NestJS Patterns โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
43
49
  // NestJS decorators and DI patterns require these relaxations
44
50
  "strictBindCallApply": false,
45
- "noPropertyAccessFromIndexSignature": false
51
+ // NestJS and its ecosystem libraries (Prisma, Better Auth) don't handle
52
+ // exact optional properties well in DTOs, config objects, and decorators
53
+ "exactOptionalPropertyTypes": false
46
54
  }
47
55
  }
package/nextjs.json CHANGED
@@ -23,6 +23,11 @@
23
23
  "lib": ["DOM", "DOM.Iterable", "ESNext"], // Browser APIs + Modern JavaScript
24
24
  "target": "ES2017", // Compatibility target for older browsers
25
25
 
26
+ /* โ”€โ”€โ”€ Framework Module Host โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
27
+ "module": "ESNext", // Next.js owns ESM transformation
28
+ "moduleResolution": "bundler", // Turbopack/SWC resolve bundler-style imports
29
+ "moduleDetection": "force", // Treat every source file as a module
30
+
26
31
  /* โ”€โ”€โ”€ JSX Handling โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
27
32
  "jsx": "preserve", // Let Next.js/SWC handle JSX transformation
28
33
  "allowJs": true, // Allow JavaScript files in the project
@@ -41,7 +46,8 @@
41
46
  ],
42
47
 
43
48
  /* โ”€โ”€โ”€ Relaxed Checks for Next.js Patterns โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
44
- // Allow dot notation for dynamic route params and config objects
45
- "noPropertyAccessFromIndexSignature": false
49
+ // Next.js internal types and third-party React libraries don't handle
50
+ // exact optional properties well (e.g., component props with optional fields)
51
+ "exactOptionalPropertyTypes": false
46
52
  }
47
53
  }
package/node.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig.json",
3
+ "display": "Node.js / Library Configuration",
4
+ "extends": "./base.json",
5
+
6
+ /* โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
7
+ * @sicoti/tsconfig - Node.js / Library Preset
8
+ * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
9
+ *
10
+ * Optimized for Node.js ESM packages and libraries that execute directly under Node.
11
+ *
12
+ * Key characteristics:
13
+ * - Server-side only (no DOM libs)
14
+ * - Declaration files for library consumers
15
+ * - Incremental builds for faster development
16
+ * - Relaxed unused checks for library exports
17
+ *
18
+ * Use this preset for:
19
+ * - Shared packages (packages/shared)
20
+ * - Root tsconfig (editor support)
21
+ * - Any package that emits .d.ts files
22
+ *
23
+ * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
24
+
25
+ "compilerOptions": {
26
+ /* โ”€โ”€โ”€ Runtime Environment โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
27
+ "lib": ["ESNext"], // Server-side only, no DOM
28
+ "target": "ESNext", // Modern runtime supports latest ECMAScript
29
+ "types": ["node"], // Node globals and built-in modules
30
+
31
+ /* โ”€โ”€โ”€ Node Module Host โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
32
+ "module": "NodeNext", // Match the module format selected by Node/package.json
33
+ "moduleResolution": "NodeNext", // Reject imports that Node itself cannot resolve
34
+
35
+ /* โ”€โ”€โ”€ Output Settings โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
36
+ "noEmit": false, // Emit compiled output
37
+ "declaration": true, // Generate .d.ts for consumers
38
+ "declarationMap": true, // Source maps for declarations
39
+ "sourceMap": true, // Source maps for emitted JavaScript
40
+ "skipLibCheck": true, // Skip .d.ts checking for performance
41
+ "incremental": true, // Faster rebuilds
42
+ "tsBuildInfoFile": "./.cache/tsconfig.tsbuildinfo", // Keep build artifacts out of root
43
+
44
+ /* โ”€โ”€โ”€ Relaxed Checks for Library Development โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
45
+ // Libraries may export utilities that appear unused locally
46
+ "noUnusedLocals": false,
47
+ "noUnusedParameters": false
48
+ }
49
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://www.schemastore.org/package.json",
3
3
  "name": "@sicoti/tsconfig",
4
- "version": "1.0.1",
4
+ "version": "2.0.2",
5
5
  "description": "Centralized, shareable TypeScript configuration presets for monorepos and multi-project setups โ€” provides consistent, battle-tested tsconfig bases (Base, Next.js, React libraries, Bun, NestJS) to reduce duplication, enforce best practices, and simplify upgrades.",
6
6
  "type": "module",
7
7
  "author": "SICOTI Team <dev@sicoti.org>",
@@ -26,7 +26,7 @@
26
26
  "bun": ">=1.3.0"
27
27
  },
28
28
  "peerDependencies": {
29
- "typescript": ">=5.9.0 <6"
29
+ "typescript": ">=6 <8"
30
30
  },
31
31
  "keywords": [
32
32
  "typescript",
@@ -41,6 +41,7 @@
41
41
  "nextjs.json",
42
42
  "react-library.json",
43
43
  "bun.json",
44
+ "node.json",
44
45
  "nestjs.json",
45
46
  "CHANGELOG.md",
46
47
  "README.md",
@@ -51,6 +52,7 @@
51
52
  "./nextjs.json": "./nextjs.json",
52
53
  "./react-library.json": "./react-library.json",
53
54
  "./bun.json": "./bun.json",
55
+ "./node.json": "./node.json",
54
56
  "./nestjs.json": "./nestjs.json"
55
57
  },
56
58
  "publishConfig": {
@@ -58,8 +60,6 @@
58
60
  },
59
61
  "scripts": {
60
62
  "pack": "bun pm pack",
61
- "publish:dry": "bun publish --dry-run",
62
- "publish": "bun publish --access public",
63
- "release": "bun run pack && bun publish --access public"
63
+ "publish:dry": "bun publish --dry-run"
64
64
  }
65
65
  }
@@ -7,12 +7,13 @@
7
7
  * @sicoti/tsconfig - React Library Preset
8
8
  * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
9
9
  *
10
- * Optimized for React component libraries consumed by other applications.
10
+ * Optimized for React component libraries bundled before publication.
11
11
  *
12
12
  * Key characteristics:
13
13
  * - Browser APIs (DOM libs) for component development
14
14
  * - React 17+ JSX runtime (automatic import)
15
- * - Declaration files & source maps for consumers
15
+ * - Bundler-native module resolution for source code
16
+ * - No tsc emit; the library build tool owns JavaScript/declaration output
16
17
  * - Relaxed unused checks for flexible component exports
17
18
  *
18
19
  * โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ• */
@@ -22,13 +23,16 @@
22
23
  "lib": ["DOM", "DOM.Iterable", "ESNext"], // Browser APIs + Modern JavaScript
23
24
  "target": "ESNext", // Modern bundlers handle transpilation
24
25
 
26
+ /* โ”€โ”€โ”€ Bundled Library Module Host โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
27
+ "module": "Preserve", // Preserve source module syntax for the library bundler
28
+ "moduleResolution": "bundler", // Model the bundler that creates the published artifact
29
+ "moduleDetection": "force",
30
+
25
31
  /* โ”€โ”€โ”€ JSX Handling โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
26
32
  "jsx": "react-jsx", // New React 17+ JSX transform
27
33
 
28
34
  /* โ”€โ”€โ”€ Output Settings โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ */
29
- "noEmit": false, // Emit compiled output
30
- "declaration": true, // Generate .d.ts for consumers
31
- "declarationMap": true, // Source maps for declarations
35
+ "noEmit": true, // tsdown/another build tool owns JS and declaration generation
32
36
  "skipLibCheck": true, // Skip .d.ts checking for performance
33
37
  "incremental": true, // Faster rebuilds
34
38
  "tsBuildInfoFile": "./.cache/tsconfig.tsbuildinfo", // Keep build artifacts out of root
@@ -37,6 +41,8 @@
37
41
  // Libraries may export components that appear unused locally
38
42
  "noUnusedLocals": false,
39
43
  "noUnusedParameters": false,
40
- "noPropertyAccessFromIndexSignature": false
44
+ // React component props with optional fields and third-party UI libraries
45
+ // don't handle exact optional properties well
46
+ "exactOptionalPropertyTypes": false
41
47
  }
42
48
  }