@visulima/package 5.0.0-alpha.9 → 5.0.1

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,430 @@
1
+ ## @visulima/package [5.0.1](https://github.com/visulima/visulima/compare/%40visulima%2Fpackage%405.0.0...%40visulima%2Fpackage%405.0.1) (2026-07-15)
2
+
3
+
4
+ ### Dependencies
5
+
6
+ * **@visulima/fs:** upgraded to 5.0.1
7
+
8
+ ## @visulima/package [5.0.0](https://github.com/visulima/visulima/compare/@visulima/package@4.1.7...@visulima/package@5.0.0) (2026-07-03)
9
+
10
+ ### ⚠ BREAKING CHANGES
11
+
12
+ * **vis:** vis sbom now emits CycloneDX 1.7. Downstream consumers
13
+ pinned to a 1.6 validator must upgrade.
14
+
15
+ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
16
+ * change min node version to 22.13
17
+
18
+ ### Features
19
+
20
+ * Add CycloneDX 1.6 SBOM generation with `vis sbom` command ([#611](https://github.com/visulima/visulima/issues/611)) ([1e95276](https://github.com/visulima/visulima/commit/1e9527630958722a0f0f7e79d18bb23b5a57e0df))
21
+ * **package:** add lockfile utilities ([12f9076](https://github.com/visulima/visulima/commit/12f9076ba1570bec2f2d43b58fcd31701634434e))
22
+ * **package:** recognise the modern bun.lock text lockfile ([8fec531](https://github.com/visulima/visulima/commit/8fec531a20c32857de93c801d4b42e0eff32c6a8))
23
+ * **vis:** bump sbom to cyclonedx 1.7 ([904075f](https://github.com/visulima/visulima/commit/904075fd9353e40b593d5a13f53307c584e31da7))
24
+ * **web:** auto-generate packages page from workspace metadata ([623e520](https://github.com/visulima/visulima/commit/623e5207693a7fe720f5f2f179593a3654c880e3))
25
+
26
+ ### Bug Fixes
27
+
28
+ * add new package image, fixed readme rendering on npm, fixed building of packages ([b790ba2](https://github.com/visulima/visulima/commit/b790ba253ea07fef83528fd822a678facf021b5f))
29
+ * **lint:** clear pre-existing eslint rot across packages ([#674](https://github.com/visulima/visulima/issues/674)) ([5354253](https://github.com/visulima/visulima/commit/5354253b163bd50bcefaf8a3fddf831bdb5df32b))
30
+ * **package:** 4 bug fixes ([1e2fba6](https://github.com/visulima/visulima/commit/1e2fba6b0d048f3b90f4e0b428fd984d66f1431e))
31
+ * **package:** hoist regexes, rewrite lockfile parser, resolve eslint issues ([585ed7f](https://github.com/visulima/visulima/commit/585ed7f16b3f42996bb030a8bae5f1f37a50c316))
32
+ * **package:** properly fix eslint errors in code ([56b1547](https://github.com/visulima/visulima/commit/56b15474d6edd8f33fb46cca81fa34d600df2023))
33
+ * **package:** remove remaining eslint suppressions with proper code fixes ([69efa7a](https://github.com/visulima/visulima/commit/69efa7a9c67977c491a1ec8eaded733478ed29a1))
34
+ * **package:** replace unsafe type cast with String() coercions ([4c85a5e](https://github.com/visulima/visulima/commit/4c85a5e3fdeb194a0a2bbcee24b85ee23697d3ea))
35
+ * **package:** resolve caching and ReDoS findings ([fb9e5cb](https://github.com/visulima/visulima/commit/fb9e5cb0fbb5fad2078750464845c6b223e0afc5))
36
+ * **package:** resolve eslint errors ([1ec4728](https://github.com/visulima/visulima/commit/1ec47286cfcec55ea50c51d51f198b119dd22e71))
37
+ * **package:** update package files ([586668e](https://github.com/visulima/visulima/commit/586668ee3a790163aca11ddc8f35b7bdfd740ac6))
38
+ * **package:** update packem to 2.0.0-alpha.54 ([e5b3249](https://github.com/visulima/visulima/commit/e5b3249026a425b7a42443f66a08f8f68c3d62e4))
39
+ * **package:** use intentionally malformed JSON in bad workspace fixture ([a6680e7](https://github.com/visulima/visulima/commit/a6680e7a97aeae643c26b69bc5eb6c64c28de278))
40
+ * **package:** use workspace:* for internal [@visulima](https://github.com/visulima) deps ([e409128](https://github.com/visulima/visulima/commit/e409128c02a6d801dd385ae845c1ab28ca5c09da))
41
+ * 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))
42
+ * resolve failing tests across multiple packages ([2b4b6f0](https://github.com/visulima/visulima/commit/2b4b6f04169b60fdc4cf77b293015436a272c0fb))
43
+ * **storage-client:** percent-encode user fields in defaultFingerprint ([7c78a0f](https://github.com/visulima/visulima/commit/7c78a0f9512e2a673b941d80839e9f1e86b7b5d0))
44
+ * 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))
45
+ * update package OG images across multiple packages ([f08e4dd](https://github.com/visulima/visulima/commit/f08e4dd2b105ccb29c8412020a9c2be36d6c1e9e))
46
+ * **web:** improve build setup with incremental stats caching and prod install ([fe33e75](https://github.com/visulima/visulima/commit/fe33e75827586779b4b3a0c6d57b39f889ee6207))
47
+
48
+ ### Documentation
49
+
50
+ * **humanizer,html,iso-locale,package,tsconfig:** add comprehensive Fumadocs documentation ([19781ce](https://github.com/visulima/visulima/commit/19781ce5d27605971a9f2fdf0a99863effd98091))
51
+
52
+ ### Styles
53
+
54
+ * cs fixes ([2a960bb](https://github.com/visulima/visulima/commit/2a960bb1772c9dc70080e2d75d3a0d827034e294))
55
+
56
+ ### Miscellaneous Chores
57
+
58
+ * add fallow code-intelligence across all packages ([a3b4821](https://github.com/visulima/visulima/commit/a3b48215002e86fed20f2973038b5d4a0aa1ce04))
59
+ * **api-platform:** apply pending lint and source updates ([3fb0043](https://github.com/visulima/visulima/commit/3fb0043a4cf35f752ca89a09a077100ae0142da8))
60
+ * apply eslint + prettier autofixes across packages ([c1bb784](https://github.com/visulima/visulima/commit/c1bb7848a0d93d0dfe2960c77e3cda22239c79a0))
61
+ * bump engines.node to ^22.14.0 || >=24.10.0 ([c3d0931](https://github.com/visulima/visulima/commit/c3d0931d1504e4f21ebf50ea680cfa7ce4ba15ce))
62
+ * **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))
63
+ * **fallow:** resolve dead-code findings ([c4125d5](https://github.com/visulima/visulima/commit/c4125d53e03ac9d90115399634535991927a96cc))
64
+ * fixed jsr.json ([5d85e51](https://github.com/visulima/visulima/commit/5d85e5179de38e284ec433b14d77c71a1619c8d6))
65
+ * fixed project.json names and schema path ([964722f](https://github.com/visulima/visulima/commit/964722f691db205c7edb9aa6db29e849a647500b))
66
+ * jsr.json update and lock file ([73fce38](https://github.com/visulima/visulima/commit/73fce38c7cb4603f3fffb88609b1b18e2feb4937))
67
+ * moved all packages into groups ([0615e9d](https://github.com/visulima/visulima/commit/0615e9d14a8a886e11da529ce150cf31ca973c10))
68
+ * **package:** add tsconfig.eslint.json for type-aware linting ([0355fea](https://github.com/visulima/visulima/commit/0355fea301fb7a8571da25bebd108830bc23ed04))
69
+ * **package:** apply formatter and lint fixes ([a0f4acf](https://github.com/visulima/visulima/commit/a0f4acfb15beb256edd3b62958b4e3db039757a9))
70
+ * **package:** apply pending changes ([919b214](https://github.com/visulima/visulima/commit/919b214f9659a5b4ff95ec8b35a70c10af3c4853))
71
+ * **package:** apply pending lint and source updates ([2fd1c04](https://github.com/visulima/visulima/commit/2fd1c044d9528500943368c01f9b24fd2280058c))
72
+ * **package:** apply prettier and eslint quote-style auto-fix ([0316bca](https://github.com/visulima/visulima/commit/0316bca0deca444ff12675bc760c7091ce243d31))
73
+ * **package:** apply prettier formatting ([ebb5bd1](https://github.com/visulima/visulima/commit/ebb5bd12c6b7d49811c68ea96bf62ce7e2a7d42d))
74
+ * **package:** enforce curly braces and apply lint fixes ([0df50ba](https://github.com/visulima/visulima/commit/0df50ba4f45bac67dabeb78ebfc3d555ba5aec56))
75
+ * **package:** housekeeping cleanup ([113978b](https://github.com/visulima/visulima/commit/113978b0babcfc7879514aec076f6e2d5e7afab0))
76
+ * **package:** migrate .prettierrc.cjs to prettier.config.js ([2b84ef0](https://github.com/visulima/visulima/commit/2b84ef0db67467e1360b2f1e6f9b6e96bf3dbbb0))
77
+ * **package:** migrate deps to pnpm catalogs ([301fac4](https://github.com/visulima/visulima/commit/301fac41be88df7469155649467921a72ca740a6))
78
+ * **package:** update dependencies ([fb1a43d](https://github.com/visulima/visulima/commit/fb1a43de0fd345806d76aec660d48c627d576083))
79
+ * **package:** update dependencies ([d89cde6](https://github.com/visulima/visulima/commit/d89cde6792e9036d0690cfaf9b771e26b24faac8))
80
+ * **package:** update dependencies ([4b62cf8](https://github.com/visulima/visulima/commit/4b62cf85e6ef4deac4ef01c8a7e15bcf49ecbe80))
81
+ * **package:** upgrade packem to 2.0.0-alpha.76 ([b2ef62b](https://github.com/visulima/visulima/commit/b2ef62b72a84545cb025a250cbe7e3e36b34330d))
82
+ * re-sort workspace package.json files via vis sort-package-json ([f625696](https://github.com/visulima/visulima/commit/f625696cfac974325774b3243e1a83c3d23acbd7))
83
+ * **release:** @visulima/package@5.0.0-alpha.1 [skip ci]\n\n## @visulima/package [5.0.0-alpha.1](https://github.com/visulima/visulima/compare/@visulima/package@4.1.7...@visulima/package@5.0.0-alpha.1) (2025-12-07) ([b0bda06](https://github.com/visulima/visulima/commit/b0bda06f7c6b6e5bf1c909194c8501232cc6f255))
84
+ * **release:** @visulima/package@5.0.0-alpha.10 [skip ci]\n\n## @visulima/package [5.0.0-alpha.10](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.9...@visulima/package@5.0.0-alpha.10) (2026-04-21) ([5f618a5](https://github.com/visulima/visulima/commit/5f618a5e2b522538a086bc30a415573e7afc9c35))
85
+ * **release:** @visulima/package@5.0.0-alpha.11 [skip ci]\n\n## @visulima/package [5.0.0-alpha.11](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.10...@visulima/package@5.0.0-alpha.11) (2026-04-22) ([71b8477](https://github.com/visulima/visulima/commit/71b847710608a5f8f8b0047782a872b4d46c3bb6))
86
+ * **release:** @visulima/package@5.0.0-alpha.12 [skip ci]\n\n## @visulima/package [5.0.0-alpha.12](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.11...@visulima/package@5.0.0-alpha.12) (2026-05-04) ([2038492](https://github.com/visulima/visulima/commit/20384928affebb7be1469bd4eeb82a99514db2e7))
87
+ * **release:** @visulima/package@5.0.0-alpha.13 [skip ci]\n\n## @visulima/package [5.0.0-alpha.13](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.12...@visulima/package@5.0.0-alpha.13) (2026-05-06) ([77f4a8f](https://github.com/visulima/visulima/commit/77f4a8fa2f18f60999b3bf51eb977b6cecb50b0f))
88
+ * **release:** @visulima/package@5.0.0-alpha.14 [skip ci]\n\n## @visulima/package [5.0.0-alpha.14](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.13...@visulima/package@5.0.0-alpha.14) (2026-05-06) ([e4c2424](https://github.com/visulima/visulima/commit/e4c2424274d2293a8e18bdb3a223db1f90580f79))
89
+ * **release:** @visulima/package@5.0.0-alpha.15 [skip ci]\n\n## @visulima/package [5.0.0-alpha.15](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.14...@visulima/package@5.0.0-alpha.15) (2026-05-07) ([feab532](https://github.com/visulima/visulima/commit/feab5323c49b6bfa1d0c575f43d5395b06763aeb))
90
+ * **release:** @visulima/package@5.0.0-alpha.16 [skip ci]\n\n## @visulima/package [5.0.0-alpha.16](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.15...@visulima/package@5.0.0-alpha.16) (2026-05-07) ([f155eca](https://github.com/visulima/visulima/commit/f155eca8ebe8ab18a91040c945dd2f4d367a7088))
91
+ * **release:** @visulima/package@5.0.0-alpha.17 [skip ci]\n\n## @visulima/package [5.0.0-alpha.17](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.16...@visulima/package@5.0.0-alpha.17) (2026-05-10) ([4ed72b8](https://github.com/visulima/visulima/commit/4ed72b830e4775dd9e37fbd3059899d5091f8c0a))
92
+ * **release:** @visulima/package@5.0.0-alpha.18 [skip ci]\n\n## @visulima/package [5.0.0-alpha.18](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.17...@visulima/package@5.0.0-alpha.18) (2026-05-10) ([5e3c0d9](https://github.com/visulima/visulima/commit/5e3c0d9b2190dbf871e47e11ef9bab8c6f6888f6))
93
+ * **release:** @visulima/package@5.0.0-alpha.19 [skip ci]\n\n## @visulima/package [5.0.0-alpha.19](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.18...@visulima/package@5.0.0-alpha.19) (2026-05-11) ([b047ce6](https://github.com/visulima/visulima/commit/b047ce629254c3365ea6890c043b6d91510a93fc))
94
+ * **release:** @visulima/package@5.0.0-alpha.2 [skip ci]\n\n## @visulima/package [5.0.0-alpha.2](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.1...@visulima/package@5.0.0-alpha.2) (2025-12-11) ([288d07a](https://github.com/visulima/visulima/commit/288d07a1b806a91767eb4ccce964f937fa343272))
95
+ * **release:** @visulima/package@5.0.0-alpha.20 [skip ci]\n\n## @visulima/package [5.0.0-alpha.20](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.19...@visulima/package@5.0.0-alpha.20) (2026-05-11) ([a4ad900](https://github.com/visulima/visulima/commit/a4ad900b136fcd12370561bbca4a6b353c640d43))
96
+ * **release:** @visulima/package@5.0.0-alpha.21 [skip ci]\n\n## @visulima/package [5.0.0-alpha.21](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.20...@visulima/package@5.0.0-alpha.21) (2026-05-14) ([225dbee](https://github.com/visulima/visulima/commit/225dbeebbc56941baf6c377224eee524733287c4))
97
+ * **release:** @visulima/package@5.0.0-alpha.22 [skip ci]\n\n## @visulima/package [5.0.0-alpha.22](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.21...@visulima/package@5.0.0-alpha.22) (2026-05-16) ([701993e](https://github.com/visulima/visulima/commit/701993e11ab7667aa8efe50a17c3c9fb19907d18))
98
+ * **release:** @visulima/package@5.0.0-alpha.23 [skip ci]\n\n## @visulima/package [5.0.0-alpha.23](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.22...@visulima/package@5.0.0-alpha.23) (2026-05-19) ([c122ae5](https://github.com/visulima/visulima/commit/c122ae5fb47b6f0275472cedad6cb93a57c009f9))
99
+ * **release:** @visulima/package@5.0.0-alpha.24 [skip ci]\n\n## @visulima/package [5.0.0-alpha.24](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.23...@visulima/package@5.0.0-alpha.24) (2026-05-20) ([7332b29](https://github.com/visulima/visulima/commit/7332b29b8b387baab9f752e1a30375b50b151e7b))
100
+ * **release:** @visulima/package@5.0.0-alpha.25 [skip ci]\n\n## @visulima/package [5.0.0-alpha.25](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.24...@visulima/package@5.0.0-alpha.25) (2026-05-26) ([7e54b5c](https://github.com/visulima/visulima/commit/7e54b5cf21cb05f1924ed7eb94ea1575e6bb0d27))
101
+ * **release:** @visulima/package@5.0.0-alpha.26 [skip ci]\n\n## @visulima/package [5.0.0-alpha.26](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.25...@visulima/package@5.0.0-alpha.26) (2026-05-26) ([a67d180](https://github.com/visulima/visulima/commit/a67d1805caa538be86f70c47b7a2346ba7e51f74))
102
+ * **release:** @visulima/package@5.0.0-alpha.27 [skip ci]\n\n## @visulima/package [5.0.0-alpha.27](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.26...@visulima/package@5.0.0-alpha.27) (2026-05-27) ([4375371](https://github.com/visulima/visulima/commit/437537147321233f4831dcc2df359ccff4d49f7c))
103
+ * **release:** @visulima/package@5.0.0-alpha.28 [skip ci]\n\n## @visulima/package [5.0.0-alpha.28](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.27...@visulima/package@5.0.0-alpha.28) (2026-06-02) ([e801c9e](https://github.com/visulima/visulima/commit/e801c9efb4dcbde63b849ed65ee3ec25f7753954))
104
+ * **release:** @visulima/package@5.0.0-alpha.29 [skip ci]\n\n## @visulima/package [5.0.0-alpha.29](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.28...@visulima/package@5.0.0-alpha.29) (2026-06-04) ([829c6a2](https://github.com/visulima/visulima/commit/829c6a2491a674524bf96ea9029476348fed74db))
105
+ * **release:** @visulima/package@5.0.0-alpha.3 [skip ci]\n\n## @visulima/package [5.0.0-alpha.3](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.2...@visulima/package@5.0.0-alpha.3) (2025-12-27) ([e0f007f](https://github.com/visulima/visulima/commit/e0f007fc51886ef0eaf6e7e3511be1a861ae7fc5))
106
+ * **release:** @visulima/package@5.0.0-alpha.30 [skip ci]\n\n## @visulima/package [5.0.0-alpha.30](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.29...@visulima/package@5.0.0-alpha.30) (2026-06-04) ([372f194](https://github.com/visulima/visulima/commit/372f1948b28ef5019588eae99509326d4f1c4a25))
107
+ * **release:** @visulima/package@5.0.0-alpha.31 [skip ci]\n\n## @visulima/package [5.0.0-alpha.31](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.30...@visulima/package@5.0.0-alpha.31) (2026-06-13) ([c9978bd](https://github.com/visulima/visulima/commit/c9978bdb292cfa9d8783336e5dc7bd76a5ace635))
108
+ * **release:** @visulima/package@5.0.0-alpha.32 [skip ci]\n\n## @visulima/package [5.0.0-alpha.32](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.31...@visulima/package@5.0.0-alpha.32) (2026-06-30) ([d4e57c0](https://github.com/visulima/visulima/commit/d4e57c061b5ec9e7827580efad05181447d8b918))
109
+ * **release:** @visulima/package@5.0.0-alpha.4 [skip ci]\n\n## @visulima/package [5.0.0-alpha.4](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.3...@visulima/package@5.0.0-alpha.4) (2026-03-06) ([c6feda0](https://github.com/visulima/visulima/commit/c6feda06008d3880a341d8603d8b479b16930642))
110
+ * **release:** @visulima/package@5.0.0-alpha.5 [skip ci]\n\n## @visulima/package [5.0.0-alpha.5](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.4...@visulima/package@5.0.0-alpha.5) (2026-03-26) ([a3c2294](https://github.com/visulima/visulima/commit/a3c2294724b5661a1d90ecbbbad02b4dba0cc6c3))
111
+ * **release:** @visulima/package@5.0.0-alpha.6 [skip ci]\n\n## @visulima/package [5.0.0-alpha.6](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.5...@visulima/package@5.0.0-alpha.6) (2026-03-26) ([a621c5b](https://github.com/visulima/visulima/commit/a621c5bf472601fdbaa0ff300d2868742abb178a))
112
+ * **release:** @visulima/package@5.0.0-alpha.7 [skip ci]\n\n## @visulima/package [5.0.0-alpha.7](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.6...@visulima/package@5.0.0-alpha.7) (2026-04-08) ([340daab](https://github.com/visulima/visulima/commit/340daab55d048a6239b7d255c53b12325916f044))
113
+ * **release:** @visulima/package@5.0.0-alpha.8 [skip ci]\n\n## @visulima/package [5.0.0-alpha.8](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.7...@visulima/package@5.0.0-alpha.8) (2026-04-21) ([6ab8891](https://github.com/visulima/visulima/commit/6ab88912134594f9f57bdd5d41ec409d35cb96b6))
114
+ * **release:** @visulima/package@5.0.0-alpha.9 [skip ci]\n\n## @visulima/package [5.0.0-alpha.9](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.8...@visulima/package@5.0.0-alpha.9) (2026-04-21) ([110222d](https://github.com/visulima/visulima/commit/110222d05e230e230f4568085a3a48232ddc8a51))
115
+ * **repo:** sort package.json keys across all packages ([e1fd9ab](https://github.com/visulima/visulima/commit/e1fd9ab467ef96a98c777da1572ff6a50fcf7e71))
116
+ * simplify pnpm-workspace packages list ([7cab221](https://github.com/visulima/visulima/commit/7cab221163632d9b7aa044a6f88c49083103a869))
117
+ * sorted package.json ([b47c545](https://github.com/visulima/visulima/commit/b47c545591600fdab17d5cd3a3fbc68b61e199da))
118
+ * **tooling:** apply prettier and eslint formatting sweep ([c2c641d](https://github.com/visulima/visulima/commit/c2c641d40242e99030cb990fa01039db5e267667))
119
+ * **tooling:** remove empty dependency objects from package.json ([dc52a23](https://github.com/visulima/visulima/commit/dc52a23bc1e2d36f4ec71ca67506bf6861a02929))
120
+ * **tooling:** update dependencies ([7f6f9d3](https://github.com/visulima/visulima/commit/7f6f9d3c41b170c53659ab34b79ceb23e4e9660a))
121
+ * 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))
122
+ * 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))
123
+ * update homepage URLs to visulima.com/packages/ format ([be42968](https://github.com/visulima/visulima/commit/be42968129df85fb074224435e33135ff44cab91))
124
+ * update lock file maintenance ([d83e716](https://github.com/visulima/visulima/commit/d83e71697b75d24704185b66bb521a934d2db02d))
125
+ * update the jsr.json ([864ab7e](https://github.com/visulima/visulima/commit/864ab7e71c4b5ae82f64792d1ae8debfea2c539b))
126
+ * upgrade `vitest` version to 4.0.15 in multiple package.json files and update lockfile for improved compatibility; adjust test cases for ESM package support in tooling tests ([0fba407](https://github.com/visulima/visulima/commit/0fba407e08283ba8c1c9488f99ca1f9ff676c4cf))
127
+ * visulima website ([#591](https://github.com/visulima/visulima/issues/591)) ([59ab2e2](https://github.com/visulima/visulima/commit/59ab2e2befb03e51cd2088956f83d9b87de6d033))
128
+ * year update ([47f4105](https://github.com/visulima/visulima/commit/47f410596ce7190cfea36a073db32e0cec50bbcd))
129
+
130
+ ### Code Refactoring
131
+
132
+ * replace execa with tinyexec ([56ec776](https://github.com/visulima/visulima/commit/56ec776908fe0c068c54542f3885cb29f061fea7))
133
+
134
+ ### Tests
135
+
136
+ * fix cross-platform flakes in package + cerebro ([#676](https://github.com/visulima/visulima/issues/676)) ([d1afb4b](https://github.com/visulima/visulima/commit/d1afb4ba743cf18bdf9f02081539d70bdcda91e9))
137
+ * **package:** cover confirm prompt, lockfile parsers, package-json/manager, monorepo, and pnpm workspace branches ([7916131](https://github.com/visulima/visulima/commit/7916131a2206a8ebefb0817d7ae0a340fdee2ba0))
138
+ * **package:** fix broken JSON test fixture ([46141d6](https://github.com/visulima/visulima/commit/46141d6472d8de20512109200a12e79c48ddc33c))
139
+ * **package:** skip JSON-content-vs-file collision tests on Windows ([5c2d2f1](https://github.com/visulima/visulima/commit/5c2d2f15a4e0b8bf2dad70251c402d1b3fe19796))
140
+ * **package:** stop partial process stub leaking across ensurePackages tests ([7059537](https://github.com/visulima/visulima/commit/705953754fe0a64612de06ff1140a9e744b25bfe))
141
+ * **repo:** add dist runtime + types integration tests ([32ee300](https://github.com/visulima/visulima/commit/32ee300b7184117a0ddf9f9d390f75f8932d5ed9))
142
+
143
+ ### Build System
144
+
145
+ * regenerate bundled-license manifests and types ordering ([af26588](https://github.com/visulima/visulima/commit/af26588d75aaa937fd4862800560bd4070a4878c))
146
+
147
+ ### Continuous Integration
148
+
149
+ * **fallow:** make fallow:health advisory (--report-only) ([d57148e](https://github.com/visulima/visulima/commit/d57148ea0e3556b4c24d8d336b9fa14987f5dc7d))
150
+
151
+
152
+ ### Dependencies
153
+
154
+ * **@visulima/fs:** upgraded to 5.0.0
155
+ * **@visulima/path:** upgraded to 3.0.0
156
+
157
+ ## @visulima/package [5.0.0-alpha.32](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.31...@visulima/package@5.0.0-alpha.32) (2026-06-30)
158
+
159
+ ### Styles
160
+
161
+ * cs fixes ([2a960bb](https://github.com/visulima/visulima/commit/2a960bb1772c9dc70080e2d75d3a0d827034e294))
162
+
163
+ ### Miscellaneous Chores
164
+
165
+ * add fallow code-intelligence across all packages ([a3b4821](https://github.com/visulima/visulima/commit/a3b48215002e86fed20f2973038b5d4a0aa1ce04))
166
+ * **fallow:** resolve dead-code findings ([c4125d5](https://github.com/visulima/visulima/commit/c4125d53e03ac9d90115399634535991927a96cc))
167
+
168
+ ### Tests
169
+
170
+ * **package:** skip JSON-content-vs-file collision tests on Windows ([5c2d2f1](https://github.com/visulima/visulima/commit/5c2d2f15a4e0b8bf2dad70251c402d1b3fe19796))
171
+
172
+ ### Continuous Integration
173
+
174
+ * **fallow:** make fallow:health advisory (--report-only) ([d57148e](https://github.com/visulima/visulima/commit/d57148ea0e3556b4c24d8d336b9fa14987f5dc7d))
175
+
176
+
177
+ ### Dependencies
178
+
179
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.33
180
+
181
+ ## @visulima/package [5.0.0-alpha.31](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.30...@visulima/package@5.0.0-alpha.31) (2026-06-13)
182
+
183
+ ### Features
184
+
185
+ * **package:** recognise the modern bun.lock text lockfile ([8fec531](https://github.com/visulima/visulima/commit/8fec531a20c32857de93c801d4b42e0eff32c6a8))
186
+
187
+ ### Bug Fixes
188
+
189
+ * **package:** replace unsafe type cast with String() coercions ([4c85a5e](https://github.com/visulima/visulima/commit/4c85a5e3fdeb194a0a2bbcee24b85ee23697d3ea))
190
+ * **package:** resolve caching and ReDoS findings ([fb9e5cb](https://github.com/visulima/visulima/commit/fb9e5cb0fbb5fad2078750464845c6b223e0afc5))
191
+
192
+ ### Tests
193
+
194
+ * **package:** stop partial process stub leaking across ensurePackages tests ([7059537](https://github.com/visulima/visulima/commit/705953754fe0a64612de06ff1140a9e744b25bfe))
195
+
196
+ ### Build System
197
+
198
+ * regenerate bundled-license manifests and types ordering ([af26588](https://github.com/visulima/visulima/commit/af26588d75aaa937fd4862800560bd4070a4878c))
199
+
200
+
201
+ ### Dependencies
202
+
203
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.32
204
+ * **@visulima/path:** upgraded to 3.0.0-alpha.13
205
+
206
+ ## @visulima/package [5.0.0-alpha.30](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.29...@visulima/package@5.0.0-alpha.30) (2026-06-04)
207
+
208
+
209
+ ### Dependencies
210
+
211
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.31
212
+
213
+ ## @visulima/package [5.0.0-alpha.29](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.28...@visulima/package@5.0.0-alpha.29) (2026-06-04)
214
+
215
+ ### Bug Fixes
216
+
217
+ * **lint:** clear pre-existing eslint rot across packages ([#674](https://github.com/visulima/visulima/issues/674)) ([5354253](https://github.com/visulima/visulima/commit/5354253b163bd50bcefaf8a3fddf831bdb5df32b))
218
+ * **package:** 4 bug fixes ([1e2fba6](https://github.com/visulima/visulima/commit/1e2fba6b0d048f3b90f4e0b428fd984d66f1431e))
219
+
220
+ ### Tests
221
+
222
+ * fix cross-platform flakes in package + cerebro ([#676](https://github.com/visulima/visulima/issues/676)) ([d1afb4b](https://github.com/visulima/visulima/commit/d1afb4ba743cf18bdf9f02081539d70bdcda91e9))
223
+
224
+
225
+ ### Dependencies
226
+
227
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.30
228
+ * **@visulima/path:** upgraded to 3.0.0-alpha.12
229
+
230
+ ## @visulima/package [5.0.0-alpha.28](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.27...@visulima/package@5.0.0-alpha.28) (2026-06-02)
231
+
232
+ ### Miscellaneous Chores
233
+
234
+ * apply eslint + prettier autofixes across packages ([c1bb784](https://github.com/visulima/visulima/commit/c1bb7848a0d93d0dfe2960c77e3cda22239c79a0))
235
+
236
+ ### Tests
237
+
238
+ * **package:** cover confirm prompt, lockfile parsers, package-json/manager, monorepo, and pnpm workspace branches ([7916131](https://github.com/visulima/visulima/commit/7916131a2206a8ebefb0817d7ae0a340fdee2ba0))
239
+
240
+
241
+ ### Dependencies
242
+
243
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.29
244
+
245
+ ## @visulima/package [5.0.0-alpha.27](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.26...@visulima/package@5.0.0-alpha.27) (2026-05-27)
246
+
247
+ ### Bug Fixes
248
+
249
+ * **storage-client:** percent-encode user fields in defaultFingerprint ([7c78a0f](https://github.com/visulima/visulima/commit/7c78a0f9512e2a673b941d80839e9f1e86b7b5d0))
250
+
251
+
252
+ ### Dependencies
253
+
254
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.28
255
+ * **@visulima/path:** upgraded to 3.0.0-alpha.11
256
+
257
+ ## @visulima/package [5.0.0-alpha.26](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.25...@visulima/package@5.0.0-alpha.26) (2026-05-26)
258
+
259
+ ### Miscellaneous Chores
260
+
261
+ * sorted package.json ([b47c545](https://github.com/visulima/visulima/commit/b47c545591600fdab17d5cd3a3fbc68b61e199da))
262
+
263
+
264
+ ### Dependencies
265
+
266
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.27
267
+
268
+ ## @visulima/package [5.0.0-alpha.25](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.24...@visulima/package@5.0.0-alpha.25) (2026-05-26)
269
+
270
+ ### Miscellaneous Chores
271
+
272
+ * **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))
273
+ * **repo:** sort package.json keys across all packages ([e1fd9ab](https://github.com/visulima/visulima/commit/e1fd9ab467ef96a98c777da1572ff6a50fcf7e71))
274
+
275
+ ### Tests
276
+
277
+ * **repo:** add dist runtime + types integration tests ([32ee300](https://github.com/visulima/visulima/commit/32ee300b7184117a0ddf9f9d390f75f8932d5ed9))
278
+
279
+
280
+ ### Dependencies
281
+
282
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.26
283
+
284
+ ## @visulima/package [5.0.0-alpha.24](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.23...@visulima/package@5.0.0-alpha.24) (2026-05-20)
285
+
286
+
287
+ ### Dependencies
288
+
289
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.25
290
+
291
+ ## @visulima/package [5.0.0-alpha.23](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.22...@visulima/package@5.0.0-alpha.23) (2026-05-19)
292
+
293
+
294
+ ### Dependencies
295
+
296
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.24
297
+
298
+ ## @visulima/package [5.0.0-alpha.22](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.21...@visulima/package@5.0.0-alpha.22) (2026-05-16)
299
+
300
+
301
+ ### Dependencies
302
+
303
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.23
304
+
305
+ ## @visulima/package [5.0.0-alpha.21](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.20...@visulima/package@5.0.0-alpha.21) (2026-05-14)
306
+
307
+ ### Miscellaneous Chores
308
+
309
+ * **tooling:** apply prettier and eslint formatting sweep ([c2c641d](https://github.com/visulima/visulima/commit/c2c641d40242e99030cb990fa01039db5e267667))
310
+
311
+
312
+ ### Dependencies
313
+
314
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.22
315
+
316
+ ## @visulima/package [5.0.0-alpha.20](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.19...@visulima/package@5.0.0-alpha.20) (2026-05-11)
317
+
318
+ ### ⚠ BREAKING CHANGES
319
+
320
+ * **vis:** vis sbom now emits CycloneDX 1.7. Downstream consumers
321
+ pinned to a 1.6 validator must upgrade.
322
+
323
+ Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
324
+
325
+ ### Features
326
+
327
+ * **vis:** bump sbom to cyclonedx 1.7 ([904075f](https://github.com/visulima/visulima/commit/904075fd9353e40b593d5a13f53307c584e31da7))
328
+
329
+
330
+ ### Dependencies
331
+
332
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.21
333
+
334
+ ## @visulima/package [5.0.0-alpha.19](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.18...@visulima/package@5.0.0-alpha.19) (2026-05-11)
335
+
336
+
337
+ ### Dependencies
338
+
339
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.20
340
+
341
+ ## @visulima/package [5.0.0-alpha.18](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.17...@visulima/package@5.0.0-alpha.18) (2026-05-10)
342
+
343
+
344
+ ### Dependencies
345
+
346
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.19
347
+
348
+ ## @visulima/package [5.0.0-alpha.17](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.16...@visulima/package@5.0.0-alpha.17) (2026-05-10)
349
+
350
+ ### Code Refactoring
351
+
352
+ * replace execa with tinyexec ([56ec776](https://github.com/visulima/visulima/commit/56ec776908fe0c068c54542f3885cb29f061fea7))
353
+
354
+
355
+ ### Dependencies
356
+
357
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.18
358
+
359
+ ## @visulima/package [5.0.0-alpha.16](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.15...@visulima/package@5.0.0-alpha.16) (2026-05-07)
360
+
361
+
362
+ ### Dependencies
363
+
364
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.17
365
+
366
+ ## @visulima/package [5.0.0-alpha.15](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.14...@visulima/package@5.0.0-alpha.15) (2026-05-07)
367
+
368
+
369
+ ### Dependencies
370
+
371
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.16
372
+
373
+ ## @visulima/package [5.0.0-alpha.14](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.13...@visulima/package@5.0.0-alpha.14) (2026-05-06)
374
+
375
+
376
+ ### Dependencies
377
+
378
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.15
379
+
380
+ ## @visulima/package [5.0.0-alpha.13](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.12...@visulima/package@5.0.0-alpha.13) (2026-05-06)
381
+
382
+ ### Miscellaneous Chores
383
+
384
+ * **package:** apply prettier and eslint quote-style auto-fix ([0316bca](https://github.com/visulima/visulima/commit/0316bca0deca444ff12675bc760c7091ce243d31))
385
+ * **package:** housekeeping cleanup ([113978b](https://github.com/visulima/visulima/commit/113978b0babcfc7879514aec076f6e2d5e7afab0))
386
+
387
+
388
+ ### Dependencies
389
+
390
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.14
391
+
392
+ ## @visulima/package [5.0.0-alpha.12](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.11...@visulima/package@5.0.0-alpha.12) (2026-05-04)
393
+
394
+ ### Miscellaneous Chores
395
+
396
+ * **package:** upgrade packem to 2.0.0-alpha.76 ([b2ef62b](https://github.com/visulima/visulima/commit/b2ef62b72a84545cb025a250cbe7e3e36b34330d))
397
+ * re-sort workspace package.json files via vis sort-package-json ([f625696](https://github.com/visulima/visulima/commit/f625696cfac974325774b3243e1a83c3d23acbd7))
398
+ * simplify pnpm-workspace packages list ([7cab221](https://github.com/visulima/visulima/commit/7cab221163632d9b7aa044a6f88c49083103a869))
399
+
400
+
401
+ ### Dependencies
402
+
403
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.13
404
+
405
+ ## @visulima/package [5.0.0-alpha.11](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.10...@visulima/package@5.0.0-alpha.11) (2026-04-22)
406
+
407
+ ### Bug Fixes
408
+
409
+ * 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))
410
+
411
+
412
+ ### Dependencies
413
+
414
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.12
415
+ * **@visulima/path:** upgraded to 3.0.0-alpha.10
416
+
417
+ ## @visulima/package [5.0.0-alpha.10](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.9...@visulima/package@5.0.0-alpha.10) (2026-04-21)
418
+
419
+ ### Miscellaneous Chores
420
+
421
+ * jsr.json update and lock file ([73fce38](https://github.com/visulima/visulima/commit/73fce38c7cb4603f3fffb88609b1b18e2feb4937))
422
+
423
+
424
+ ### Dependencies
425
+
426
+ * **@visulima/fs:** upgraded to 5.0.0-alpha.11
427
+
1
428
  ## @visulima/package [5.0.0-alpha.9](https://github.com/visulima/visulima/compare/@visulima/package@5.0.0-alpha.8...@visulima/package@5.0.0-alpha.9) (2026-04-21)
2
429
 
3
430
  ### Miscellaneous Chores
package/README.md CHANGED
@@ -155,6 +155,41 @@ const version = await getPackageManagerVersion("pnpm");
155
155
  // => '8.15.0'
156
156
  ```
157
157
 
158
+ > `getPackageManagerVersion` only accepts the known managers (`npm`, `pnpm`, `yarn`, `bun`) and throws on anything else, so a `packageManager`-derived value from an untrusted repo can't be executed as an arbitrary binary.
159
+
160
+ #### identifyInitiatingPackageManager
161
+
162
+ Detects which package manager is currently executing the process by reading the `npm_config_user_agent` environment variable. Useful inside `postinstall`/`prepare` scripts to print the right install command. Returns `undefined` when the variable is not set.
163
+
164
+ ```typescript
165
+ import { identifyInitiatingPackageManager } from "@visulima/package";
166
+
167
+ const pm = identifyInitiatingPackageManager();
168
+ // => { name: 'pnpm', version: '8.15.0' } | { name: 'cnpm', ... } | undefined
169
+ ```
170
+
171
+ #### generateMissingPackagesInstallMessage
172
+
173
+ Builds a human-readable message instructing the user how to install missing packages with each requested package manager.
174
+
175
+ ```typescript
176
+ import { generateMissingPackagesInstallMessage } from "@visulima/package";
177
+
178
+ const message = generateMissingPackagesInstallMessage("my-tool", ["typescript", "@types/node"], {
179
+ packageManagers: ["npm", "pnpm", "yarn"], // default: ["npm", "pnpm", "yarn"]
180
+ preMessage: "Some optional dependencies are missing.\n",
181
+ postMessage: "\nSee the docs for details.",
182
+ });
183
+
184
+ console.log(message);
185
+ // my-tool could not find the following packages
186
+ // typescript
187
+ // @types/node
188
+ // To install the missing packages, please run the following command:
189
+ // npm install typescript@latest @types/node@latest --save-dev
190
+ // ...
191
+ ```
192
+
158
193
  ### Package.json Operations
159
194
 
160
195
  #### parsePackageJson
@@ -218,6 +253,14 @@ const result3 = await parsePackageJson("./package.json", { cache: myCache }); //
218
253
  const result4 = await parsePackageJson({ name: "test" }, { cache: true }); // Always parsed fresh
219
254
  ```
220
255
 
256
+ The module-level cache used when `cache: true` (and no custom cache is supplied) never expires on its own. Writing through `writePackageJson[Sync]` evicts the written path automatically, but if you mutate a package file out of band (e.g. in a long-running process or test), call `clearPackageJsonCache()` to drop all cached reads:
257
+
258
+ ```typescript
259
+ import { clearPackageJsonCache } from "@visulima/package";
260
+
261
+ clearPackageJsonCache();
262
+ ```
263
+
221
264
  **Example File Formats**:
222
265
 
223
266
  ```yaml
@@ -335,6 +378,101 @@ import { ensurePackages } from "@visulima/package";
335
378
  await ensurePackages(packageJson, ["typescript", "@types/node"], "devDependencies");
336
379
  ```
337
380
 
381
+ ### Lockfile Parsing
382
+
383
+ A regex-based lockfile parser (no YAML dependency) covering all four mainstream JS package managers. Each entry is normalized to `{ name, version, integrity?, dependencies?, peerDependencies?, optionalDependencies? }`, so callers can build SBOMs, dedupe reports, or any other lockfile-derived artifact from a single source of truth.
384
+
385
+ Integrity support:
386
+
387
+ - **npm** (`package-lock.json` v2/v3): `integrity: "sha512-…"` ✅
388
+ - **pnpm** (`pnpm-lock.yaml`): `resolution: { integrity: "sha512-…" }` ✅
389
+ - **yarn v1** (Classic): `integrity "sha512-…"` ✅
390
+ - **yarn v2+** (Berry): emits `checksum: 10c0/…` (XXH64), which is not a cryptographic hash and is outside the CycloneDX 1.6 `HashAlgorithm` enum. Berry entries are still parsed (name / version / dependencies), but `integrity` is `undefined`.
391
+ - **bun** (`bun.lock`): `[versionKey, registryUrl, metadata, integrity]` tuples ✅
392
+
393
+ #### parseLockFile
394
+
395
+ Walks up from `cwd`, locates the nearest supported lockfile, reads it, and returns the parsed entries alongside the lockfile type and absolute path.
396
+
397
+ ```typescript
398
+ import { parseLockFile, parseLockFileSync } from "@visulima/package";
399
+
400
+ const result = await parseLockFile();
401
+ // => { entries: [{ name: 'react', version: '18.2.0', integrity: { algorithm: 'sha512', hex: '…' } }, …], path: '/path/to/pnpm-lock.yaml', type: 'pnpm' }
402
+
403
+ // Synchronous version
404
+ const resultSync = parseLockFileSync("./some/dir");
405
+ ```
406
+
407
+ #### Per-package-manager parsers
408
+
409
+ When you already have the lockfile contents (and know the format), call a specific parser directly. Each returns a `LockFileEntry[]`.
410
+
411
+ ```typescript
412
+ import { parseNpmLockFile, parsePnpmLockFile, parseYarnLockFile, parseBunLockFile } from "@visulima/package";
413
+ import { readFileSync } from "node:fs";
414
+
415
+ const entries = parsePnpmLockFile(readFileSync("./pnpm-lock.yaml", "utf8"));
416
+ ```
417
+
418
+ #### decodeSriIntegrity
419
+
420
+ Decodes a Subresource Integrity string (`sha512-<base64>`) into a `{ algorithm, hex }` pair. Returns `undefined` if the string is malformed, oversized, or uses an unsupported algorithm.
421
+
422
+ ```typescript
423
+ import { decodeSriIntegrity } from "@visulima/package";
424
+
425
+ const integrity = decodeSriIntegrity("sha512-…");
426
+ // => { algorithm: 'sha512', hex: '…' } | undefined
427
+ ```
428
+
429
+ ### pnpm Catalogs & Workspaces
430
+
431
+ Helpers for reading and resolving pnpm [catalog](https://pnpm.io/catalogs) references from `pnpm-workspace.yaml`.
432
+
433
+ #### readPnpmCatalogs
434
+
435
+ Reads the catalog definitions for the workspace that owns `packagePath`. Returns `undefined` when the package is not part of a pnpm workspace.
436
+
437
+ ```typescript
438
+ import { readPnpmCatalogs, readPnpmCatalogsSync } from "@visulima/package";
439
+
440
+ const catalogs = await readPnpmCatalogs("./packages/app/package.json");
441
+ // => { default: { react: '^18.0.0' }, named: { next: { react: '^19.0.0' } } } | undefined
442
+ ```
443
+
444
+ #### isPackageInWorkspace
445
+
446
+ Checks whether a package path is covered by a workspace's `packages:` globs.
447
+
448
+ ```typescript
449
+ import { isPackageInWorkspace } from "@visulima/package";
450
+
451
+ const inWorkspace = isPackageInWorkspace("/repo", "/repo/packages/app", ["packages/*"]);
452
+ // => true
453
+ ```
454
+
455
+ > Catalog references are also resolved automatically when you pass `resolveCatalogs: true` to `parsePackageJson[Sync]` / `findPackageJson[Sync]` (see above).
456
+
457
+ ### Subpath Exports
458
+
459
+ Every concern ships as its own entry point. Import from the narrowest one for the best tree-shaking — the root (`@visulima/package`) re-exports everything but pulls in all modules.
460
+
461
+ | Subpath | Contents |
462
+ | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
463
+ | `@visulima/package/monorepo` | `findMonorepoRoot[Sync]` |
464
+ | `@visulima/package/package` | `findPackageRoot[Sync]` |
465
+ | `@visulima/package/package-json` | `findPackageJson[Sync]`, `parsePackageJson[Sync]`, `writePackageJson[Sync]`, `clearPackageJsonCache`, property helpers, `ensurePackages` |
466
+ | `@visulima/package/package-manager` | `findPackageManager[Sync]`, `findLockFile[Sync]`, `getPackageManagerVersion`, `identifyInitiatingPackageManager`, `generateMissingPackagesInstallMessage` |
467
+ | `@visulima/package/lockfile` | `parseLockFile[Sync]`, `parseNpmLockFile`, `parsePnpmLockFile`, `parseYarnLockFile`, `parseBunLockFile`, `decodeSriIntegrity` |
468
+ | `@visulima/package/pnpm` | `readPnpmCatalogs[Sync]`, `resolveCatalogReference[s]`, `resolveDependenciesCatalogReferences`, `isPackageInWorkspace` |
469
+ | `@visulima/package/error` | `PackageNotFoundError` |
470
+
471
+ ```typescript
472
+ import { parseLockFile } from "@visulima/package/lockfile";
473
+ import { readPnpmCatalogs } from "@visulima/package/pnpm";
474
+ ```
475
+
338
476
  ## Supported Node.js Versions
339
477
 
340
478
  Libraries in this ecosystem make the best effort to track [Node.js’ release schedule](https://github.com/nodejs/release#release-schedule).
package/dist/error.d.ts CHANGED
@@ -1 +1,15 @@
1
- export { default as PackageNotFoundError } from "./error/package-not-found-error.d.ts";
1
+ /**
2
+ * Error thrown when a package was not found.
3
+ */
4
+ declare class PackageNotFoundError extends Error {
5
+ /**
6
+ * @param packageName The name of the package that was not found.
7
+ * @param packageManager The package manager used to install the package.
8
+ */
9
+ constructor(packageName: string[] | string, packageManager?: string);
10
+ get code(): string;
11
+ set code(_name: string);
12
+ override get name(): string;
13
+ override set name(_name: string);
14
+ }
15
+ export { PackageNotFoundError };
package/dist/error.js CHANGED
@@ -1 +1 @@
1
- export { default as PackageNotFoundError } from './packem_shared/PackageNotFoundError-C0ltLzw7.js';
1
+ import{default as a}from"./packem_shared/PackageNotFoundError-Bi41exhP.js";export{a as PackageNotFoundError};