@visulima/tsconfig 3.0.0-alpha.9 → 3.0.0

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 CHANGED
@@ -1,3 +1,368 @@
1
+ ## @visulima/tsconfig [3.0.0](https://github.com/visulima/visulima/compare/@visulima/tsconfig@2.1.3...@visulima/tsconfig@3.0.0) (2026-07-03)
2
+
3
+ ### ⚠ BREAKING CHANGES
4
+
5
+ * change min node version to 22.13
6
+
7
+ ### Features
8
+
9
+ * **tsconfig:** clear lint findings in tsc helper ([d9a99bc](https://github.com/visulima/visulima/commit/d9a99bc860e26bcdcdda8cf2e98528a746c3b05a))
10
+ * **tsconfig:** typescript-version-aware compiler defaults ([1a4236b](https://github.com/visulima/visulima/commit/1a4236bfe0dabb769a88a052a1c9e7511daf6e6d))
11
+ * **web:** auto-generate packages page from workspace metadata ([623e520](https://github.com/visulima/visulima/commit/623e5207693a7fe720f5f2f179593a3654c880e3))
12
+
13
+ ### Bug Fixes
14
+
15
+ * add new package image, fixed readme rendering on npm, fixed building of packages ([b790ba2](https://github.com/visulima/visulima/commit/b790ba253ea07fef83528fd822a678facf021b5f))
16
+ * Remove JSR configuration generation script and generated jsr.json files ([#616](https://github.com/visulima/visulima/issues/616)) ([533744b](https://github.com/visulima/visulima/commit/533744b103b74896941db5b727173e617a27a63b))
17
+ * **storage-client:** percent-encode user fields in defaultFingerprint ([7c78a0f](https://github.com/visulima/visulima/commit/7c78a0f9512e2a673b941d80839e9f1e86b7b5d0))
18
+ * **tooling:** resolve eslint and formatting issues ([399d292](https://github.com/visulima/visulima/commit/399d29282be5b29bb26b4e5b24d45e2a6cdeeca3))
19
+ * **tsconfig:** 2 bug fixes ([efc52ce](https://github.com/visulima/visulima/commit/efc52ce63e5cbe9a3b18a98c5cba2886deec6404))
20
+ * **tsconfig:** add node types and fix implicit any parameter ([1744d82](https://github.com/visulima/visulima/commit/1744d82a07fca03f2e6ff660b918e9b2623acf69))
21
+ * **tsconfig:** add TypeScript 6.0 compatibility for implicit compiler defaults ([19de98f](https://github.com/visulima/visulima/commit/19de98f2640c143c6f5e84eda214c84584cf980c))
22
+ * **tsconfig:** align parsing with get-tsconfig for files/include, path inheritance, and TS 6.0 ([0c9d4be](https://github.com/visulima/visulima/commit/0c9d4be347f6ee4212dbe98026a7cd1d465bc2de))
23
+ * **tsconfig:** correct docs, pnp issuer, cache invalidation ([c3e0b9d](https://github.com/visulima/visulima/commit/c3e0b9d4281ee78f70780192fdf1d51b22bb2e9a))
24
+ * **tsconfig:** properly fix eslint errors in code ([95a2142](https://github.com/visulima/visulima/commit/95a2142f816f9ae0d50caaf235a71f9d03ab71cf))
25
+ * **tsconfig:** relax no-unsafe-* for tests and untyped external deps ([1e63952](https://github.com/visulima/visulima/commit/1e63952c41ff76e450ba4ca5aba6ddf7229c65b3))
26
+ * **tsconfig:** remove remaining eslint suppressions with proper code fixes ([57a45bb](https://github.com/visulima/visulima/commit/57a45bbc4e00e1c688a12367dc734c1553a17a6a))
27
+ * **tsconfig:** resolve eslint errors ([5848320](https://github.com/visulima/visulima/commit/5848320dc88a6080cf507eda724f57f9a6800434))
28
+ * **tsconfig:** suppress sonarjs/deprecation for baseUrl handling ([431ae96](https://github.com/visulima/visulima/commit/431ae96bdd025a052bde8291918b1593f972efa1))
29
+ * **tsconfig:** update package files ([f1bb598](https://github.com/visulima/visulima/commit/f1bb5982e370fac9caffd76a73645e51c6ab1704))
30
+ * **tsconfig:** update packem to 2.0.0-alpha.54 ([2f9b2ae](https://github.com/visulima/visulima/commit/2f9b2aea84a455f65ec6d682231876d5c5070159))
31
+ * **tsconfig:** use workspace:* for internal [@visulima](https://github.com/visulima) deps ([420ce4a](https://github.com/visulima/visulima/commit/420ce4a0c075f78520fb9434ea83c9b6e301b571))
32
+ * update Node.js engine version requirement to >=22.13 in multiple package.json files for improved compatibility ([b828e9a](https://github.com/visulima/visulima/commit/b828e9aeaebfc798eecddccd90e6ec7560c6d36a))
33
+ * update package OG images across multiple packages ([f08e4dd](https://github.com/visulima/visulima/commit/f08e4dd2b105ccb29c8412020a9c2be36d6c1e9e))
34
+ * **web:** improve build setup with incremental stats caching and prod install ([fe33e75](https://github.com/visulima/visulima/commit/fe33e75827586779b4b3a0c6d57b39f889ee6207))
35
+
36
+ ### Documentation
37
+
38
+ * **humanizer,html,iso-locale,package,tsconfig:** add comprehensive Fumadocs documentation ([19781ce](https://github.com/visulima/visulima/commit/19781ce5d27605971a9f2fdf0a99863effd98091))
39
+ * **tsconfig:** fix stale API reference ([514b1b0](https://github.com/visulima/visulima/commit/514b1b0a6ae8e2533162afcc39ad541762ea92e2))
40
+
41
+ ### Miscellaneous Chores
42
+
43
+ * add fallow code-intelligence across all packages ([a3b4821](https://github.com/visulima/visulima/commit/a3b48215002e86fed20f2973038b5d4a0aa1ce04))
44
+ * added missing version key ([3b55253](https://github.com/visulima/visulima/commit/3b55253728af652a0bcaf230d93d2f9e9f2d8806))
45
+ * bump engines.node to ^22.14.0 || >=24.10.0 ([c3d0931](https://github.com/visulima/visulima/commit/c3d0931d1504e4f21ebf50ea680cfa7ce4ba15ce))
46
+ * **ci-stability:** green CI across vis, native, lint, tests, attw ([#651](https://github.com/visulima/visulima/issues/651)) ([d4eb684](https://github.com/visulima/visulima/commit/d4eb684b5f75c818c9251048c605a0ed54a268e3))
47
+ * fixed jsr.json ([5d85e51](https://github.com/visulima/visulima/commit/5d85e5179de38e284ec433b14d77c71a1619c8d6))
48
+ * fixed project.json names and schema path ([964722f](https://github.com/visulima/visulima/commit/964722f691db205c7edb9aa6db29e849a647500b))
49
+ * jsr.json update and lock file ([73fce38](https://github.com/visulima/visulima/commit/73fce38c7cb4603f3fffb88609b1b18e2feb4937))
50
+ * moved all packages into groups ([0615e9d](https://github.com/visulima/visulima/commit/0615e9d14a8a886e11da529ce150cf31ca973c10))
51
+ * re-sort workspace package.json files via vis sort-package-json ([f625696](https://github.com/visulima/visulima/commit/f625696cfac974325774b3243e1a83c3d23acbd7))
52
+ * **release:** @visulima/tsconfig@3.0.0-alpha.1 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.1](https://github.com/visulima/visulima/compare/@visulima/tsconfig@2.1.3...@visulima/tsconfig@3.0.0-alpha.1) (2025-12-07) ([ee80cd6](https://github.com/visulima/visulima/commit/ee80cd6bbdf737e3e56c9e8880a76f651d2561b3))
53
+ * **release:** @visulima/tsconfig@3.0.0-alpha.10 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.10](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.9...@visulima/tsconfig@3.0.0-alpha.10) (2026-04-21) ([5756160](https://github.com/visulima/visulima/commit/5756160d64e1334643a3d5b8a26b9873a0fb2e3b))
54
+ * **release:** @visulima/tsconfig@3.0.0-alpha.11 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.11](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.10...@visulima/tsconfig@3.0.0-alpha.11) (2026-04-22) ([81ce1aa](https://github.com/visulima/visulima/commit/81ce1aace28fdc15055c9389163e8efc94587ce4))
55
+ * **release:** @visulima/tsconfig@3.0.0-alpha.12 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.12](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.11...@visulima/tsconfig@3.0.0-alpha.12) (2026-04-30) ([4aa0b9f](https://github.com/visulima/visulima/commit/4aa0b9f2a75a869d48f867a1f319c24c0dc76c40))
56
+ * **release:** @visulima/tsconfig@3.0.0-alpha.13 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.13](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.12...@visulima/tsconfig@3.0.0-alpha.13) (2026-05-04) ([3ef4ab8](https://github.com/visulima/visulima/commit/3ef4ab818b46572956c636fd2b23eb7d1b383808))
57
+ * **release:** @visulima/tsconfig@3.0.0-alpha.14 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.14](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.13...@visulima/tsconfig@3.0.0-alpha.14) (2026-05-06) ([9534834](https://github.com/visulima/visulima/commit/9534834c35c6e4e02277e1d2f0f838d13f4d9619))
58
+ * **release:** @visulima/tsconfig@3.0.0-alpha.15 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.15](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.14...@visulima/tsconfig@3.0.0-alpha.15) (2026-05-06) ([9c7850a](https://github.com/visulima/visulima/commit/9c7850ab538c2997380121304ab0d2541edd442d))
59
+ * **release:** @visulima/tsconfig@3.0.0-alpha.16 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.16](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.15...@visulima/tsconfig@3.0.0-alpha.16) (2026-05-07) ([401e2e6](https://github.com/visulima/visulima/commit/401e2e69b2dc8d367f7b7bac418ffb2609ac9fd8))
60
+ * **release:** @visulima/tsconfig@3.0.0-alpha.17 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.17](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.16...@visulima/tsconfig@3.0.0-alpha.17) (2026-05-07) ([4e5110d](https://github.com/visulima/visulima/commit/4e5110da487f8bc1acd81436f3a0def9bf141592))
61
+ * **release:** @visulima/tsconfig@3.0.0-alpha.18 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.18](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.17...@visulima/tsconfig@3.0.0-alpha.18) (2026-05-10) ([6e561bf](https://github.com/visulima/visulima/commit/6e561bfbcb48e7f1ee96828ef0a5da836362c0ec))
62
+ * **release:** @visulima/tsconfig@3.0.0-alpha.19 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.19](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.18...@visulima/tsconfig@3.0.0-alpha.19) (2026-05-10) ([adec8f2](https://github.com/visulima/visulima/commit/adec8f29557e94ac1068044c523194c3fa122e33))
63
+ * **release:** @visulima/tsconfig@3.0.0-alpha.2 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.2](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.1...@visulima/tsconfig@3.0.0-alpha.2) (2025-12-11) ([28b3e0e](https://github.com/visulima/visulima/commit/28b3e0e7df52a10f3fa1844fa0ec6fafbd72d9d0))
64
+ * **release:** @visulima/tsconfig@3.0.0-alpha.20 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.20](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.19...@visulima/tsconfig@3.0.0-alpha.20) (2026-05-11) ([d619504](https://github.com/visulima/visulima/commit/d6195047c80795c39d4ef961f8a99d8dc488c7d7))
65
+ * **release:** @visulima/tsconfig@3.0.0-alpha.21 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.21](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.20...@visulima/tsconfig@3.0.0-alpha.21) (2026-05-11) ([1de3bb2](https://github.com/visulima/visulima/commit/1de3bb2ba5c537cd06bb42c3bb5f0fc87ccbfd8f))
66
+ * **release:** @visulima/tsconfig@3.0.0-alpha.22 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.22](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.21...@visulima/tsconfig@3.0.0-alpha.22) (2026-05-14) ([611fdb9](https://github.com/visulima/visulima/commit/611fdb939d3bcc3a0cceadcc4f529b733b81090a))
67
+ * **release:** @visulima/tsconfig@3.0.0-alpha.23 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.23](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.22...@visulima/tsconfig@3.0.0-alpha.23) (2026-05-16) ([5f0b6ea](https://github.com/visulima/visulima/commit/5f0b6eabf201ce7c4cde5990e6c405882c8ec676))
68
+ * **release:** @visulima/tsconfig@3.0.0-alpha.24 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.24](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.23...@visulima/tsconfig@3.0.0-alpha.24) (2026-05-19) ([d9eab08](https://github.com/visulima/visulima/commit/d9eab08637a7cfb7aaa3267c9c0473a89bcd0049))
69
+ * **release:** @visulima/tsconfig@3.0.0-alpha.25 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.25](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.24...@visulima/tsconfig@3.0.0-alpha.25) (2026-05-20) ([daec4bb](https://github.com/visulima/visulima/commit/daec4bbdd2bc07aba756d0b4080d9c708efd0654))
70
+ * **release:** @visulima/tsconfig@3.0.0-alpha.26 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.26](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.25...@visulima/tsconfig@3.0.0-alpha.26) (2026-05-26) ([5345970](https://github.com/visulima/visulima/commit/534597009a3c0c51a0d272c68b8bc8d9273f221c))
71
+ * **release:** @visulima/tsconfig@3.0.0-alpha.27 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.27](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.26...@visulima/tsconfig@3.0.0-alpha.27) (2026-05-27) ([4323a58](https://github.com/visulima/visulima/commit/4323a58152babaa6493ea549beb0d12cfb143620))
72
+ * **release:** @visulima/tsconfig@3.0.0-alpha.28 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.28](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.27...@visulima/tsconfig@3.0.0-alpha.28) (2026-06-02) ([c7f0022](https://github.com/visulima/visulima/commit/c7f002263684f3dba8bdb4f355732e7224827594))
73
+ * **release:** @visulima/tsconfig@3.0.0-alpha.29 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.29](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.28...@visulima/tsconfig@3.0.0-alpha.29) (2026-06-04) ([a239ae9](https://github.com/visulima/visulima/commit/a239ae95db7394713ace6708f321a947458a4151))
74
+ * **release:** @visulima/tsconfig@3.0.0-alpha.3 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.3](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.2...@visulima/tsconfig@3.0.0-alpha.3) (2025-12-27) ([f9d4903](https://github.com/visulima/visulima/commit/f9d4903b70a262d2f3ebb428a151de634042ea30))
75
+ * **release:** @visulima/tsconfig@3.0.0-alpha.30 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.30](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.29...@visulima/tsconfig@3.0.0-alpha.30) (2026-06-04) ([dafea87](https://github.com/visulima/visulima/commit/dafea87c1cacf33a037653c43512f46771f661d7))
76
+ * **release:** @visulima/tsconfig@3.0.0-alpha.31 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.31](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.30...@visulima/tsconfig@3.0.0-alpha.31) (2026-06-13) ([801b17f](https://github.com/visulima/visulima/commit/801b17f48aa066123fc43378a967e69c14b65347))
77
+ * **release:** @visulima/tsconfig@3.0.0-alpha.32 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.32](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.31...@visulima/tsconfig@3.0.0-alpha.32) (2026-06-30) ([179f23b](https://github.com/visulima/visulima/commit/179f23b8d7581a1bf06c31c355f63fce1c8976f1))
78
+ * **release:** @visulima/tsconfig@3.0.0-alpha.4 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.4](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.3...@visulima/tsconfig@3.0.0-alpha.4) (2026-03-06) ([e3876e9](https://github.com/visulima/visulima/commit/e3876e9ee1ba58f112c269b76ac4abdbf642af25))
79
+ * **release:** @visulima/tsconfig@3.0.0-alpha.5 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.5](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.4...@visulima/tsconfig@3.0.0-alpha.5) (2026-03-26) ([9387978](https://github.com/visulima/visulima/commit/9387978774851356e021836e2615d87382316d9f))
80
+ * **release:** @visulima/tsconfig@3.0.0-alpha.6 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.6](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.5...@visulima/tsconfig@3.0.0-alpha.6) (2026-03-26) ([cead571](https://github.com/visulima/visulima/commit/cead571cef351a9c436735519c592ae237cd9a12))
81
+ * **release:** @visulima/tsconfig@3.0.0-alpha.7 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.7](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.6...@visulima/tsconfig@3.0.0-alpha.7) (2026-04-08) ([a55d1e6](https://github.com/visulima/visulima/commit/a55d1e6ec9614dbe933165df17413adf47d787bf))
82
+ * **release:** @visulima/tsconfig@3.0.0-alpha.8 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.8](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.7...@visulima/tsconfig@3.0.0-alpha.8) (2026-04-21) ([f190c3d](https://github.com/visulima/visulima/commit/f190c3d6966945ab7b2fbb2256e6cdc3fffba5d3))
83
+ * **release:** @visulima/tsconfig@3.0.0-alpha.9 [skip ci]\n\n## @visulima/tsconfig [3.0.0-alpha.9](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.8...@visulima/tsconfig@3.0.0-alpha.9) (2026-04-21) ([f46ba00](https://github.com/visulima/visulima/commit/f46ba001d1be5169b8c61fbdc9e6f89a23dc402a))
84
+ * **repo:** sort package.json keys across all packages ([e1fd9ab](https://github.com/visulima/visulima/commit/e1fd9ab467ef96a98c777da1572ff6a50fcf7e71))
85
+ * sorted package.json ([b47c545](https://github.com/visulima/visulima/commit/b47c545591600fdab17d5cd3a3fbc68b61e199da))
86
+ * **tooling:** apply prettier and eslint formatting sweep ([c2c641d](https://github.com/visulima/visulima/commit/c2c641d40242e99030cb990fa01039db5e267667))
87
+ * **tooling:** remove empty dependency objects from package.json ([dc52a23](https://github.com/visulima/visulima/commit/dc52a23bc1e2d36f4ec71ca67506bf6861a02929))
88
+ * **tooling:** update dependencies ([7f6f9d3](https://github.com/visulima/visulima/commit/7f6f9d3c41b170c53659ab34b79ceb23e4e9660a))
89
+ * **tsconfig:** add tsconfig.eslint.json for type-aware linting ([2c01b30](https://github.com/visulima/visulima/commit/2c01b30e740cdbf75f96317053fd78a56fb2ccc9))
90
+ * **tsconfig:** apply pending changes ([d7ddb14](https://github.com/visulima/visulima/commit/d7ddb14293c1a140e818dd1b314caeba68db66da))
91
+ * **tsconfig:** apply prettier and eslint quote-style auto-fix ([e184ae4](https://github.com/visulima/visulima/commit/e184ae4c162360c743428361d9be977bad555854))
92
+ * **tsconfig:** apply prettier formatting ([85f32f5](https://github.com/visulima/visulima/commit/85f32f5f072edef750a4ff41d8b25918d26a4641))
93
+ * **tsconfig:** housekeeping cleanup ([081acf1](https://github.com/visulima/visulima/commit/081acf12b3853d85b233412493b48061d4f0dbf3))
94
+ * **tsconfig:** migrate .prettierrc.cjs to prettier.config.js ([bbf2a3b](https://github.com/visulima/visulima/commit/bbf2a3b0f6e23ea39dfeb583b0d100a407c8adaf))
95
+ * **tsconfig:** migrate deps to pnpm catalogs ([ab6e375](https://github.com/visulima/visulima/commit/ab6e37535ba3a575d0d0ddeee72560d8e560bccc))
96
+ * **tsconfig:** sort fixture package.json fields ([370c336](https://github.com/visulima/visulima/commit/370c336d2e1331fe05d2231d92a2b3b456c77620))
97
+ * **tsconfig:** update dependencies ([bf73f34](https://github.com/visulima/visulima/commit/bf73f340b2059d0bf74d836154d7e3a65a8e2c0a))
98
+ * **tsconfig:** update dependencies ([3388495](https://github.com/visulima/visulima/commit/3388495a99235637506dc8b2958e26b625db36f1))
99
+ * **tsconfig:** update dependencies ([7697d4b](https://github.com/visulima/visulima/commit/7697d4b4fa7153ab4a6bb93af68e35da7946df89))
100
+ * **tsconfig:** upgrade packem to 2.0.0-alpha.76 ([4f08e20](https://github.com/visulima/visulima/commit/4f08e204f3a82f5da7346ad910cf39cb2c13de51))
101
+ * update @anolilab/semantic-release-pnpm and @anolilab/semantic-release-preset to versions 3.2.2 and 12.1.2 across multiple package.json files for improved compatibility ([3921626](https://github.com/visulima/visulima/commit/3921626141fe5da398749bf0ba675f1596f18afb))
102
+ * update configuration files and add new package listing script ([3d918ef](https://github.com/visulima/visulima/commit/3d918efd53772430b53b026de6401bdedbe7ea3a))
103
+ * update dependencies across multiple packages to improve compatibility and performance, including upgrading `@anolilab/semantic-release-pnpm` and `@anolilab/semantic-release-preset` to versions 3.2.0 and 12.1.0 respectively, and updating `react`, `react-dom`, and `next` versions to 19.2.1 and 16.0.7 in various package.json files ([aee8fcd](https://github.com/visulima/visulima/commit/aee8fcd796ae9b8d055903260e7150996ea9f53d))
104
+ * update lock file maintenance ([d83e716](https://github.com/visulima/visulima/commit/d83e71697b75d24704185b66bb521a934d2db02d))
105
+ * update logo assets and README references ([a673e68](https://github.com/visulima/visulima/commit/a673e68c62937e61bd3231df7bb4cb01695aea71))
106
+ * update package dependencies and improve configuration ([4ed22d6](https://github.com/visulima/visulima/commit/4ed22d6511aa8150dcd4ba7b9dccf05dbe2d6adc))
107
+ * update the jsr.json ([864ab7e](https://github.com/visulima/visulima/commit/864ab7e71c4b5ae82f64792d1ae8debfea2c539b))
108
+ * visulima website ([#591](https://github.com/visulima/visulima/issues/591)) ([59ab2e2](https://github.com/visulima/visulima/commit/59ab2e2befb03e51cd2088956f83d9b87de6d033))
109
+ * year update ([47f4105](https://github.com/visulima/visulima/commit/47f410596ce7190cfea36a073db32e0cec50bbcd))
110
+
111
+ ### Code Refactoring
112
+
113
+ * replace execa with tinyexec ([56ec776](https://github.com/visulima/visulima/commit/56ec776908fe0c068c54542f3885cb29f061fea7))
114
+ * **tsconfig:** reorder type exports and add eslint-disable comments ([5b4bb2b](https://github.com/visulima/visulima/commit/5b4bb2b0f706abf6b39c46be3175c8a7981f92f5))
115
+
116
+ ### Tests
117
+
118
+ * **repo:** add dist runtime + types integration tests ([32ee300](https://github.com/visulima/visulima/commit/32ee300b7184117a0ddf9f9d390f75f8932d5ed9))
119
+
120
+ ### Continuous Integration
121
+
122
+ * **fallow:** make fallow:health advisory (--report-only) ([d57148e](https://github.com/visulima/visulima/commit/d57148ea0e3556b4c24d8d336b9fa14987f5dc7d))
123
+
124
+
125
+ ### Dependencies
126
+
127
+ * **@visulima/fs:** upgraded to 5.0.0
128
+ * **@visulima/path:** upgraded to 3.0.0
129
+
130
+ ## @visulima/tsconfig [3.0.0-alpha.32](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.31...@visulima/tsconfig@3.0.0-alpha.32) (2026-06-30)
131
+
132
+ ### Miscellaneous Chores
133
+
134
+ * add fallow code-intelligence across all packages ([a3b4821](https://github.com/visulima/visulima/commit/a3b48215002e86fed20f2973038b5d4a0aa1ce04))
135
+
136
+ ### Continuous Integration
137
+
138
+ * **fallow:** make fallow:health advisory (--report-only) ([d57148e](https://github.com/visulima/visulima/commit/d57148ea0e3556b4c24d8d336b9fa14987f5dc7d))
139
+
140
+
141
+ ### Dependencies
142
+
143
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.33
144
+
145
+ ## @visulima/tsconfig [3.0.0-alpha.31](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.30...@visulima/tsconfig@3.0.0-alpha.31) (2026-06-13)
146
+
147
+ ### Bug Fixes
148
+
149
+ * **tsconfig:** correct docs, pnp issuer, cache invalidation ([c3e0b9d](https://github.com/visulima/visulima/commit/c3e0b9d4281ee78f70780192fdf1d51b22bb2e9a))
150
+
151
+ ### Documentation
152
+
153
+ * **tsconfig:** fix stale API reference ([514b1b0](https://github.com/visulima/visulima/commit/514b1b0a6ae8e2533162afcc39ad541762ea92e2))
154
+
155
+ ### Code Refactoring
156
+
157
+ * **tsconfig:** reorder type exports and add eslint-disable comments ([5b4bb2b](https://github.com/visulima/visulima/commit/5b4bb2b0f706abf6b39c46be3175c8a7981f92f5))
158
+
159
+
160
+ ### Dependencies
161
+
162
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.32
163
+ * **@visulima/path:** upgraded to 3.0.0-alpha.13
164
+
165
+ ## @visulima/tsconfig [3.0.0-alpha.30](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.29...@visulima/tsconfig@3.0.0-alpha.30) (2026-06-04)
166
+
167
+
168
+ ### Dependencies
169
+
170
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.31
171
+
172
+ ## @visulima/tsconfig [3.0.0-alpha.29](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.28...@visulima/tsconfig@3.0.0-alpha.29) (2026-06-04)
173
+
174
+ ### Bug Fixes
175
+
176
+ * **tsconfig:** 2 bug fixes ([efc52ce](https://github.com/visulima/visulima/commit/efc52ce63e5cbe9a3b18a98c5cba2886deec6404))
177
+
178
+
179
+ ### Dependencies
180
+
181
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.30
182
+ * **@visulima/path:** upgraded to 3.0.0-alpha.12
183
+
184
+ ## @visulima/tsconfig [3.0.0-alpha.28](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.27...@visulima/tsconfig@3.0.0-alpha.28) (2026-06-02)
185
+
186
+
187
+ ### Dependencies
188
+
189
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.29
190
+
191
+ ## @visulima/tsconfig [3.0.0-alpha.27](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.26...@visulima/tsconfig@3.0.0-alpha.27) (2026-05-27)
192
+
193
+ ### Bug Fixes
194
+
195
+ * **storage-client:** percent-encode user fields in defaultFingerprint ([7c78a0f](https://github.com/visulima/visulima/commit/7c78a0f9512e2a673b941d80839e9f1e86b7b5d0))
196
+
197
+ ### Miscellaneous Chores
198
+
199
+ * sorted package.json ([b47c545](https://github.com/visulima/visulima/commit/b47c545591600fdab17d5cd3a3fbc68b61e199da))
200
+
201
+
202
+ ### Dependencies
203
+
204
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.28
205
+ * **@visulima/path:** upgraded to 3.0.0-alpha.11
206
+
207
+ ## @visulima/tsconfig [3.0.0-alpha.26](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.25...@visulima/tsconfig@3.0.0-alpha.26) (2026-05-26)
208
+
209
+ ### Miscellaneous Chores
210
+
211
+ * **ci-stability:** green CI across vis, native, lint, tests, attw ([#651](https://github.com/visulima/visulima/issues/651)) ([d4eb684](https://github.com/visulima/visulima/commit/d4eb684b5f75c818c9251048c605a0ed54a268e3))
212
+ * **repo:** sort package.json keys across all packages ([e1fd9ab](https://github.com/visulima/visulima/commit/e1fd9ab467ef96a98c777da1572ff6a50fcf7e71))
213
+
214
+ ### Tests
215
+
216
+ * **repo:** add dist runtime + types integration tests ([32ee300](https://github.com/visulima/visulima/commit/32ee300b7184117a0ddf9f9d390f75f8932d5ed9))
217
+
218
+
219
+ ### Dependencies
220
+
221
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.26
222
+
223
+ ## @visulima/tsconfig [3.0.0-alpha.25](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.24...@visulima/tsconfig@3.0.0-alpha.25) (2026-05-20)
224
+
225
+
226
+ ### Dependencies
227
+
228
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.25
229
+
230
+ ## @visulima/tsconfig [3.0.0-alpha.24](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.23...@visulima/tsconfig@3.0.0-alpha.24) (2026-05-19)
231
+
232
+
233
+ ### Dependencies
234
+
235
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.24
236
+
237
+ ## @visulima/tsconfig [3.0.0-alpha.23](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.22...@visulima/tsconfig@3.0.0-alpha.23) (2026-05-16)
238
+
239
+
240
+ ### Dependencies
241
+
242
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.23
243
+
244
+ ## @visulima/tsconfig [3.0.0-alpha.22](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.21...@visulima/tsconfig@3.0.0-alpha.22) (2026-05-14)
245
+
246
+ ### Features
247
+
248
+ * **tsconfig:** clear lint findings in tsc helper ([d9a99bc](https://github.com/visulima/visulima/commit/d9a99bc860e26bcdcdda8cf2e98528a746c3b05a))
249
+
250
+ ### Miscellaneous Chores
251
+
252
+ * **tooling:** apply prettier and eslint formatting sweep ([c2c641d](https://github.com/visulima/visulima/commit/c2c641d40242e99030cb990fa01039db5e267667))
253
+
254
+
255
+ ### Dependencies
256
+
257
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.22
258
+
259
+ ## @visulima/tsconfig [3.0.0-alpha.21](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.20...@visulima/tsconfig@3.0.0-alpha.21) (2026-05-11)
260
+
261
+
262
+ ### Dependencies
263
+
264
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.21
265
+
266
+ ## @visulima/tsconfig [3.0.0-alpha.20](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.19...@visulima/tsconfig@3.0.0-alpha.20) (2026-05-11)
267
+
268
+
269
+ ### Dependencies
270
+
271
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.20
272
+
273
+ ## @visulima/tsconfig [3.0.0-alpha.19](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.18...@visulima/tsconfig@3.0.0-alpha.19) (2026-05-10)
274
+
275
+
276
+ ### Dependencies
277
+
278
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.19
279
+
280
+ ## @visulima/tsconfig [3.0.0-alpha.18](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.17...@visulima/tsconfig@3.0.0-alpha.18) (2026-05-10)
281
+
282
+ ### Code Refactoring
283
+
284
+ * replace execa with tinyexec ([56ec776](https://github.com/visulima/visulima/commit/56ec776908fe0c068c54542f3885cb29f061fea7))
285
+
286
+
287
+ ### Dependencies
288
+
289
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.18
290
+
291
+ ## @visulima/tsconfig [3.0.0-alpha.17](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.16...@visulima/tsconfig@3.0.0-alpha.17) (2026-05-07)
292
+
293
+
294
+ ### Dependencies
295
+
296
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.17
297
+
298
+ ## @visulima/tsconfig [3.0.0-alpha.16](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.15...@visulima/tsconfig@3.0.0-alpha.16) (2026-05-07)
299
+
300
+
301
+ ### Dependencies
302
+
303
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.16
304
+
305
+ ## @visulima/tsconfig [3.0.0-alpha.15](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.14...@visulima/tsconfig@3.0.0-alpha.15) (2026-05-06)
306
+
307
+
308
+ ### Dependencies
309
+
310
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.15
311
+
312
+ ## @visulima/tsconfig [3.0.0-alpha.14](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.13...@visulima/tsconfig@3.0.0-alpha.14) (2026-05-06)
313
+
314
+ ### Miscellaneous Chores
315
+
316
+ * **tsconfig:** apply prettier and eslint quote-style auto-fix ([e184ae4](https://github.com/visulima/visulima/commit/e184ae4c162360c743428361d9be977bad555854))
317
+ * **tsconfig:** housekeeping cleanup ([081acf1](https://github.com/visulima/visulima/commit/081acf12b3853d85b233412493b48061d4f0dbf3))
318
+
319
+
320
+ ### Dependencies
321
+
322
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.14
323
+
324
+ ## @visulima/tsconfig [3.0.0-alpha.13](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.12...@visulima/tsconfig@3.0.0-alpha.13) (2026-05-04)
325
+
326
+
327
+ ### Dependencies
328
+
329
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.13
330
+
331
+ ## @visulima/tsconfig [3.0.0-alpha.12](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.11...@visulima/tsconfig@3.0.0-alpha.12) (2026-04-30)
332
+
333
+ ### Features
334
+
335
+ * **tsconfig:** typescript-version-aware compiler defaults ([1a4236b](https://github.com/visulima/visulima/commit/1a4236bfe0dabb769a88a052a1c9e7511daf6e6d))
336
+
337
+ ### Miscellaneous Chores
338
+
339
+ * added missing version key ([3b55253](https://github.com/visulima/visulima/commit/3b55253728af652a0bcaf230d93d2f9e9f2d8806))
340
+ * re-sort workspace package.json files via vis sort-package-json ([f625696](https://github.com/visulima/visulima/commit/f625696cfac974325774b3243e1a83c3d23acbd7))
341
+ * **tsconfig:** upgrade packem to 2.0.0-alpha.76 ([4f08e20](https://github.com/visulima/visulima/commit/4f08e204f3a82f5da7346ad910cf39cb2c13de51))
342
+
343
+ ## @visulima/tsconfig [3.0.0-alpha.11](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.10...@visulima/tsconfig@3.0.0-alpha.11) (2026-04-22)
344
+
345
+ ### Bug Fixes
346
+
347
+ * Remove JSR configuration generation script and generated jsr.json files ([#616](https://github.com/visulima/visulima/issues/616)) ([533744b](https://github.com/visulima/visulima/commit/533744b103b74896941db5b727173e617a27a63b))
348
+
349
+
350
+ ### Dependencies
351
+
352
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.12
353
+ * **@visulima/path:** upgraded to 3.0.0-alpha.10
354
+
355
+ ## @visulima/tsconfig [3.0.0-alpha.10](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.9...@visulima/tsconfig@3.0.0-alpha.10) (2026-04-21)
356
+
357
+ ### Miscellaneous Chores
358
+
359
+ * jsr.json update and lock file ([73fce38](https://github.com/visulima/visulima/commit/73fce38c7cb4603f3fffb88609b1b18e2feb4937))
360
+
361
+
362
+ ### Dependencies
363
+
364
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.11
365
+
1
366
  ## @visulima/tsconfig [3.0.0-alpha.9](https://github.com/visulima/visulima/compare/@visulima/tsconfig@3.0.0-alpha.8...@visulima/tsconfig@3.0.0-alpha.9) (2026-04-21)
2
367
 
3
368
  ### Miscellaneous Chores
package/README.md CHANGED
@@ -37,10 +37,11 @@
37
37
  ## Features
38
38
 
39
39
  - Tested against TypeScript for correctness
40
- - Supports comments & dangling commas in tsconfig.json
41
- - Resolves extends
40
+ - Supports comments & dangling commas in tsconfig.json (JSONC)
41
+ - Resolves `extends` (relative paths, package names, and Yarn PnP)
42
+ - Resolves `${configDir}` template variables
42
43
  - Fully typed tsconfig.json
43
- - Validates and throws parsing errors
44
+ - Synchronous and asynchronous search helpers
44
45
 
45
46
  ## Install
46
47
 
@@ -58,37 +59,77 @@ pnpm add @visulima/tsconfig
58
59
 
59
60
  ## Usage
60
61
 
61
- ### findTsConfig
62
+ ### findTsConfig / findTsConfigSync
62
63
 
63
- Retrieves the TsConfig by searching for the "tsconfig.json" file from a given current working directory.
64
+ Retrieves the TsConfig by searching upward for a `tsconfig.json` file (falling back to `jsconfig.json`) from a given directory. `findTsConfig` is asynchronous; `findTsConfigSync` is the synchronous variant.
64
65
 
65
66
  ```ts
66
- import { findTsConfig } from "@visulima/tsconfig";
67
+ import { findTsConfig, findTsConfigSync } from "@visulima/tsconfig";
67
68
 
68
- const tsconfig = await findTsConfig(); // => { path: "/Users/../Projects/visulima/packages/tsconfig/tsconfig.json", config: { compilerOptions: { ... } } }
69
+ const tsconfig = await findTsConfig();
70
+ // => { path: "/Users/.../visulima/packages/tsconfig/tsconfig.json", config: { compilerOptions: { ... } } }
71
+
72
+ // Synchronous, with a custom start directory
73
+ const tsconfigSync = findTsConfigSync("/path/to/project");
69
74
  ```
70
75
 
71
- ### writeTsConfig
76
+ Options (`findTsConfig`/`findTsConfigSync`):
77
+
78
+ | Option | Type | Default | Description |
79
+ | ------------------- | ---------------------------------------- | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
80
+ | `configFileName` | `string` | `"tsconfig.json"` | Name of the file to search for. Supplying a custom name disables the `jsconfig.json` fallback. |
81
+ | `cache` | `boolean \| Map<string, TsConfigResult>` | `undefined` | Cache parsed configs. `true` uses a process-wide cache; pass a `Map` for a caller-owned cache. Keys embed the file mtime, so on-disk edits invalidate cached entries automatically. |
82
+ | `tscCompatible` | see [readTsConfig](#readtsconfig) | `undefined` | Forwarded to `readTsConfig`. |
83
+ | `typescriptVersion` | see [readTsConfig](#readtsconfig) | `undefined` | Forwarded to `readTsConfig`. |
72
84
 
73
- Writes the provided TypeScript configuration object to a tsconfig.json file.
85
+ > Note: only the upward file search is async. Parsing (including the full `extends` chain) is synchronous, so a very deep `extends` chain still blocks the event loop during parse.
86
+
87
+ ### readTsConfig
88
+
89
+ Reads and parses the TypeScript configuration from a `tsconfig.json` path. **This function is synchronous** — it returns the resolved config object directly (no `await`).
74
90
 
75
91
  ```ts
76
- import { writeTsConfig } from '@visulima/package';
92
+ import { readTsConfig } from "@visulima/tsconfig";
93
+
94
+ const tsconfig = readTsConfig("/path/to/tsconfig.json");
95
+
96
+ // Make derived defaults match a specific TypeScript version
97
+ const compatible = readTsConfig("/path/to/tsconfig.json", { tscCompatible: "5.8" });
77
98
 
78
- writeTsConfig({ compilerOptions: { ... } }/* ,{ cwd: "./" }*/);
99
+ // Apply the unconditional compiler-option defaults of the installed TypeScript
100
+ const withDefaults = readTsConfig("/path/to/tsconfig.json", { typescriptVersion: "auto" });
79
101
  ```
80
102
 
81
- ### readTsConfig
103
+ Options (`ReadTsConfigOptions`):
104
+
105
+ | Option | Type | Default | Description |
106
+ | ------------------- | --------------------------------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
107
+ | `tscCompatible` | `"5.4" \| "5.5" \| "5.6" \| "5.7" \| "5.8" \| "5.9" \| "6.0" \| true` | `undefined` | Synthesize the _derived_ defaults TypeScript would imply from other options for the given version (e.g. `module: nodenext` ⇒ `moduleResolution: nodenext`). `true` targets the latest supported version. |
108
+ | `typescriptVersion` | `"auto" \| false \| string` | `false` | Apply the _unconditional_ compiler-option defaults of a TypeScript version. `"auto"` detects the installed version (including Yarn PnP); a string pins an explicit version; `false` applies none. Can be combined with `tscCompatible`. |
82
109
 
83
- Reads the TypeScript configuration from a tsconfig.json file.
110
+ ### writeTsConfig / writeTsConfigSync
111
+
112
+ Writes the provided TypeScript configuration object to a `tsconfig.json` file. `writeTsConfig` is asynchronous; `writeTsConfigSync` is the synchronous variant.
84
113
 
85
114
  ```ts
86
- import { readTsConfig } from "@visulima/package";
115
+ import { writeTsConfig, writeTsConfigSync } from "@visulima/tsconfig";
116
+
117
+ await writeTsConfig({ compilerOptions: { strict: true } }, { cwd: "./" });
87
118
 
88
- const tsconfig = await readTsConfig("/Users/../Projects/visulima/packages/tsconfig.json" /* { tscCompatible: false } */);
119
+ writeTsConfigSync({ compilerOptions: { strict: true } }, { cwd: "./" });
89
120
  ```
90
121
 
91
- > tscCompatible: If true, the configuration will be parsed in a way that is compatible with the TypeScript compiler.
122
+ ### configDirectoryPlaceholder
123
+
124
+ The literal `${configDir}` template string used by TypeScript. Re-exported so consumers can detect un-interpolated values without deep-importing internals.
125
+
126
+ ```ts
127
+ import { configDirectoryPlaceholder } from "@visulima/tsconfig";
128
+
129
+ if (someValue.startsWith(configDirectoryPlaceholder)) {
130
+ // value still references ${configDir}
131
+ }
132
+ ```
92
133
 
93
134
  ## Api Docs
94
135
 
@@ -449,7 +490,7 @@ Defined in: [packages/tsconfig/src/find-tsconfig.ts:10](https://github.com/visul
449
490
 
450
491
  ```ts
451
492
  optional cache:
452
- | Map<string, TsConfigJsonResolved>
493
+ | Map<string, TsConfigResult>
453
494
  | boolean;
454
495
  ```
455
496
 
@@ -474,13 +515,15 @@ Defined in: [packages/tsconfig/src/read-tsconfig.ts:444](https://github.com/visu
474
515
  ##### tscCompatible?
475
516
 
476
517
  ```ts
477
- optional tscCompatible: "5.3" | "5.4" | "5.5" | "5.6" | true;
518
+ optional tscCompatible: "5.4" | "5.5" | "5.6" | "5.7" | "5.8" | "5.9" | "6.0" | true;
478
519
  ```
479
520
 
480
- Defined in: [packages/tsconfig/src/read-tsconfig.ts:452](https://github.com/visulima/visulima/blob/afe199ce97ec3025aa13484407254660803d8d9c/packages/tsconfig/src/read-tsconfig.ts#L452)
521
+ Defined in: [packages/tsconfig/src/read-tsconfig.ts:703](https://github.com/visulima/visulima/blob/afe199ce97ec3025aa13484407254660803d8d9c/packages/tsconfig/src/read-tsconfig.ts#L703)
481
522
 
482
523
  Make the configuration compatible with the specified TypeScript version.
483
524
 
525
+ Controls _derived_ defaults — fields TypeScript synthesizes when other fields are set (e.g. `module: nodenext` ⇒ `moduleResolution: nodenext`).
526
+
484
527
  When `true`, it will make the configuration compatible with the latest TypeScript version.
485
528
 
486
529
  ###### Default
@@ -489,6 +532,22 @@ When `true`, it will make the configuration compatible with the latest TypeScrip
489
532
  undefined;
490
533
  ```
491
534
 
535
+ ##### typescriptVersion?
536
+
537
+ ```ts
538
+ optional typescriptVersion: "auto" | false | string;
539
+ ```
540
+
541
+ Defined in: [packages/tsconfig/src/read-tsconfig.ts:718](https://github.com/visulima/visulima/blob/afe199ce97ec3025aa13484407254660803d8d9c/packages/tsconfig/src/read-tsconfig.ts#L718)
542
+
543
+ Apply the _unconditional_ compiler-option defaults TypeScript would synthesize for the given version. `"auto"` detects the installed TypeScript version (including Yarn PnP); a string pins an explicit version; `false` applies none. Distinct from `tscCompatible`, and both can be combined.
544
+
545
+ ###### Default
546
+
547
+ ```ts
548
+ false;
549
+ ```
550
+
492
551
  ---
493
552
 
494
553
  ### TsConfigJsonResolved
package/dist/index.d.ts CHANGED
@@ -1,7 +1,97 @@
1
- export type { Options as FindTsConfigOptions, TsConfigResult } from "./find-tsconfig.d.ts";
2
- export { findTsConfig, findTsConfigSync } from "./find-tsconfig.d.ts";
3
- export type { Options as ReadTsConfigOptions } from "./read-tsconfig.d.ts";
4
- export { implicitBaseUrlSymbol, readTsConfig } from "./read-tsconfig.d.ts";
5
- export type { TsConfigJsonResolved } from "./types.d.ts";
6
- export { writeTsConfig, writeTsConfigSync } from "./write-tsconfig.d.ts";
7
- export type { TsConfigJson } from "type-fest";
1
+ import { TsConfigJson, Except } from 'type-fest';
2
+ export type { TsConfigJson } from 'type-fest';
3
+ import { WriteJsonOptions } from '@visulima/fs';
4
+ type TsConfigJsonResolved = Except<TsConfigJson, "extends">;
5
+ type Options$1 = {
6
+ /**
7
+ * Make the configuration compatible with the specified TypeScript version.
8
+ *
9
+ * Controls *derived* defaults — fields TypeScript synthesizes when other
10
+ * fields are set (e.g. `module: nodenext` ⇒ `moduleResolution: nodenext`).
11
+ *
12
+ * When `true`, it will make the configuration compatible with the latest TypeScript version.
13
+ *
14
+ * Supported version strings map to the version gates below — `"5.3"` is
15
+ * intentionally absent because TypeScript 5.3 introduced no derived-default
16
+ * changes over 5.2, so it would be a silent no-op.
17
+ * @default undefined
18
+ */
19
+ tscCompatible?: "5.4" | "5.5" | "5.6" | "5.7" | "5.8" | "5.9" | "6.0" | true;
20
+ /**
21
+ * Apply the *unconditional* compiler-option defaults TypeScript would
22
+ * synthesize for the given version (e.g. TS 6.0's `strict: true`,
23
+ * `target: 'es2025'`, `moduleResolution: 'bundler'`).
24
+ * - `'auto'` — auto-detect the installed TypeScript version by walking up
25
+ * from the tsconfig directory (and consulting Yarn Berry pnp).
26
+ * - `string` — pin to an explicit version (e.g. `'6.0.0'`, `'5.4'`).
27
+ * - `false` (default) — do not apply unconditional defaults; preserves
28
+ * prior behaviour where the parsed config matches `tsc --showConfig`.
29
+ * Distinct from `tscCompatible`, which only governs derived defaults.
30
+ * Both can be combined.
31
+ * @default false
32
+ */
33
+ typescriptVersion?: "auto" | false | (Record<never, never> & string);
34
+ };
35
+ declare const configDirectoryPlaceholder: string;
36
+ declare const implicitBaseUrlSymbol: symbol;
37
+ declare const readTsConfig: (tsconfigPath: string, options?: Options$1) => TsConfigJsonResolved;
38
+ type Options = {
39
+ /**
40
+ * Cache parsed configs across calls.
41
+ * - `true` — use a process-wide shared cache.
42
+ * - `Map` — use a caller-owned cache (useful for scoping / clearing).
43
+ *
44
+ * Cache keys embed the file's last-modified time, so editing a tsconfig
45
+ * on disk transparently invalidates its cached entry.
46
+ */
47
+ cache?: Map<string, TsConfigResult> | boolean;
48
+ /**
49
+ * Name of the config file to search for. Defaults to `"tsconfig.json"`.
50
+ *
51
+ * The fallback to `jsconfig.json` only applies when this is left at the
52
+ * default — supplying a custom name searches for that name only.
53
+ */
54
+ configFileName?: string;
55
+ } & Options$1;
56
+ type TsConfigResult = {
57
+ config: TsConfigJsonResolved;
58
+ path: string;
59
+ };
60
+ /**
61
+ * An asynchronous function that retrieves the TSConfig by searching for the "tsconfig.json" first,
62
+ * second attempt is to look for the "jsconfig.json" file from a given current working directory.
63
+ *
64
+ * Note: only the upward file search is asynchronous. Parsing (and the whole
65
+ * `extends` chain) is performed synchronously via {@link readTsConfig}, so a
66
+ * very deep `extends` chain will block the event loop during parse.
67
+ * @param cwd Optional. The current working directory from which to search for the "tsconfig.json" file.
68
+ * The type of `cwd` is `string`.
69
+ * @returns A `Promise` that resolves to the TSConfig result object.
70
+ * The return type of the function is `Promise&lt;TsConfigResult>`.
71
+ * @throws An `Error` when the "tsconfig.json" file is not found.
72
+ */
73
+ declare const findTsConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
74
+ declare const findTsConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
75
+ /**
76
+ * An asynchronous function that writes the provided TypeScript configuration object to a tsconfig.json file.
77
+ * @param tsConfig The TypeScript configuration object to write. The type of `tsConfig` is `TsConfigJson`.
78
+ * @param options Optional. The write options and the current working directory. The type of `options` is an
79
+ * intersection type of `WriteOptions` and a Record type with an optional `cwd` key of type `string`.
80
+ * @returns A `Promise` that resolves when the tsconfig.json file has been written.
81
+ * The return type of function is `Promise&lt;void>`.
82
+ */
83
+ declare const writeTsConfig: (tsConfig: TsConfigJson, options?: WriteJsonOptions & {
84
+ cwd?: URL | string;
85
+ }) => Promise<void>;
86
+ /**
87
+ * A function that writes the provided TypeScript configuration object to a tsconfig.json file.
88
+ * @param tsConfig The TypeScript configuration object to write. The type of `tsConfig` is `TsConfigJson`.
89
+ * @param options Optional. The write options and the current working directory. The type of `options` is an
90
+ * intersection type of `WriteOptions` and a Record type with an optional `cwd` key of type `string`.
91
+ * @returns A `Promise` that resolves when the tsconfig.json file has been written.
92
+ * The return type of function is `Promise&lt;void>`.
93
+ */
94
+ declare const writeTsConfigSync: (tsConfig: TsConfigJson, options?: WriteJsonOptions & {
95
+ cwd?: URL | string;
96
+ }) => void;
97
+ export { type Options as FindTsConfigOptions, type Options$1 as ReadTsConfigOptions, type TsConfigJsonResolved, type TsConfigResult, configDirectoryPlaceholder, findTsConfig, findTsConfigSync, implicitBaseUrlSymbol, readTsConfig, writeTsConfig, writeTsConfigSync };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{findTsConfig as f,findTsConfigSync as r}from"./packem_shared/findTsConfig-QzVKvyBN.js";import{implicitBaseUrlSymbol as e,readTsConfig as s}from"./packem_shared/implicitBaseUrlSymbol-CI4Y92iF.js";import{writeTsConfig as g,writeTsConfigSync as m}from"./packem_shared/writeTsConfig-0IO4xPZJ.js";export{f as findTsConfig,r as findTsConfigSync,e as implicitBaseUrlSymbol,s as readTsConfig,g as writeTsConfig,m as writeTsConfigSync};
1
+ import{findTsConfig as r,findTsConfigSync as f}from"./packem_shared/findTsConfig-WpIondtG.js";import{configDirectoryPlaceholder as n,implicitBaseUrlSymbol as t,readTsConfig as c}from"./packem_shared/configDirectoryPlaceholder-BX9y4RJS.js";import{writeTsConfig as s,writeTsConfigSync as l}from"./packem_shared/writeTsConfig-BrUFAEe9.js";export{n as configDirectoryPlaceholder,r as findTsConfig,f as findTsConfigSync,t as implicitBaseUrlSymbol,c as readTsConfig,s as writeTsConfig,l as writeTsConfigSync};
@@ -0,0 +1 @@
1
+ import{createRequire as V}from"node:module";import{isAccessibleSync as O,findUpSync as $,readFileSync as P}from"@visulima/fs";import{NotFoundError as N}from"@visulima/fs/error";import{join as d,resolve as y,isAbsolute as E,dirname as k,relative as x,normalize as R,toNamespacedPath as T}from"@visulima/path";import{isRelative as q}from"@visulima/path/utils";import{parse as A}from"jsonc-parser";import{resolveExports as z}from"resolve-pkg-maps";const B=V(import.meta.url),w=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,W=o=>{if(typeof w<"u"&&w.versions&&w.versions.node){const[i,s]=w.versions.node.split(".").map(Number);if(i>22||i===22&&s>=3||i===20&&s>=16)return w.getBuiltinModule(o)}return B(o)},{statSync:D}=W("node:fs"),G=W("node:module"),J=(o=process.cwd())=>{const{findPnpApi:i}=G;return i?i(o):void 0},H=o=>A(P(o,{buffer:!1})),S=(o,i,s,r)=>{const e=`resolveFromPackageJsonPath:${o}:${i}:${s?"yes":"no"}`;if(r?.has(e))return r.get(e);const m=H(o);if(!m)return;let t=i||"tsconfig.json";if(!s&&m.exports)try{const[l]=z(m.exports,i,["require","types"]);t=l}catch{return!1}else!i&&m.tsconfig&&(t=m.tsconfig);return t=d(o,"..",t),r?.set(e,t),t},F="package.json",j="tsconfig.json",K=(o,i,s)=>{let r=o;if(o===".."&&(r=d(r,j)),o.startsWith(".")&&(r=y(i,r)),E(r)){if(O(r)){if(D(r).isFile())return r}else if(!r.endsWith(".json")){const u=`${r}.json`;if(O(u))return u}return}const[e="",...m]=o.split("/"),t=e.startsWith("@")?`${e}/${String(m.shift())}`:e,l=m.join("/"),n=J(i);if(n){const{resolveRequest:u}=n;try{if(t===o){const f=u(d(t,F),i);if(f){const v=S(f,l,!1,s);if(v&&O(v))return v}}else{let f;try{f=u(o,i,{extensions:[".json"]})}catch{f=u(d(o,j),i)}if(f)return f}}catch{}}const c=$(u=>{const f=d(y(u),"node_modules",t);if(O(f))return d("node_modules",t)},{cwd:i,type:"directory"});if(!c||!D(c).isDirectory())return;const p=d(c,F);if(O(p)){const u=S(p,l,!1,s);if(u===!1)return;if(u&&O(u)&&D(u).isFile())return u}const a=d(c,l),g=a.endsWith(".json");if(!g){const u=`${a}.json`;if(O(u))return u}if(O(a)){if(D(a).isDirectory()){const u=d(a,F);if(O(u)){const v=S(u,"",!0,s);if(v&&O(v))return v}const f=d(a,j);if(O(f))return f}else if(g)return a}},Q=o=>{const i=y(o);let s;const r=J(i);if(r)try{s=r.resolveRequest("typescript/package.json",i)??void 0}catch{}if(s??=$(e=>d(e,"node_modules","typescript","package.json"),{cwd:i,type:"file"}),!!s)try{const e=A(P(s,{buffer:!1}));if(typeof e?.version=="string")return e.version}catch{}},X=new Set(["node16","node18","node20","nodenext"]),M=o=>o!==void 0&&X.has(o),Y=(o,i)=>{!i.has("target")&&!M(o.module)&&(o.target="es3")},Z=(o,i)=>{!i.has("target")&&!M(o.module)&&(o.target="es5")},oo=(o,i)=>{i.has("strict")||(o.strict=!0),i.has("target")||(o.target="es2025"),i.has("module")||(o.module="es2022"),i.has("moduleResolution")||(o.moduleResolution="bundler"),i.has("rootDir")||(o.rootDir="."),i.has("types")||(o.types=[]),i.has("noUncheckedSideEffectImports")||(o.noUncheckedSideEffectImports=!0),i.has("libReplacement")||(o.libReplacement=!1),i.has("alwaysStrict")||(o.alwaysStrict=!0)},eo=[[4,Y],[5,Z],[6,oo]],to=/^v?(\d+)/,io=o=>{const i=to.exec(o);return i?Number(i[1]):void 0},so=(o,i)=>{const s=io(i);if(s===void 0)return;const r=new Set(Object.keys(o));for(const[e,m]of eo)e<=s&&m(o,r)},ro=o=>A(P(o,{buffer:!1})),no=o=>o.replaceAll("\\","/"),b=o=>{const i=T(o);return q(i)?i:`./${i}`},I=["files","include","exclude"],U=(o,i,s)=>{const r=d(i,s),e=x(o,r);return R(e)||"./"},lo=(o,i,s)=>{const r=x(o,i);if(!r)return s;const e=s.startsWith("./")?s.slice(2):s;return`${r}/${e}`},co=(o,i,s,r,e)=>{if(s.has(o))throw new Error(`Circularity detected while resolving configuration: ${o}`);s.add(o);const m=k(o),t=_(o,r,s,e);delete t.references;const{compilerOptions:l}=t;if(l){const{baseUrl:n}=l;n&&!n.startsWith(h)&&(l.baseUrl=U(i,m,n));const{outDir:c}=l;c&&!c.startsWith(h)&&(l.outDir=U(i,m,c))}for(const n of I){const c=t[n];c&&(t[n]=c.map(p=>p.startsWith(h)||E(p)?p:lo(i,m,p)))}return t},_=(o,i,s=new Set,r=new Map)=>{let e;try{e=ro(o)??{}}catch(t){throw new Error(`Cannot resolve tsconfig at path: ${o}`,{cause:t})}if(typeof e!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${o}`);const m=k(o);if(e.compilerOptions){const{compilerOptions:t}=e;t.paths&&!t.baseUrl&&(t[uo]=m)}if(e.extends){const t=Array.isArray(e.extends)?e.extends:[e.extends];delete e.extends;const l=t.toReversed();for(let n=0;n<l.length;n++){const c=l[n],p=K(c,m,r);if(!p)throw new N(`No such file or directory, for '${c}' found.`);const a=co(p,m,new Set(s),i,r);a.compilerOptions?.rootDir!==void 0&&!a.compilerOptions.rootDir.startsWith(h)&&(a.compilerOptions.rootDir=d(k(p),a.compilerOptions.rootDir));const g={...a,...e,compilerOptions:{...a.compilerOptions,...e.compilerOptions}};a.watchOptions&&(g.watchOptions={...a.watchOptions,...e.watchOptions}),e=g}}if(e.compilerOptions){const{compilerOptions:t}=e;for(const l of["baseUrl","rootDir"]){const n=t[l];if(n&&!n.startsWith(h)){const c=y(m,n);t[l]=b(x(m,c))}}for(const l of["outDir","declarationDir"]){let n=t[l];n&&(Array.isArray(e.exclude)||(e.exclude=["outDir","declarationDir"].map(c=>{const p=t[c];if(p)return p.startsWith(h)||E(p)?p:d(m,p)}).filter(Boolean)),n.startsWith(h)||(n=b(n)),t[l]=n)}}else e.compilerOptions={};if(e.include&&(e.include=e.include.map(t=>no(t))),e.files&&(e.files=e.files.map(t=>t.startsWith(h)?t:b(t))),e.watchOptions){const{watchOptions:t}=e;t.excludeDirectories&&(t.excludeDirectories=t.excludeDirectories.map(l=>R(y(m,l)))),t.excludeFiles&&(t.excludeFiles=t.excludeFiles.map(l=>R(y(m,l)))),t.watchFile&&(t.watchFile=t.watchFile.toLowerCase()),t.watchDirectory&&(t.watchDirectory=t.watchDirectory.toLowerCase()),t.fallbackPolling&&(t.fallbackPolling=t.fallbackPolling.toLowerCase())}if(e.compilerOptions.lib&&(e.compilerOptions.lib=e.compilerOptions.lib.map(t=>t.toLowerCase())),e.compilerOptions.module){let t=e.compilerOptions.module.toLowerCase();t==="es2015"&&(t="es6"),e.compilerOptions.module=t}if(e.compilerOptions.target){let t=e.compilerOptions.target.toLowerCase();t==="es2015"&&(t="es6"),e.compilerOptions.target=t}if(e.compilerOptions.moduleResolution){let t=e.compilerOptions.moduleResolution.toLowerCase();t==="node"&&(t="node10"),e.compilerOptions.moduleResolution=t}return e.compilerOptions.jsx&&(e.compilerOptions.jsx=e.compilerOptions.jsx.toLowerCase()),e.compilerOptions.moduleDetection&&(e.compilerOptions.moduleDetection=e.compilerOptions.moduleDetection.toLowerCase()),e.compilerOptions.importsNotUsedAsValues&&(e.compilerOptions.importsNotUsedAsValues=e.compilerOptions.importsNotUsedAsValues.toLowerCase()),e.compilerOptions.newLine&&(e.compilerOptions.newLine=e.compilerOptions.newLine.toLowerCase()),e},C=(o,i)=>{if(o.startsWith(h))return R(d(i,o.slice(h.length)))},po=["outDir","declarationDir","outFile","rootDir","baseUrl","tsBuildInfoFile"],L=o=>o==="es2022"||o==="es2023"||o==="es2024"||o==="es2025"||o==="esnext",mo=(o,i)=>{if(o.compilerOptions===void 0)return o;if(o.compilerOptions.rewriteRelativeImportExtensions&&(o.compilerOptions.allowImportingTsExtensions??=!0),o.compilerOptions.composite&&(o.compilerOptions.declaration??=!0,o.compilerOptions.incremental??=!0),o.compilerOptions.checkJs&&(o.compilerOptions.allowJs??=!0),o.compilerOptions.verbatimModuleSyntax&&(o.compilerOptions.isolatedModules??=!0,o.compilerOptions.preserveConstEnums??=!0),["5.4","5.5","5.6","5.7","5.8","5.9","true"].includes(String(i?.tscCompatible))){if(o.compilerOptions.esModuleInterop===void 0&&(o.compilerOptions.module==="node16"||o.compilerOptions.module==="node18"||o.compilerOptions.module==="node20"||o.compilerOptions.module==="nodenext"||o.compilerOptions.module==="preserve")&&(o.compilerOptions.esModuleInterop=!0),o.compilerOptions.moduleDetection===void 0&&o.compilerOptions.module&&["node16","node18","node20","nodenext"].includes(o.compilerOptions.module)&&(o.compilerOptions.moduleDetection="force"),o.compilerOptions.moduleResolution===void 0){let s="classic";if(o.compilerOptions.module!==void 0)switch(o.compilerOptions.module.toLocaleLowerCase()){case"commonjs":{s="node10";break}case"node16":case"node18":{s="node16";break}case"node20":{s="node16";break}case"nodenext":{s="nodenext";break}case"preserve":{s="bundler";break}}s!=="classic"&&(o.compilerOptions.moduleResolution=s)}if(o.compilerOptions.moduleResolution==="bundler"&&(o.compilerOptions.resolveJsonModule??=!0),o.compilerOptions.module&&["node20","nodenext"].includes(o.compilerOptions.module)&&(o.compilerOptions.resolveJsonModule??=!0),(o.compilerOptions.esModuleInterop||o.compilerOptions.module==="system"||o.compilerOptions.moduleResolution==="bundler")&&o.compilerOptions.allowSyntheticDefaultImports===void 0&&(o.compilerOptions.allowSyntheticDefaultImports=!0),["5.7","5.8","5.9","true"].includes(String(i?.tscCompatible))&&o.compilerOptions.moduleResolution){let s=!1;["bundler","node16","nodenext"].includes(o.compilerOptions.moduleResolution.toLocaleLowerCase())&&(s=!0),o.compilerOptions.resolvePackageJsonExports===void 0&&s&&(o.compilerOptions.resolvePackageJsonExports=!0),o.compilerOptions.resolvePackageJsonImports===void 0&&s&&(o.compilerOptions.resolvePackageJsonImports=!0)}if(o.compilerOptions.target===void 0){let s="es5";switch(o.compilerOptions.module){case"node16":case"node18":{s="es2022";break}case"node20":{s="es2023";break}case"nodenext":{s="esnext";break}}s!=="es5"&&(o.compilerOptions.target=s)}o.compilerOptions.useDefineForClassFields===void 0&&o.compilerOptions.target&&L(o.compilerOptions.target)&&(o.compilerOptions.useDefineForClassFields=!0)}if(["5.6","5.7","5.8","5.9","true"].includes(String(i?.tscCompatible))&&o.compilerOptions.strict&&o.compilerOptions.strictBuiltinIteratorReturn===void 0&&(o.compilerOptions.strictBuiltinIteratorReturn=!0),["5.4","5.5","5.6","5.7","5.8","5.9","true"].includes(String(i?.tscCompatible))&&(o.compilerOptions.strict&&(o.compilerOptions.noImplicitAny=o.compilerOptions.noImplicitAny??!0,o.compilerOptions.noImplicitThis=o.compilerOptions.noImplicitThis??!0,o.compilerOptions.strictNullChecks=o.compilerOptions.strictNullChecks??!0,o.compilerOptions.strictFunctionTypes=o.compilerOptions.strictFunctionTypes??!0,o.compilerOptions.strictBindCallApply=o.compilerOptions.strictBindCallApply??!0,o.compilerOptions.strictPropertyInitialization=o.compilerOptions.strictPropertyInitialization??!0,o.compilerOptions.alwaysStrict=o.compilerOptions.alwaysStrict??!0),o.compilerOptions.useDefineForClassFields===void 0&&o.compilerOptions.target&&L(o.compilerOptions.target)&&(o.compilerOptions.useDefineForClassFields=!0),o.compilerOptions.strict&&o.compilerOptions.useUnknownInCatchVariables===void 0&&(o.compilerOptions.useUnknownInCatchVariables=!0),o.compilerOptions.isolatedModules&&(o.compilerOptions.preserveConstEnums=o.compilerOptions.preserveConstEnums??!0)),String(i?.tscCompatible)==="6.0"){if(o.compilerOptions.moduleDetection===void 0&&o.compilerOptions.module&&["node16","node18","node20","nodenext"].includes(o.compilerOptions.module)&&(o.compilerOptions.moduleDetection="force"),o.compilerOptions.moduleResolution===void 0&&o.compilerOptions.module){const s=o.compilerOptions.module.toLocaleLowerCase();s==="node16"||s==="node18"||s==="node20"?o.compilerOptions.moduleResolution="node16":s==="nodenext"&&(o.compilerOptions.moduleResolution="nodenext")}if(o.compilerOptions.useDefineForClassFields===void 0&&o.compilerOptions.module&&["node16","node18","node20","nodenext"].includes(o.compilerOptions.module)&&o.compilerOptions.target&&!L(o.compilerOptions.target)&&(o.compilerOptions.useDefineForClassFields=!1),o.compilerOptions.isolatedModules&&o.compilerOptions.preserveConstEnums===void 0&&(o.compilerOptions.preserveConstEnums=!0),o.compilerOptions.resolveJsonModule===void 0){const s=o.compilerOptions.module,r=o.compilerOptions.moduleResolution?.toLocaleLowerCase();!(s!==void 0&&["node20","nodenext"].includes(s)||r==="bundler")&&r&&(o.compilerOptions.resolveJsonModule=!1)}if(o.compilerOptions.moduleResolution){const s=o.compilerOptions.moduleResolution.toLocaleLowerCase();["bundler","node16","nodenext"].includes(s)||(o.compilerOptions.resolvePackageJsonExports??=!1,o.compilerOptions.resolvePackageJsonImports??=!1)}}return o.compileOnSave===!1&&delete o.compileOnSave,o},ao=(o,i)=>{const s=o?.typescriptVersion;if(!(s===!1||s===void 0))return s==="auto"?Q(i):s},h="${configDir}",uo=Symbol("implicitBaseUrl"),bo=(o,i)=>{const s=y(o),r=_(s,i),e=k(s),m=ao(i,e);m&&r.compilerOptions&&so(r.compilerOptions,m);const{compilerOptions:t}=r;if(t){for(const n of po){const c=t[n];if(c){const p=C(c,e);t[n]=p?b(x(e,p)):c}}for(const n of["rootDirs","typeRoots"]){const c=t[n];c&&(t[n]=c.map(p=>{const a=C(p,e);return a?b(x(e,a)):p}))}const{paths:l}=t;if(l){const n=Object.keys(l);for(let c=0;c<n.length;c++){const p=n[c];l[p]=l[p].map(a=>C(a,e)??a)}}}for(let l=0;l<I.length;l++){const n=I[l],c=r[n];c&&(r[n]=c.map(p=>C(p,e)??p))}return mo(r,i)};export{h as configDirectoryPlaceholder,uo as implicitBaseUrlSymbol,bo as readTsConfig};
@@ -0,0 +1 @@
1
+ import{createRequire as m}from"node:module";import{findUp as a,findUpSync as p}from"@visulima/fs";import{NotFoundError as l}from"@visulima/fs/error";import{readTsConfig as d}from"./configDirectoryPlaceholder-BX9y4RJS.js";const y=m(import.meta.url),f=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,j=t=>{if(typeof f<"u"&&f.versions&&f.versions.node){const[o,e]=f.versions.node.split(".").map(Number);if(o>22||o===22&&e>=3||o===20&&e>=16)return f.getBuiltinModule(t)}return y(t)},{statSync:_}=j("node:fs"),u=new Map,g="tsconfig.json",h=(t,o)=>{let e=0;try{e=_(t).mtimeMs}catch{}return`${t}::${String(o.tscCompatible)}::${String(o.typescriptVersion)}::${String(e)}`},$=async(t,o={})=>{const e=o.configFileName??g,i=o.configFileName===void 0;let c=await a(e,{...t&&{cwd:t},type:"file"});if(!c&&i&&(c=await a("jsconfig.json",{...t&&{cwd:t},type:"file"})),!c)throw new l(i?`No such file or directory, for '${e}' or 'jsconfig.json' found.`:`No such file or directory, for '${e}' found.`);const n=o.cache&&typeof o.cache!="boolean"?o.cache:u,r=h(c,o);if(o.cache&&n.has(r))return n.get(r);const s={config:d(c,{tscCompatible:o.tscCompatible,typescriptVersion:o.typescriptVersion}),path:c};return o.cache&&n.set(r,s),s},S=(t,o={})=>{const e=o.configFileName??g,i=o.configFileName===void 0;let c=p(e,{...t&&{cwd:t},type:"file"});if(!c&&i&&(c=p("jsconfig.json",{...t&&{cwd:t},type:"file"})),!c)throw new l(i?`No such file or directory, for '${e}' or 'jsconfig.json' found.`:`No such file or directory, for '${e}' found.`);const n=o.cache&&typeof o.cache!="boolean"?o.cache:u,r=h(c,o);if(o.cache&&n.has(r))return n.get(r);const s={config:d(c,{tscCompatible:o.tscCompatible,typescriptVersion:o.typescriptVersion}),path:c};return o.cache&&n.set(r,s),s};export{$ as findTsConfig,S as findTsConfigSync};
@@ -0,0 +1 @@
1
+ import{writeJson as w,writeJsonSync as e}from"@visulima/fs";import{toPath as c}from"@visulima/fs/utils";import{join as r}from"@visulima/path";const a=async(o,s={})=>{const{cwd:n,...t}=s,i=c(n??process.cwd());await w(r(i,"tsconfig.json"),o,t)},d=(o,s={})=>{const{cwd:n,...t}=s,i=c(n??process.cwd());e(r(i,"tsconfig.json"),o,t)};export{a as writeTsConfig,d as writeTsConfigSync};
package/package.json CHANGED
@@ -1,20 +1,18 @@
1
1
  {
2
2
  "name": "@visulima/tsconfig",
3
- "version": "3.0.0-alpha.9",
3
+ "version": "3.0.0",
4
4
  "description": "Find and/or parse the tsconfig.json file from a directory path.",
5
5
  "keywords": [
6
6
  "anolilab",
7
- "visulima",
8
- "ts-config",
9
7
  "get-tsconfig",
10
8
  "read-tsconfig",
9
+ "ts-config",
11
10
  "tsconfig",
12
- "tsconfig.json"
11
+ "tsconfig.json",
12
+ "visulima"
13
13
  ],
14
14
  "homepage": "https://visulima.com/packages/tsconfig",
15
- "bugs": {
16
- "url": "https://github.com/visulima/visulima/issues"
17
- },
15
+ "bugs": "https://github.com/visulima/visulima/issues",
18
16
  "repository": {
19
17
  "type": "git",
20
18
  "url": "git+https://github.com/visulima/visulima.git",
@@ -50,11 +48,10 @@
50
48
  "CHANGELOG.md"
51
49
  ],
52
50
  "dependencies": {
53
- "@visulima/fs": "5.0.0-alpha.10",
54
- "@visulima/path": "3.0.0-alpha.9",
51
+ "@visulima/fs": "5.0.0",
52
+ "@visulima/path": "3.0.0",
55
53
  "jsonc-parser": "^3.3.1",
56
- "resolve-pkg-maps": "^1.0.0",
57
- "type-fest": "5.6.0"
54
+ "resolve-pkg-maps": "^1.0.0"
58
55
  },
59
56
  "engines": {
60
57
  "node": "^22.14.0 || >=24.10.0"
@@ -1,21 +0,0 @@
1
- import type { Options as ReadTsConfigOptions } from "./read-tsconfig.d.ts";
2
- import type { TsConfigJsonResolved } from "./types.d.ts";
3
- export type Options = ReadTsConfigOptions & {
4
- cache?: Map<string, TsConfigJsonResolved> | boolean;
5
- configFileName?: string;
6
- };
7
- export type TsConfigResult = {
8
- config: TsConfigJsonResolved;
9
- path: string;
10
- };
11
- /**
12
- * An asynchronous function that retrieves the TSConfig by searching for the "tsconfig.json" first,
13
- * second attempt is to look for the "jsconfig.json" file from a given current working directory.
14
- * @param cwd Optional. The current working directory from which to search for the "tsconfig.json" file.
15
- * The type of `cwd` is `string`.
16
- * @returns A `Promise` that resolves to the TSConfig result object.
17
- * The return type of the function is `Promise&lt;TsConfigResult>`.
18
- * @throws An `Error` when the "tsconfig.json" file is not found.
19
- */
20
- export declare const findTsConfig: (cwd?: URL | string, options?: Options) => Promise<TsConfigResult>;
21
- export declare const findTsConfigSync: (cwd?: URL | string, options?: Options) => TsConfigResult;
@@ -1 +0,0 @@
1
- var h=Object.defineProperty;var f=(t,o)=>h(t,"name",{value:o,configurable:!0});import{findUp as s,findUpSync as r}from"@visulima/fs";import{NotFoundError as a}from"@visulima/fs/error";import{readTsConfig as p}from"./implicitBaseUrlSymbol-CI4Y92iF.js";var d=Object.defineProperty,l=f((t,o)=>d(t,"name",{value:o,configurable:!0}),"f");const g=new Map,w=l(async(t,o={})=>{const n=o.configFileName??"tsconfig.json";let c=await s(n,{...t&&{cwd:t},type:"file"});if(c??=await s("jsconfig.json",{...t&&{cwd:t},type:"file"}),!c)throw new a(`No such file or directory, for '${n}' or 'jsconfig.json' found.`);const i=o.cache&&typeof o.cache!="boolean"?o.cache:g;if(o.cache&&i.has(c))return i.get(c);const e={config:p(c,{tscCompatible:o.tscCompatible}),path:c};return o.cache&&i.set(c,e),e},"findTsConfig"),C=l((t,o={})=>{const n=o.configFileName??"tsconfig.json";let c=r(n,{...t&&{cwd:t},type:"file"});if(c??=r("jsconfig.json",{...t&&{cwd:t},type:"file"}),!c)throw new a(`No such file or directory, for '${n}' or 'jsconfig.json' found.`);const i=o.cache&&typeof o.cache!="boolean"?o.cache:g;if(o.cache&&i.has(c))return i.get(c);const e={config:p(c,{tscCompatible:o.tscCompatible}),path:c};return o.cache&&i.set(c,e),e},"findTsConfigSync");export{w as findTsConfig,C as findTsConfigSync};
@@ -1 +0,0 @@
1
- var U=Object.defineProperty;var C=(o,s)=>U(o,"name",{value:s,configurable:!0});import{createRequire as T}from"node:module";import{readFileSync as W,isAccessibleSync as O,findUpSync as N}from"@visulima/fs";import{NotFoundError as q}from"@visulima/fs/error";import{join as u,resolve as w,isAbsolute as A,toNamespacedPath as z,relative as x,normalize as k,dirname as P}from"@visulima/path";import{isRelative as V}from"@visulima/path/utils";import{parse as _}from"jsonc-parser";import{resolveExports as H}from"resolve-pkg-maps";const B=T(import.meta.url),y=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,E=C(o=>{if(typeof y<"u"&&y.versions&&y.versions.node){const[s,i]=y.versions.node.split(".").map(Number);if(s>22||s===22&&i>=3||s===20&&i>=16)return y.getBuiltinModule(o)}return B(o)},"__cjs_getBuiltinModule"),{statSync:D}=E("node:fs"),G=E("node:module");var K=Object.defineProperty,R=C((o,s)=>K(o,"name",{value:s,configurable:!0}),"d");const Q=R(o=>_(W(o,{buffer:!1})),"readJsonc"),X=R(()=>{const{findPnpApi:o}=G;return o?.(process.cwd())},"getPnpApi"),j=R((o,s,i,e)=>{const l=`resolveFromPackageJsonPath:${o}:${s}:${i?"yes":"no"}`;if(e?.has(l))return e.get(l);const t=Q(o);if(!t)return;let r=s||"tsconfig.json";if(!i&&t.exports)try{const[n]=H(t.exports,s,["require","types"]);r=n}catch{return!1}else!s&&t.tsconfig&&(r=t.tsconfig);return r=u(o,"..",r),e?.set(l,r),r},"resolveFromPackageJsonPath"),L="package.json",S="tsconfig.json",Y=R((o,s,i)=>{let e=o;if(o===".."&&(e=u(e,S)),o.startsWith(".")&&(e=w(s,e)),A(e)){if(O(e)){if(D(e).isFile())return e}else if(!e.endsWith(".json")){const m=`${e}.json`;if(O(m))return m}return}const[l="",...t]=o.split("/"),r=l.startsWith("@")?`${l}/${String(t.shift())}`:l,n=t.join("/"),p=X();if(p){const{resolveRequest:m}=p;try{if(r===o){const d=m(u(r,L),s);if(d){const g=j(d,n,!1,i);if(g&&O(g))return g}}else{let d;try{d=m(o,s,{extensions:[".json"]})}catch{d=m(u(o,S),s)}if(d)return d}}catch{}}const c=N(m=>{const d=u(w(m),"node_modules",r);if(O(d))return u("node_modules",r)},{cwd:s,type:"directory"});if(!c||!D(c).isDirectory())return;const a=u(c,L);if(O(a)){const m=j(a,n,!1,i);if(m===!1)return;if(m&&O(m)&&D(m).isFile())return m}const h=u(c,n),J=h.endsWith(".json");if(!J){const m=`${h}.json`;if(O(m))return m}if(O(h)){if(D(h).isDirectory()){const m=u(h,L);if(O(m)){const g=j(m,"",!0,i);if(g&&O(g))return g}const d=u(h,S);if(O(d))return d}else if(J)return h}},"resolveExtendsPath");var Z=Object.defineProperty,v=C((o,s)=>Z(o,"name",{value:s,configurable:!0}),"c");const oo=v(o=>_(W(o,{buffer:!1})),"readJsonc"),eo=v(o=>o.replaceAll("\\","/"),"slash"),b=v(o=>{const s=z(o);return V(s)?s:`./${s}`},"normalizePath"),I=["files","include","exclude"],$=v((o,s,i)=>{const e=u(s,i),l=x(o,e);return k(l)||"./"},"resolveAndRelativize"),to=v((o,s,i)=>{const e=x(o,s);if(!e)return i;const l=i.startsWith("./")?i.slice(2):i;return`${e}/${l}`},"prefixPattern"),io=v((o,s,i,e)=>{if(i.has(o))throw new Error(`Circularity detected while resolving configuration: ${o}`);i.add(o);const l=P(o),t=M(o,e,i);delete t.references;const{compilerOptions:r}=t;if(r){const{baseUrl:n}=r;n&&!n.startsWith(f)&&(r.baseUrl=$(s,l,n));const{outDir:p}=r;p&&!p.startsWith(f)&&(r.outDir=$(s,l,p))}for(const n of I){const p=t[n];p&&(t[n]=p.map(c=>c.startsWith(f)||A(c)?c:to(s,l,c)))}return t},"resolveExtends"),M=v((o,s,i=new Set)=>{let e;try{e=oo(o)??{}}catch{throw new Error(`Cannot resolve tsconfig at path: ${o}`)}if(typeof e!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${o}`);const l=P(o);if(e.compilerOptions){const{compilerOptions:t}=e;t.paths&&!t.baseUrl&&(t[no]=l)}if(e.extends){const t=Array.isArray(e.extends)?e.extends:[e.extends];delete e.extends;const r=t.toReversed();for(let n=0;n<r.length;n++){const p=r[n],c=Y(p,l);if(!c)throw new q(`No such file or directory, for '${p}' found.`);const a=io(c,l,new Set(i),s);a.compilerOptions?.rootDir!==void 0&&!a.compilerOptions.rootDir.startsWith(f)&&(a.compilerOptions.rootDir=u(P(c),a.compilerOptions.rootDir));const h={...a,...e,compilerOptions:{...a.compilerOptions,...e.compilerOptions}};a.watchOptions&&(h.watchOptions={...a.watchOptions,...e.watchOptions}),e=h}}if(e.compilerOptions){const{compilerOptions:t}=e;for(const r of["baseUrl","rootDir"]){const n=t[r];if(n&&!n.startsWith(f)){const p=w(l,n);t[r]=b(x(l,p))}}for(const r of["outDir","declarationDir"]){let n=t[r];n&&(Array.isArray(e.exclude)||(e.exclude=["outDir","declarationDir"].map(p=>{const c=t[p];if(c)return c.startsWith(f)||A(c)?c:u(l,c)}).filter(Boolean)),n.startsWith(f)||(n=b(n)),t[r]=n)}}else e.compilerOptions={};if(e.include&&(e.include=e.include.map(t=>eo(t))),e.files&&(e.files=e.files.map(t=>t.startsWith(f)?t:b(t))),e.watchOptions){const{watchOptions:t}=e;t.excludeDirectories&&(t.excludeDirectories=t.excludeDirectories.map(r=>k(w(l,r)))),t.excludeFiles&&(t.excludeFiles=t.excludeFiles.map(r=>k(w(l,r)))),t.watchFile&&(t.watchFile=t.watchFile.toLowerCase()),t.watchDirectory&&(t.watchDirectory=t.watchDirectory.toLowerCase()),t.fallbackPolling&&(t.fallbackPolling=t.fallbackPolling.toLowerCase())}if(e.compilerOptions.lib&&(e.compilerOptions.lib=e.compilerOptions.lib.map(t=>t.toLowerCase())),e.compilerOptions.module){let t=e.compilerOptions.module.toLowerCase();t==="es2015"&&(t="es6"),e.compilerOptions.module=t}if(e.compilerOptions.target){let t=e.compilerOptions.target.toLowerCase();t==="es2015"&&(t="es6"),e.compilerOptions.target=t}if(e.compilerOptions.moduleResolution){let t=e.compilerOptions.moduleResolution.toLowerCase();t==="node"&&(t="node10"),e.compilerOptions.moduleResolution=t}return e.compilerOptions.jsx&&(e.compilerOptions.jsx=e.compilerOptions.jsx.toLowerCase()),e.compilerOptions.moduleDetection&&(e.compilerOptions.moduleDetection=e.compilerOptions.moduleDetection.toLowerCase()),e.compilerOptions.importsNotUsedAsValues&&(e.compilerOptions.importsNotUsedAsValues=e.compilerOptions.importsNotUsedAsValues.toLowerCase()),e.compilerOptions.newLine&&(e.compilerOptions.newLine=e.compilerOptions.newLine.toLowerCase()),e},"internalParseTsConfig"),F=v((o,s)=>{if(o.startsWith(f))return k(u(s,o.slice(f.length)))},"interpolateConfigDirectory"),so=["outDir","declarationDir","outFile","rootDir","baseUrl","tsBuildInfoFile"],ro=v((o,s)=>{if(o.compilerOptions===void 0)return o;if(o.compilerOptions.rewriteRelativeImportExtensions&&(o.compilerOptions.allowImportingTsExtensions??=!0),o.compilerOptions.composite&&(o.compilerOptions.declaration??=!0,o.compilerOptions.incremental??=!0),o.compilerOptions.checkJs&&(o.compilerOptions.allowJs??=!0),o.compilerOptions.verbatimModuleSyntax&&(o.compilerOptions.isolatedModules??=!0,o.compilerOptions.preserveConstEnums??=!0),["5.4","5.5","5.6","5.7","5.8","5.9","true"].includes(String(s?.tscCompatible))){if(o.compilerOptions.esModuleInterop===void 0&&(o.compilerOptions.module==="node16"||o.compilerOptions.module==="node18"||o.compilerOptions.module==="node20"||o.compilerOptions.module==="nodenext"||o.compilerOptions.module==="preserve")&&(o.compilerOptions.esModuleInterop=!0),o.compilerOptions.moduleDetection===void 0&&o.compilerOptions.module&&["node16","node18","node20","nodenext"].includes(o.compilerOptions.module)&&(o.compilerOptions.moduleDetection="force"),o.compilerOptions.moduleResolution===void 0){let i="classic";if(o.compilerOptions.module!==void 0)switch(o.compilerOptions.module.toLocaleLowerCase()){case"commonjs":{i="node10";break}case"node16":case"node18":{i="node16";break}case"node20":{i="node16";break}case"nodenext":{i="nodenext";break}case"preserve":{i="bundler";break}}i!=="classic"&&(o.compilerOptions.moduleResolution=i)}if(o.compilerOptions.moduleResolution==="bundler"&&(o.compilerOptions.resolveJsonModule??=!0),o.compilerOptions.module&&["node20","nodenext"].includes(o.compilerOptions.module)&&(o.compilerOptions.resolveJsonModule??=!0),(o.compilerOptions.esModuleInterop||o.compilerOptions.module==="system"||o.compilerOptions.moduleResolution==="bundler")&&o.compilerOptions.allowSyntheticDefaultImports===void 0&&(o.compilerOptions.allowSyntheticDefaultImports=!0),["5.7","5.8","5.9","true"].includes(String(s?.tscCompatible))&&o.compilerOptions.moduleResolution){let i=!1;["bundler","node16","nodenext"].includes(o.compilerOptions.moduleResolution.toLocaleLowerCase())&&(i=!0),o.compilerOptions.resolvePackageJsonExports===void 0&&i&&(o.compilerOptions.resolvePackageJsonExports=!0),o.compilerOptions.resolvePackageJsonImports===void 0&&i&&(o.compilerOptions.resolvePackageJsonImports=!0)}if(o.compilerOptions.target===void 0){let i="es5";switch(o.compilerOptions.module){case"node16":case"node18":{i="es2022";break}case"node20":{i="es2023";break}case"nodenext":{i="esnext";break}}i!=="es5"&&(o.compilerOptions.target=i)}o.compilerOptions.useDefineForClassFields===void 0&&o.compilerOptions.target&&(o.compilerOptions.target.includes("es202")||o.compilerOptions.target==="esnext")&&(o.compilerOptions.useDefineForClassFields=!0)}if(["5.6","5.7","5.8","5.9","true"].includes(String(s?.tscCompatible))&&o.compilerOptions.strict&&o.compilerOptions.strictBuiltinIteratorReturn===void 0&&(o.compilerOptions.strictBuiltinIteratorReturn=!0),["5.4","5.5","5.6","5.7","5.8","5.9","true"].includes(String(s?.tscCompatible))){if(o.compilerOptions.strict&&(o.compilerOptions.noImplicitAny=o.compilerOptions.noImplicitAny??!0,o.compilerOptions.noImplicitThis=o.compilerOptions.noImplicitThis??!0,o.compilerOptions.strictNullChecks=o.compilerOptions.strictNullChecks??!0,o.compilerOptions.strictFunctionTypes=o.compilerOptions.strictFunctionTypes??!0,o.compilerOptions.strictBindCallApply=o.compilerOptions.strictBindCallApply??!0,o.compilerOptions.strictPropertyInitialization=o.compilerOptions.strictPropertyInitialization??!0,o.compilerOptions.alwaysStrict=o.compilerOptions.alwaysStrict??!0),o.compilerOptions.useDefineForClassFields===void 0&&o.compilerOptions.target){let i=!1;(o.compilerOptions.target.includes("es202")||o.compilerOptions.target==="esnext")&&(i=!0),i&&(o.compilerOptions.useDefineForClassFields=!0)}o.compilerOptions.strict&&o.compilerOptions.useUnknownInCatchVariables===void 0&&(o.compilerOptions.useUnknownInCatchVariables=!0),o.compilerOptions.isolatedModules&&(o.compilerOptions.preserveConstEnums=o.compilerOptions.preserveConstEnums??!0)}if(String(s?.tscCompatible)==="6.0"){if(o.compilerOptions.moduleDetection===void 0&&o.compilerOptions.module&&["node16","node18","node20","nodenext"].includes(o.compilerOptions.module)&&(o.compilerOptions.moduleDetection="force"),o.compilerOptions.moduleResolution===void 0&&o.compilerOptions.module){const i=o.compilerOptions.module.toLocaleLowerCase();i==="node16"||i==="node18"||i==="node20"?o.compilerOptions.moduleResolution="node16":i==="nodenext"&&(o.compilerOptions.moduleResolution="nodenext")}if(o.compilerOptions.useDefineForClassFields===void 0&&o.compilerOptions.module&&["node16","node18","node20","nodenext"].includes(o.compilerOptions.module)&&o.compilerOptions.target&&!o.compilerOptions.target.includes("es202")&&o.compilerOptions.target!=="esnext"&&(o.compilerOptions.useDefineForClassFields=!1),o.compilerOptions.isolatedModules&&o.compilerOptions.preserveConstEnums===void 0&&(o.compilerOptions.preserveConstEnums=!0),o.compilerOptions.resolveJsonModule===void 0){const i=o.compilerOptions.module,e=o.compilerOptions.moduleResolution?.toLocaleLowerCase();!(i!==void 0&&["node20","nodenext"].includes(i)||e==="bundler")&&e&&(o.compilerOptions.resolveJsonModule=!1)}if(o.compilerOptions.moduleResolution){const i=o.compilerOptions.moduleResolution.toLocaleLowerCase();["bundler","node16","nodenext"].includes(i)||(o.compilerOptions.resolvePackageJsonExports??=!1,o.compilerOptions.resolvePackageJsonImports??=!1)}}return o.compileOnSave===!1&&delete o.compileOnSave,o},"tsCompatibleWrapper"),f="${configDir}",no=Symbol("implicitBaseUrl"),ho=v((o,s)=>{const i=w(o),e=M(i,s),l=P(i),{compilerOptions:t}=e;if(t){for(const n of so){const p=t[n];if(p){const c=F(p,l);t[n]=c?b(x(l,c)):p}}for(const n of["rootDirs","typeRoots"]){const p=t[n];p&&(t[n]=p.map(c=>{const a=F(c,l);return a?b(x(l,a)):c}))}const{paths:r}=t;if(r){const n=Object.keys(r);for(let p=0;p<n.length;p++){const c=n[p];r[c]=r[c].map(a=>F(a,l)??a)}}t.outDir&&(t.outDir=t.outDir.replace(f,""))}for(let r=0;r<I.length;r++){const n=I[r],p=e[n];p&&(e[n]=p.map(c=>F(c,l)??c))}return ro(e,s)},"readTsConfig");export{f as configDirectoryPlaceholder,no as implicitBaseUrlSymbol,ho as readTsConfig};
@@ -1 +0,0 @@
1
- var w=Object.defineProperty;var s=(o,n)=>w(o,"name",{value:n,configurable:!0});import{writeJson as a,writeJsonSync as p}from"@visulima/fs";import{toPath as c}from"@visulima/fs/utils";import{join as e}from"@visulima/path";var g=Object.defineProperty,f=s((o,n)=>g(o,"name",{value:n,configurable:!0}),"r");const C=f(async(o,n={})=>{const{cwd:r,...i}=n,t=c(r??process.cwd());await a(e(t,"tsconfig.json"),o,i)},"writeTsConfig"),T=f((o,n={})=>{const{cwd:r,...i}=n,t=c(r??process.cwd());p(e(t,"tsconfig.json"),o,i)},"writeTsConfigSync");export{C as writeTsConfig,T as writeTsConfigSync};
@@ -1,13 +0,0 @@
1
- import type { TsConfigJsonResolved } from "./types.d.ts";
2
- export type Options = {
3
- /**
4
- * Make the configuration compatible with the specified TypeScript version.
5
- *
6
- * When `true`, it will make the configuration compatible with the latest TypeScript version.
7
- * @default undefined
8
- */
9
- tscCompatible?: "5.3" | "5.4" | "5.5" | "5.6" | "5.7" | "5.8" | "5.9" | "6.0" | true;
10
- };
11
- export declare const configDirectoryPlaceholder: string;
12
- export declare const implicitBaseUrlSymbol: symbol;
13
- export declare const readTsConfig: (tsconfigPath: string, options?: Options) => TsConfigJsonResolved;
package/dist/types.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import type { Except, TsConfigJson } from "type-fest";
2
- export type TsConfigJsonResolved = Except<TsConfigJson, "extends">;
3
- export type Cache<T = any> = Map<string, T>;
@@ -1,3 +0,0 @@
1
- import type { Cache } from "../types.d.ts";
2
- declare const resolveExtendsPath: (requestedPath: string, directoryPath: string, cache?: Cache<string>) => string | undefined;
3
- export default resolveExtendsPath;
@@ -1,24 +0,0 @@
1
- import type { WriteJsonOptions } from "@visulima/fs";
2
- import type { TsConfigJson } from "type-fest";
3
- /**
4
- * An asynchronous function that writes the provided TypeScript configuration object to a tsconfig.json file.
5
- * @param tsConfig The TypeScript configuration object to write. The type of `tsConfig` is `TsConfigJson`.
6
- * @param options Optional. The write options and the current working directory. The type of `options` is an
7
- * intersection type of `WriteOptions` and a Record type with an optional `cwd` key of type `string`.
8
- * @returns A `Promise` that resolves when the tsconfig.json file has been written.
9
- * The return type of function is `Promise&lt;void>`.
10
- */
11
- export declare const writeTsConfig: (tsConfig: TsConfigJson, options?: WriteJsonOptions & {
12
- cwd?: URL | string;
13
- }) => Promise<void>;
14
- /**
15
- * A function that writes the provided TypeScript configuration object to a tsconfig.json file.
16
- * @param tsConfig The TypeScript configuration object to write. The type of `tsConfig` is `TsConfigJson`.
17
- * @param options Optional. The write options and the current working directory. The type of `options` is an
18
- * intersection type of `WriteOptions` and a Record type with an optional `cwd` key of type `string`.
19
- * @returns A `Promise` that resolves when the tsconfig.json file has been written.
20
- * The return type of function is `Promise&lt;void>`.
21
- */
22
- export declare const writeTsConfigSync: (tsConfig: TsConfigJson, options?: WriteJsonOptions & {
23
- cwd?: URL | string;
24
- }) => void;