@visulima/vis 4.3.1 → 6.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.
Files changed (168) hide show
  1. package/CHANGELOG.md +598 -0
  2. package/LICENSE.md +151 -88
  3. package/README.md +2 -2
  4. package/dist/bin.js +1 -1
  5. package/dist/binx.js +1 -1
  6. package/dist/config/index.d.ts +42 -19
  7. package/dist/packem_chunks/CONFIG_FILES.js +4 -4
  8. package/dist/packem_chunks/bloom-status.js +1 -1
  9. package/dist/packem_chunks/bloom-sync.js +1 -1
  10. package/dist/packem_chunks/catalog.js +61 -51
  11. package/dist/packem_chunks/cli-exec.js +1 -1
  12. package/dist/packem_chunks/cli-main.js +202 -176
  13. package/dist/packem_chunks/dart-plan.js +1 -1
  14. package/dist/packem_chunks/dart-projects.js +1 -1
  15. package/dist/packem_chunks/dispatch.js +1 -1
  16. package/dist/packem_chunks/doctor-probe.js +1 -1
  17. package/dist/packem_chunks/fix.js +1 -1
  18. package/dist/packem_chunks/handler.js +1 -1
  19. package/dist/packem_chunks/handler10.js +4 -4
  20. package/dist/packem_chunks/handler11.js +1 -1
  21. package/dist/packem_chunks/handler12.js +1 -1
  22. package/dist/packem_chunks/handler13.js +1 -1
  23. package/dist/packem_chunks/handler14.js +1 -1
  24. package/dist/packem_chunks/handler15.js +1 -1
  25. package/dist/packem_chunks/handler16.js +1 -1
  26. package/dist/packem_chunks/handler17.js +1 -1
  27. package/dist/packem_chunks/handler18.js +1 -1
  28. package/dist/packem_chunks/handler19.js +1 -1
  29. package/dist/packem_chunks/handler2.js +1 -1
  30. package/dist/packem_chunks/handler20.js +2 -2
  31. package/dist/packem_chunks/handler21.js +1 -1
  32. package/dist/packem_chunks/handler22.js +2 -2
  33. package/dist/packem_chunks/handler23.js +1 -1
  34. package/dist/packem_chunks/handler24.js +1 -1
  35. package/dist/packem_chunks/handler26.js +5 -5
  36. package/dist/packem_chunks/handler27.js +1 -1
  37. package/dist/packem_chunks/handler28.js +1 -1
  38. package/dist/packem_chunks/handler29.js +1 -1
  39. package/dist/packem_chunks/handler3.js +1 -1
  40. package/dist/packem_chunks/handler30.js +1 -1
  41. package/dist/packem_chunks/handler39.js +6 -6
  42. package/dist/packem_chunks/handler5.js +1 -1
  43. package/dist/packem_chunks/handler50.js +2 -2
  44. package/dist/packem_chunks/handler51.js +1 -1
  45. package/dist/packem_chunks/handler53.js +1 -1
  46. package/dist/packem_chunks/handler54.js +1 -1
  47. package/dist/packem_chunks/handler55.js +1 -1
  48. package/dist/packem_chunks/handler58.js +1 -1
  49. package/dist/packem_chunks/handler59.js +1 -1
  50. package/dist/packem_chunks/handler6.js +1 -1
  51. package/dist/packem_chunks/handler60.js +7 -7
  52. package/dist/packem_chunks/handler61.js +2 -2
  53. package/dist/packem_chunks/handler62.js +10 -10
  54. package/dist/packem_chunks/handler63.js +1 -1
  55. package/dist/packem_chunks/handler64.js +6 -3
  56. package/dist/packem_chunks/handler65.js +8 -6
  57. package/dist/packem_chunks/handler66.js +2 -2
  58. package/dist/packem_chunks/handler67.js +31 -20
  59. package/dist/packem_chunks/handler68.js +1 -1
  60. package/dist/packem_chunks/handler69.js +22 -153
  61. package/dist/packem_chunks/handler7.js +1 -1
  62. package/dist/packem_chunks/handler70.js +9 -9
  63. package/dist/packem_chunks/handler71.js +153 -22
  64. package/dist/packem_chunks/handler72.js +1 -1
  65. package/dist/packem_chunks/handler73.js +1 -1
  66. package/dist/packem_chunks/handler74.js +1 -1
  67. package/dist/packem_chunks/handler75.js +35 -35
  68. package/dist/packem_chunks/handler76.js +1 -1
  69. package/dist/packem_chunks/handler77.js +3 -3
  70. package/dist/packem_chunks/handler78.js +69 -67
  71. package/dist/packem_chunks/handler8.js +1 -1
  72. package/dist/packem_chunks/handler9.js +1 -1
  73. package/dist/packem_chunks/heal-accept.js +1 -1
  74. package/dist/packem_chunks/heal.js +1 -1
  75. package/dist/packem_chunks/help-command.js +40 -7
  76. package/dist/packem_chunks/index2.js +32 -32
  77. package/dist/packem_chunks/index6.js +1 -1
  78. package/dist/packem_chunks/keys-refresh.js +1 -1
  79. package/dist/packem_chunks/lean.js +3 -4
  80. package/dist/packem_chunks/list.js +1 -1
  81. package/dist/packem_chunks/loader.js +1 -1
  82. package/dist/packem_chunks/orchestrator.js +1 -1
  83. package/dist/packem_chunks/prompts.js +1 -1
  84. package/dist/packem_chunks/status.js +1 -1
  85. package/dist/packem_chunks/sync.js +1 -1
  86. package/dist/packem_chunks/sync2.js +1 -1
  87. package/dist/packem_chunks/tar.js +1 -1
  88. package/dist/packem_chunks/tripwire.js +1 -1
  89. package/dist/packem_chunks/ts-loader.js +5 -5
  90. package/dist/packem_chunks/verify-lockfile.js +1 -1
  91. package/dist/packem_shared/{affected-selection-D4giBK2X.js → affected-selection-DDxwjwM4.js} +1 -1
  92. package/dist/packem_shared/affected-shas-BuaWvmsG.js +1 -0
  93. package/dist/packem_shared/{ai-fix-BC6aIRJT.js → ai-fix-C2BhFFhi.js} +5 -5
  94. package/dist/packem_shared/{augment-B9kSZuvW.js → augment-CxUPE8KX.js} +1 -1
  95. package/dist/packem_shared/{bin-C1XKj-O-.js → bin-Be7_QhQK.js} +1 -1
  96. package/dist/packem_shared/{build-scripts-CEDx_nJp.js → build-scripts-DxyVSkgM.js} +1 -1
  97. package/dist/packem_shared/command-runtime-BXvH5EC0.js +1 -0
  98. package/dist/packem_shared/{dart-pubspec-BK_cK2EP.js → dart-pubspec-DvmyleIr.js} +2 -2
  99. package/dist/packem_shared/{dependency-scan-B8jroa1D.js → dependency-scan-DKK3ZEZI.js} +1 -1
  100. package/dist/packem_shared/{docker-DXqV-07f.js → docker-BTuwdXaC.js} +1 -1
  101. package/dist/packem_shared/{ecosystem-gate-ddru_hOg.js → ecosystem-gate-BpQNUJzN.js} +1 -1
  102. package/dist/packem_shared/env-consistency-CUBJHENL.js +1 -0
  103. package/dist/packem_shared/{failure-log-D2x5BT8S.js → failure-log-kp0n2rbD.js} +1 -1
  104. package/dist/packem_shared/{formatBytes-BHAzNIrn-CrusHOew.js → formatBytes-BHAzNIrn-DRcKvqnb.js} +1 -1
  105. package/dist/packem_shared/git-source-DExWbfN0.js +2 -0
  106. package/dist/packem_shared/{index-BzhrR_iC.js → index-BdMIfGVZ.js} +15 -15
  107. package/dist/packem_shared/index-C9ENZqH9.js +39 -0
  108. package/dist/packem_shared/{index-Chje3u9v.js → index-DQfNpt2u.js} +1 -1
  109. package/dist/packem_shared/{index-DQ2GJzmy.js → index-DsSWb5XH.js} +1 -1
  110. package/dist/packem_shared/{index.server-sXNQYpsl.js → index.server-D8BLnYZO.js} +2 -2
  111. package/dist/packem_shared/{isAccessibleSync-DYKTrrvc-C-_5cgwu.js → isAccessibleSync-DYKTrrvc-BwaMhQs0.js} +1 -1
  112. package/dist/packem_shared/{lifecycle-D6PMPor-.js → lifecycle-BAhkhE2L.js} +1 -1
  113. package/dist/packem_shared/{lockfile-CiUtEbnt.js → lockfile-DHmlPGk1.js} +1 -1
  114. package/dist/packem_shared/{manifests-Du4yKlf_.js → manifests-Dd4Hoztt.js} +1 -1
  115. package/dist/packem_shared/{min-release-age-JViyQuBM.js → min-release-age-BJnOQaoF.js} +1 -1
  116. package/dist/packem_shared/{missing-package-json-Cu5YVAot.js → missing-package-json-DfzrGwe1.js} +1 -1
  117. package/dist/packem_shared/{multi-eco-lockfiles-B2X3yhyo.js → multi-eco-lockfiles-BIa6xvJc.js} +1 -1
  118. package/dist/packem_shared/{native-config-sync-TdTWjVgI.js → native-config-sync-Dr9XvxOf.js} +1 -1
  119. package/dist/packem_shared/osv-bloom-t40ra5U5.js +2 -0
  120. package/dist/packem_shared/{package-version-Dxirp-UO.js → package-version-CFuNUWDG.js} +2 -2
  121. package/dist/packem_shared/{packument-BQv4je9m.js → packument-C9nRiBJf.js} +1 -1
  122. package/dist/packem_shared/pm-runner-ImwtpnWY.js +1 -0
  123. package/dist/packem_shared/{project-name-filter-D6tXD8gd.js → project-name-filter-C2rkW-Vn.js} +1 -1
  124. package/dist/packem_shared/{provenance-DNyVMxNv.js → provenance-DF-ypZj3.js} +1 -1
  125. package/dist/packem_shared/{readJsonSync-CbryXYxN-EWl7_7KX.js → readJsonSync-CbryXYxN-Bm5i10UW.js} +1 -1
  126. package/dist/packem_shared/{registry-keys-DwB3ZXS_.js → registry-keys-BLuHOyZu.js} +1 -1
  127. package/dist/packem_shared/{resolve-explicit-BPsdmuty.js → resolve-explicit-BDaQRR6o.js} +1 -1
  128. package/dist/packem_shared/resolve-runtime-Cr19Pk6L.js +1 -0
  129. package/dist/packem_shared/{run-file-UBukWaha.js → run-file-XbRCF6Mp.js} +1 -1
  130. package/dist/packem_shared/{runtime-check-1U8HrQd9.js → runtime-check-Bh5q9IrT.js} +1 -1
  131. package/dist/packem_shared/{s1ngularity-QD2LD1sO.js → s1ngularity-UCZN7skW.js} +1 -1
  132. package/dist/packem_shared/{scan-progress-CkumcBG-.js → scan-progress-DcYI76zE.js} +1 -1
  133. package/dist/packem_shared/{selectors-edwcgNl3.js → selectors-DCiEU0iv.js} +2 -2
  134. package/dist/packem_shared/{signatures-t8LbOaqr.js → signatures-CicxPHN4.js} +1 -1
  135. package/dist/packem_shared/target-merge-BClIXg2k.js +14 -0
  136. package/dist/packem_shared/{target-options-DsHFmRZH.js → target-options-PgWIuJnb.js} +1 -1
  137. package/dist/packem_shared/task-env-Dl08aklA.js +2 -0
  138. package/dist/packem_shared/toolchain-DvUxlbDz.js +5 -0
  139. package/dist/packem_shared/{typosquats-8u0drCqQ.js → typosquats-DxPzyK7u.js} +1 -1
  140. package/dist/packem_shared/{verify-B_MblU_Q.js → verify-CadR9PUk.js} +1 -1
  141. package/dist/packem_shared/{vis-update-app-BCIccZfA.js → vis-update-app-DrFWQyPn.js} +1 -1
  142. package/dist/packem_shared/{vis-user-error-75VtCwMv.js → vis-user-error-k7CLTpA4.js} +15 -15
  143. package/dist/packem_shared/{watch-CcTketln.js → watch-Dr_6yz3o.js} +1 -1
  144. package/dist/packem_shared/watch-loop-BId9vT7Q.js +11 -0
  145. package/dist/packem_shared/{writeFileSync-DJoHk3Ks-BPRoepNw.js → writeFileSync-DJoHk3Ks-Dhem3Uof.js} +1 -1
  146. package/dist/release/core/version-actions/index.d.ts +1 -1
  147. package/dist/release/presets.d.ts +1 -55
  148. package/dist/release/presets.js +1 -1
  149. package/dist/release/types.d.ts +1 -18
  150. package/dist/runtime/preload.js +1 -1
  151. package/index.d.ts +204 -204
  152. package/index.js +52 -52
  153. package/package.json +10 -10
  154. package/schemas/project.schema.json +44 -1
  155. package/schemas/vis-config.schema.json +128 -35
  156. package/schemas/vis-release-config.schema.json +1 -12
  157. package/skills/vis/SKILL.md +24 -12
  158. package/dist/packem_shared/Table-BB8xHTU5-BLPS917D.js +0 -11
  159. package/dist/packem_shared/affected-shas-B2V84O0g.js +0 -1
  160. package/dist/packem_shared/command-runtime-p4IXiIf6.js +0 -1
  161. package/dist/packem_shared/giget-D8Kwb0kD.js +0 -2
  162. package/dist/packem_shared/index-BisalDCf.js +0 -39
  163. package/dist/packem_shared/osv-bloom-BCAX5ARR.js +0 -2
  164. package/dist/packem_shared/pm-runner-CMSml1Bj.js +0 -1
  165. package/dist/packem_shared/resolve-runtime-CNiHcVtx.js +0 -1
  166. package/dist/packem_shared/target-merge-DVJl-7Qz.js +0 -4
  167. package/dist/packem_shared/toolchain-BRdpaAC4.js +0 -5
  168. package/dist/packem_shared/watch-loop-qRn0IHPG.js +0 -11
package/LICENSE.md CHANGED
@@ -1187,36 +1187,6 @@ Repository: git+https://github.com/visulima/visulima.git
1187
1187
  > > MIT
1188
1188
  > >
1189
1189
  > > # Bundled dependencies:
1190
- > > ## codsen-format-diagnostic-value
1191
- > > License: MIT
1192
- > > By: Roy Revelt
1193
- > > Repository: git+https://github.com/codsen/codsen.git
1194
- > >
1195
- > > > MIT License
1196
- > > >
1197
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1198
- > > >
1199
- > > > Permission is hereby granted, free of charge, to any person obtaining
1200
- > > > a copy of this software and associated documentation files (the
1201
- > > > "Software"), to deal in the Software without restriction, including
1202
- > > > without limitation the rights to use, copy, modify, merge, publish,
1203
- > > > distribute, sublicense, and/or sell copies of the Software, and to
1204
- > > > permit persons to whom the Software is furnished to do so, subject to
1205
- > > > the following conditions:
1206
- > > >
1207
- > > > The above copyright notice and this permission notice shall be
1208
- > > > included in all copies or substantial portions of the Software.
1209
- > > >
1210
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1211
- > > > EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1212
- > > > MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1213
- > > > NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
1214
- > > > LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
1215
- > > > OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
1216
- > > > WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1217
- > >
1218
- > > ---------------------------------------
1219
- > >
1220
1190
  > > ## codsen-utils
1221
1191
  > > License: MIT
1222
1192
  > > By: Roy Revelt
@@ -1224,7 +1194,7 @@ Repository: git+https://github.com/visulima/visulima.git
1224
1194
  > >
1225
1195
  > > > MIT License
1226
1196
  > > >
1227
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1197
+ > > > Copyright © 2010-2025 Roy Revelt and other contributors
1228
1198
  > > >
1229
1199
  > > > Permission is hereby granted, free of charge, to any person obtaining
1230
1200
  > > > a copy of this software and associated documentation files (the
@@ -1322,14 +1292,68 @@ Repository: git+https://github.com/visulima/visulima.git
1322
1292
  > >
1323
1293
  > > ---------------------------------------
1324
1294
  > >
1325
- > > ## html-entity-codec
1295
+ > > ## html-entities
1326
1296
  > > License: MIT
1327
- > > By: Roy Revelt
1328
- > > Repository: git+https://github.com/codsen/codsen.git
1297
+ > > By: Marat Dulin
1298
+ > > Repository: https://github.com/mdevils/html-entities.git
1299
+ > >
1300
+ > > > Copyright (c) 2021 Dulin Marat
1301
+ > > >
1302
+ > > > Permission is hereby granted, free of charge, to any person obtaining a copy
1303
+ > > > of this software and associated documentation files (the "Software"), to deal
1304
+ > > > in the Software without restriction, including without limitation the rights
1305
+ > > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1306
+ > > > copies of the Software, and to permit persons to whom the Software is
1307
+ > > > furnished to do so, subject to the following conditions:
1308
+ > > >
1309
+ > > > The above copyright notice and this permission notice shall be included in
1310
+ > > > all copies or substantial portions of the Software.
1311
+ > > >
1312
+ > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1313
+ > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1314
+ > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1315
+ > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1316
+ > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1317
+ > > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1318
+ > > > THE SOFTWARE.
1319
+ > >
1320
+ > > ---------------------------------------
1321
+ > >
1322
+ > > ## indent-string
1323
+ > > License: MIT
1324
+ > > By: Sindre Sorhus
1325
+ > > Repository: sindresorhus/indent-string
1329
1326
  > >
1330
1327
  > > > MIT License
1331
1328
  > > >
1332
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1329
+ > > > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
1330
+ > > >
1331
+ > > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1332
+ > > >
1333
+ > > > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1334
+ > > >
1335
+ > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1336
+ > >
1337
+ > > ---------------------------------------
1338
+ > >
1339
+ > > ## lodash-es
1340
+ > > License: MIT
1341
+ > > By: John-David Dalton, Mathias Bynens
1342
+ > > Repository: lodash/lodash
1343
+ > >
1344
+ > > > Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
1345
+ > > >
1346
+ > > > Based on Underscore.js, copyright Jeremy Ashkenas,
1347
+ > > > DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
1348
+ > > >
1349
+ > > > This software consists of voluntary contributions made by many
1350
+ > > > individuals. For exact contribution history, see the revision history
1351
+ > > > available at https://github.com/lodash/lodash
1352
+ > > >
1353
+ > > > The following license applies to all parts of this software except as
1354
+ > > > documented below:
1355
+ > > >
1356
+ > > > ====
1333
1357
  > > >
1334
1358
  > > > Permission is hereby granted, free of charge, to any person obtaining
1335
1359
  > > > a copy of this software and associated documentation files (the
@@ -1349,23 +1373,21 @@ Repository: git+https://github.com/visulima/visulima.git
1349
1373
  > > > LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
1350
1374
  > > > OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
1351
1375
  > > > WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1352
- > >
1353
- > > ---------------------------------------
1354
- > >
1355
- > > ## indent-string
1356
- > > License: MIT
1357
- > > By: Sindre Sorhus
1358
- > > Repository: sindresorhus/indent-string
1359
- > >
1360
- > > > MIT License
1361
1376
  > > >
1362
- > > > Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)
1377
+ > > > ====
1363
1378
  > > >
1364
- > > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1379
+ > > > Copyright and related rights for sample code are waived via CC0. Sample
1380
+ > > > code is defined as all source code displayed within the prose of the
1381
+ > > > documentation.
1365
1382
  > > >
1366
- > > > The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1383
+ > > > CC0: http://creativecommons.org/publicdomain/zero/1.0/
1367
1384
  > > >
1368
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1385
+ > > > ====
1386
+ > > >
1387
+ > > > Files located in the node_modules and vendor directories are externally
1388
+ > > > maintained libraries used by this software which have their own
1389
+ > > > licenses; we recommend you read them, as their terms may differ from the
1390
+ > > > terms above.
1369
1391
  > >
1370
1392
  > > ---------------------------------------
1371
1393
  > >
@@ -1376,7 +1398,7 @@ Repository: git+https://github.com/visulima/visulima.git
1376
1398
  > >
1377
1399
  > > > MIT License
1378
1400
  > > >
1379
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1401
+ > > > Copyright © 2010-2025 Roy Revelt and other contributors
1380
1402
  > > >
1381
1403
  > > > Permission is hereby granted, free of charge, to any person obtaining
1382
1404
  > > > a copy of this software and associated documentation files (the
@@ -1406,7 +1428,7 @@ Repository: git+https://github.com/visulima/visulima.git
1406
1428
  > >
1407
1429
  > > > MIT License
1408
1430
  > > >
1409
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1431
+ > > > Copyright © 2010-2025 Roy Revelt and other contributors
1410
1432
  > > >
1411
1433
  > > > Permission is hereby granted, free of charge, to any person obtaining
1412
1434
  > > > a copy of this software and associated documentation files (the
@@ -1436,7 +1458,7 @@ Repository: git+https://github.com/visulima/visulima.git
1436
1458
  > >
1437
1459
  > > > MIT License
1438
1460
  > > >
1439
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1461
+ > > > Copyright © 2010-2025 Roy Revelt and other contributors
1440
1462
  > > >
1441
1463
  > > > Permission is hereby granted, free of charge, to any person obtaining
1442
1464
  > > > a copy of this software and associated documentation files (the
@@ -1466,7 +1488,7 @@ Repository: git+https://github.com/visulima/visulima.git
1466
1488
  > >
1467
1489
  > > > MIT License
1468
1490
  > > >
1469
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1491
+ > > > Copyright © 2010-2025 Roy Revelt and other contributors
1470
1492
  > > >
1471
1493
  > > > Permission is hereby granted, free of charge, to any person obtaining
1472
1494
  > > > a copy of this software and associated documentation files (the
@@ -1506,6 +1528,29 @@ Repository: git+https://github.com/visulima/visulima.git
1506
1528
  > >
1507
1529
  > > ---------------------------------------
1508
1530
  > >
1531
+ > > ## rfdc
1532
+ > > License: MIT
1533
+ > > By: David Mark Clements
1534
+ > > Repository: git+https://github.com/davidmarkclements/rfdc.git
1535
+ > >
1536
+ > > > Copyright 2019 "David Mark Clements <david.mark.clements@gmail.com>"
1537
+ > > >
1538
+ > > > Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
1539
+ > > > documentation files (the "Software"), to deal in the Software without restriction, including without limitation
1540
+ > > > the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and
1541
+ > > > to permit persons to whom the Software is furnished to do so, subject to the following conditions:
1542
+ > > >
1543
+ > > > The above copyright notice and this permission notice shall be included in all copies or substantial portions
1544
+ > > > of the Software.
1545
+ > > >
1546
+ > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
1547
+ > > > TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
1548
+ > > > THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
1549
+ > > > CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1550
+ > > > IN THE SOFTWARE.
1551
+ > >
1552
+ > > ---------------------------------------
1553
+ > >
1509
1554
  > > ## string-collapse-leading-whitespace
1510
1555
  > > License: MIT
1511
1556
  > > By: Roy Revelt
@@ -1513,7 +1558,7 @@ Repository: git+https://github.com/visulima/visulima.git
1513
1558
  > >
1514
1559
  > > > MIT License
1515
1560
  > > >
1516
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1561
+ > > > Copyright © 2010-2025 Roy Revelt and other contributors
1517
1562
  > > >
1518
1563
  > > > Permission is hereby granted, free of charge, to any person obtaining
1519
1564
  > > > a copy of this software and associated documentation files (the
@@ -1543,7 +1588,7 @@ Repository: git+https://github.com/visulima/visulima.git
1543
1588
  > >
1544
1589
  > > > MIT License
1545
1590
  > > >
1546
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1591
+ > > > Copyright © 2010-2025 Roy Revelt and other contributors
1547
1592
  > > >
1548
1593
  > > > Permission is hereby granted, free of charge, to any person obtaining
1549
1594
  > > > a copy of this software and associated documentation files (the
@@ -1573,7 +1618,7 @@ Repository: git+https://github.com/visulima/visulima.git
1573
1618
  > >
1574
1619
  > > > MIT License
1575
1620
  > > >
1576
- > > > Copyright © 2010-2026 Roy Revelt and other contributors
1621
+ > > > Copyright © 2010-2025 Roy Revelt and other contributors
1577
1622
  > > >
1578
1623
  > > > Permission is hereby granted, free of charge, to any person obtaining
1579
1624
  > > > a copy of this software and associated documentation files (the
@@ -1611,6 +1656,35 @@ Repository: git+https://github.com/visulima/visulima.git
1611
1656
  > > >
1612
1657
  > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1613
1658
  > >
1659
+ > > ---------------------------------------
1660
+ > >
1661
+ > > ## tiny-invariant
1662
+ > > License: MIT
1663
+ > > By: Alex Reardon
1664
+ > > Repository: https://github.com/alexreardon/tiny-invariant.git
1665
+ > >
1666
+ > > > MIT License
1667
+ > > >
1668
+ > > > Copyright (c) 2019 Alexander Reardon
1669
+ > > >
1670
+ > > > Permission is hereby granted, free of charge, to any person obtaining a copy
1671
+ > > > of this software and associated documentation files (the "Software"), to deal
1672
+ > > > in the Software without restriction, including without limitation the rights
1673
+ > > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1674
+ > > > copies of the Software, and to permit persons to whom the Software is
1675
+ > > > furnished to do so, subject to the following conditions:
1676
+ > > >
1677
+ > > > The above copyright notice and this permission notice shall be included in all
1678
+ > > > copies or substantial portions of the Software.
1679
+ > > >
1680
+ > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1681
+ > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1682
+ > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1683
+ > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1684
+ > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1685
+ > > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
1686
+ > > > SOFTWARE.
1687
+ > >
1614
1688
  > >
1615
1689
  > >
1616
1690
  > >
@@ -3280,41 +3354,9 @@ Repository: git+https://github.com/visulima/visulima.git
3280
3354
  > >
3281
3355
  > > # Licenses of bundled types
3282
3356
  > > The published @visulima/fs artifact additionally contains code with the following licenses:
3283
- > > MIT
3357
+ > > ISC, MIT
3284
3358
  > >
3285
3359
  > > # Bundled types:
3286
- > > ## @visulima/yaml
3287
- > > License: MIT
3288
- > > By: Daniel Bannert
3289
- > > Repository: git+https://github.com/visulima/visulima.git
3290
- > >
3291
- > > > MIT License
3292
- > > >
3293
- > > > Copyright (c) 2026 visulima
3294
- > > >
3295
- > > > Permission is hereby granted, free of charge, to any person obtaining a copy
3296
- > > > of this software and associated documentation files (the "Software"), to deal
3297
- > > > in the Software without restriction, including without limitation the rights
3298
- > > > to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
3299
- > > > copies of the Software, and to permit persons to whom the Software is
3300
- > > > furnished to do so, subject to the following conditions:
3301
- > > >
3302
- > > > The above copyright notice and this permission notice shall be included in all
3303
- > > > copies or substantial portions of the Software.
3304
- > > >
3305
- > > > THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3306
- > > > IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3307
- > > > FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3308
- > > > AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3309
- > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3310
- > > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3311
- > > > SOFTWARE.
3312
- > > >
3313
- > > >
3314
- > > >
3315
- > >
3316
- > > ---------------------------------------
3317
- > >
3318
3360
  > > ## is-fs-case-sensitive
3319
3361
  > > License: MIT
3320
3362
  > > By: Hiroki Osame
@@ -3370,6 +3412,27 @@ Repository: git+https://github.com/visulima/visulima.git
3370
3412
  > > > LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
3371
3413
  > > > OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3372
3414
  > > > SOFTWARE.
3415
+ > >
3416
+ > > ---------------------------------------
3417
+ > >
3418
+ > > ## yaml
3419
+ > > License: ISC
3420
+ > > By: Eemeli Aro
3421
+ > > Repository: github:eemeli/yaml
3422
+ > >
3423
+ > > > Copyright Eemeli Aro <eemeli@gmail.com>
3424
+ > > >
3425
+ > > > Permission to use, copy, modify, and/or distribute this software for any purpose
3426
+ > > > with or without fee is hereby granted, provided that the above copyright notice
3427
+ > > > and this permission notice appear in all copies.
3428
+ > > >
3429
+ > > > THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
3430
+ > > > REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
3431
+ > > > FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
3432
+ > > > INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
3433
+ > > > OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
3434
+ > > > TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
3435
+ > > > THIS SOFTWARE.
3373
3436
  >
3374
3437
  > ---------------------------------------
3375
3438
  >
package/README.md CHANGED
@@ -233,8 +233,8 @@ When aube is the installer, `vis doctor` surfaces aube's effective hardening pos
233
233
  | `vis hook <action>` | | Manage git hooks (install, uninstall, migrate) |
234
234
  | `vis secrets [paths]` | | Scan for hardcoded secrets / credentials (Rust-native) |
235
235
  | `vis toolchain <cmd>` | | Inspect / delegate to the version manager (proto, mise, fnm, volta…) |
236
- | `vis lint [files]` | | Orchestrate detected source-code linters (oxlint, biome, eslint, stylelint, deno-lint) |
237
- | `vis fmt [files]` | | Orchestrate detected formatters (oxfmt, biome, dprint, prettier, deno-fmt) |
236
+ | `vis lint [files]` | | Orchestrate detected source-code linters (oxlint, biome, eslint, stylelint) |
237
+ | `vis fmt [files]` | | Orchestrate detected formatters (oxfmt, biome, dprint, prettier) |
238
238
  | `vis staged` | | Run tasks on staged files (built-in `lint-staged` replacement) |
239
239
  | `vis migrate <type>` | | Migrate from other tools — now including `gitleaks` and `secretlint` |
240
240
 
package/dist/bin.js CHANGED
@@ -1 +1 @@
1
- import"./packem_shared/compile-cache-DoMHRsRZ.js";import"./packem_shared/bin-C1XKj-O-.js";
1
+ import"./packem_shared/compile-cache-DoMHRsRZ.js";import"./packem_shared/bin-Be7_QhQK.js";
package/dist/binx.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import{a as r,x as i,i as c,d as a,r as d}from"./packem_shared/vis-user-error-75VtCwMv.js";import{t as n}from"./packem_shared/compile-cache-DoMHRsRZ.js";import{g as o}from"./packem_shared/package-version-Dxirp-UO.js";process.argv.includes("--no-color")&&(process.env.NO_COLOR="1",process.env.FORCE_COLOR="0");process.argv.slice(2).some(s=>s==="--version"||s==="-v"||s==="-V")&&(process.stdout.write(`${o()}
2
+ import{a as r,x as i,i as c,d as a,r as d}from"./packem_shared/vis-user-error-k7CLTpA4.js";import{t as n}from"./packem_shared/compile-cache-DoMHRsRZ.js";import{g as o}from"./packem_shared/package-version-CFuNUWDG.js";process.argv.includes("--no-color")&&(process.env.NO_COLOR="1",process.env.FORCE_COLOR="0");process.argv.slice(2).some(s=>s==="--version"||s==="-v"||s==="-V")&&(process.stdout.write(`${o()}
3
3
  `),process.exit(0));process.argv.splice(2,0,"dlx");n();const e=r("visx",{packageName:"visx",packageVersion:o()}),p=process.argv.includes("--debug")||!!process.env.DEBUG;e.addPlugin(i({concise:c,detailed:p,exitOnError:!1}));e.addCommand(a);d(e);
@@ -1,4 +1,4 @@
1
- import { TargetConfiguration, TaskResult, Task, FingerprintContributor, ConstraintsConfig, NamedInputs, TaskRunnerOptions } from '@visulima/task-runner';
1
+ import { TargetConfiguration, ChildEnvOptions, TaskResult, Task, FingerprintContributor, ConstraintsConfig, NamedInputs, TaskRunnerOptions } from '@visulima/task-runner';
2
2
  export type { FingerprintContributor } from '@visulima/task-runner';
3
3
  import { VisReleaseConfig } from "../release/types.js";
4
4
  /**
@@ -21,22 +21,21 @@ interface SimilarDepFamily {
21
21
  prefixes?: string[];
22
22
  }
23
23
  /** Adapter IDs that can format (adapter `kind` is `"fmt"` or `"both"`). */
24
- type FmtAdapterId = "biome" | "deno-fmt" | "dprint" | "oxfmt" | "prettier" | "ruff-fmt";
24
+ type FmtAdapterId = "biome" | "dprint" | "oxfmt" | "prettier" | "ruff-fmt";
25
25
  /** Adapter IDs that can lint (adapter `kind` is `"lint"` or `"both"`). */
26
- type LintAdapterId = "biome" | "deno-lint" | "eslint" | "markdownlint" | "oxlint" | "ruff-check" | "shellcheck" | "stylelint";
26
+ type LintAdapterId = "biome" | "eslint" | "markdownlint" | "oxlint" | "ruff-check" | "shellcheck" | "stylelint" | "typecheck";
27
27
  /**
28
28
  * Runtime adapter contract for the cross-runtime multi-tool (see
29
29
  * `rfc/design-runtime-multitool.md`). Phase 0 defines the identity +
30
30
  * detection metadata; Phase 1 extends adapters with the spawn-building
31
31
  * methods (`runFile` / `runScript` / `install` / `exec`) that route through
32
- * `pm-runner`. Deno is a planned third adapter — deliberately not a
33
- * `RuntimeId` yet (it carries permission + no-`node_modules` semantics that
34
- * the first cut omits).
32
+ * `pm-runner`.
35
33
  */
36
- /** JS runtimes vis can target today. `"deno"` is deferred. */
37
- type RuntimeId = "bun" | "node";
34
+ declare const RUNTIME_IDS: readonly ["bun", "node"];
35
+ /** JS runtimes vis can target today. */
36
+ type RuntimeId = (typeof RUNTIME_IDS)[number];
38
37
  type VersionManagerName = "asdf" | "corepack" | "fnm" | "mise" | "none" | "nvm" | "proto" | "self-activate" | "volta";
39
- type RuntimeTool = "aube" | "bun" | "deno" | "go" | "node" | "npm" | "pnpm" | "python" | "ruby" | "rust" | "yarn";
38
+ type RuntimeTool = "aube" | "bun" | "go" | "node" | "npm" | "pnpm" | "python" | "ruby" | "rust" | "yarn";
40
39
  interface ToolchainConfig {
41
40
  /**
42
41
  * When a tool pin doesn't match the running version, try to fix it
@@ -276,6 +275,24 @@ interface VisTargetOptions {
276
275
  * @default false
277
276
  */
278
277
  affectedFiles?: AffectedFilesMode;
278
+ /**
279
+ * Child-process environment for this target. Overrides the workspace
280
+ * `taskRunner.env`.
281
+ * - `mode: "inherit"`: the child gets the whole parent environment, even
282
+ * when the workspace is `clean`.
283
+ * - `mode: "clean"`: the child gets only the allow-listed names, `PATH`,
284
+ * `HOME`, `TERM`, `CI`, the platform essentials and what vis injects
285
+ * (`VIS_TASK_SLOTS`, `VIS_ARG_*`, `envFile` values, service env).
286
+ * - `allow`: names and `*` wildcard patterns kept under `clean`. Added to
287
+ * the workspace allow-list when the workspace is also `clean`.
288
+ *
289
+ * A traced target (`hashMode: "trace"`, or a workspace `autoFingerprint`)
290
+ * can be `clean` too: it gets the same environment plus the tracker's own
291
+ * variables, and the tracker then runs without its native backends. Without
292
+ * this option the workspace `taskRunner.env` applies, and that defaults to
293
+ * `inherit`.
294
+ */
295
+ env?: ChildEnvOptions;
279
296
  /**
280
297
  * Load environment variables from dotenv file(s) before running.
281
298
  * - `string`: a single file path (relative to project root).
@@ -974,6 +991,13 @@ interface VisConfig {
974
991
  * @default "github"
975
992
  */
976
993
  defaultProvider?: "bitbucket" | "github" | "gitlab" | "sourcehut";
994
+ /**
995
+ * Template used by a bare `vis create`. Accepts any template input, including an
996
+ * organization scope (`@acme` opens the `@acme/create` manifest picker, `@acme:app`
997
+ * selects one entry directly). In a terminal the usual prompts still run, minus the template step.
998
+ * @example "@acme"
999
+ */
1000
+ defaultTemplate?: string;
977
1001
  /**
978
1002
  * Initialize a git repository after scaffolding standalone projects.
979
1003
  * @default false
@@ -1078,15 +1102,15 @@ interface VisConfig {
1078
1102
  * Tunes adapter detection precedence, per-extension routing, and
1079
1103
  * per-adapter overrides. Flags on the CLI always win over config.
1080
1104
  *
1081
- * The default fmt precedence is `oxfmt → biome → dprint → prettier
1082
- * → deno-fmt`. When multiple adapters claim the same extension,
1105
+ * The default fmt precedence is `oxfmt → biome → dprint → prettier`.
1106
+ * When multiple adapters claim the same extension,
1083
1107
  * the first in this order owns it unless overridden here.
1084
1108
  * @example
1085
1109
  * ```
1086
1110
  * fmt: {
1087
1111
  * order: ["biome", "prettier"],
1088
1112
  * extensionOverrides: { md: "dprint" },
1089
- * adapters: { "deno-fmt": { enabled: false } },
1113
+ * adapters: { dprint: { enabled: false } },
1090
1114
  * }
1091
1115
  * ```
1092
1116
  */
@@ -1210,7 +1234,6 @@ interface VisConfig {
1210
1234
  * format:check), `biome` (lint, format), `oxlint` (lint),
1211
1235
  * `oxfmt` (format / format:check), `stylelint` (lint:css),
1212
1236
  * `knip` (knip).
1213
- * - **Runtimes** — `deno` (test/lint/fmt/check).
1214
1237
  * - **Database tooling** — `prisma` (db:generate/db:migrate/
1215
1238
  * db:push/db:studio), `drizzle` (db:generate/db:migrate/
1216
1239
  * db:push/db:studio).
@@ -1226,15 +1249,15 @@ interface VisConfig {
1226
1249
  * a config file (because the package frequently appears transitively
1227
1250
  * and a dep-only match would synthesize broken commands): `vite`,
1228
1251
  * `rolldown`, `rollup`, `webpack`, `storybook`, `nest`, `remix`,
1229
- * `vitepress`, `bun`, `deno`, `changeset`.
1252
+ * `vitepress`, `bun`, `changeset`.
1230
1253
  *
1231
1254
  * Conflict resolution: detectors are evaluated in registration order
1232
1255
  * (see `BUILT_IN_DETECTORS`) and the first to claim a target name
1233
1256
  * wins. Per-name priorities: `build` → nuxt > next > remix > astro
1234
1257
  * > gatsby > docusaurus > vite > nest > rolldown > tsdown > tsup >
1235
- * packem > rollup > webpack; `test` → vitest > jest > bun > deno;
1258
+ * packem > rollup > webpack; `test` → vitest > jest > bun;
1236
1259
  * `test:e2e` → playwright > cypress; `lint` → eslint > biome >
1237
- * oxlint > deno; `format` → prettier > biome > oxfmt; `db:*` →
1260
+ * oxlint; `format` → prettier > biome > oxfmt; `db:*` →
1238
1261
  * prisma > drizzle.
1239
1262
  *
1240
1263
  * Also accepts an object form (`{ vite: false, vitest: true }`) to
@@ -1302,7 +1325,7 @@ interface VisConfig {
1302
1325
  * and the PM is corepack-managed (errors loudly otherwise).
1303
1326
  * - `false`: never go through corepack — invoke the PM directly.
1304
1327
  *
1305
- * Mirrors nypm's `corepack: true` flag. Bun, deno, and aube are
1328
+ * Mirrors nypm's `corepack: true` flag. Bun and aube are
1306
1329
  * never wrapped — corepack does not manage them.
1307
1330
  * @default "auto"
1308
1331
  */
@@ -1315,13 +1338,13 @@ interface VisConfig {
1315
1338
  * Flags on the CLI always win over config.
1316
1339
  *
1317
1340
  * The default lint precedence is `oxlint → biome → eslint →
1318
- * stylelint → deno-lint`. Override with `order` to e.g. let biome
1341
+ * stylelint`. Override with `order` to e.g. let biome
1319
1342
  * fire before oxlint when the workspace standardises on biome.
1320
1343
  * @example
1321
1344
  * ```
1322
1345
  * lint: {
1323
1346
  * order: ["biome", "eslint"],
1324
- * adapters: { "deno-lint": { enabled: false } },
1347
+ * adapters: { oxlint: { enabled: false } },
1325
1348
  * }
1326
1349
  * ```
1327
1350
  */
@@ -1,9 +1,9 @@
1
- import{createRequire as I}from"node:module";import{L as x,m as K,T as O}from"../packem_shared/target-merge-DVJl-7Qz.js";import{v as _,e as a,m as C}from"../packem_shared/index-BzhrR_iC.js";import{i as M}from"./ts-loader.js";import{otelPlugin as _e}from"../packem_shared/otelPlugin-D8LL2-4L.js";import{definePlugin as Ee}from"../packem_shared/definePlugin-DoUcoYSy.js";import{y as d}from"../packem_shared/isAccessibleSync-DYKTrrvc-C-_5cgwu.js";import{h as m}from"../packem_shared/writeFileSync-DJoHk3Ks-BPRoepNw.js";import{p as S}from"../packem_shared/readJsonSync-CbryXYxN-EWl7_7KX.js";let N;const F=e=>(N??=I(import.meta.url))(e),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,v=e=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[s,t]=l.versions.node.split(".").map(Number);if(s>22||s===22&&t>=3||s===20&&t>=16)return l.getBuiltinModule(e)}return F(e)},{createHash:w}=v("node:crypto"),{readdirSync:$,readFileSync:L}=v("node:fs"),{createRequire:q}=v("node:module");class p extends Error{chain;constructor(s,t,o){super(s,o),this.name=this.constructor.name,this.chain=t}}class P extends p{constructor(s,t){const o=[...t,`${s} (re-enters)`].join(" → ");super(`Config cycle: ${o}`,t)}}class E extends p{filePath;removedKeys;constructor(s,t,o){const r=[`${s} uses removed keys.`,""];for(const n of o){const c=n.location?` (at ${n.location})`:"";r.push(` • ${n.name}${c} → renamed to \`${n.renamedTo}\``);for(const i of n.children??[])r.push(` ↳ ${i.name} → renamed to \`${i.renamedTo}\``)}r.push("","Run `vis migrate self` to auto-rewrite the config (use --dry-run to preview)."),super(r.join(`
1
+ import{createRequire as I}from"node:module";import{K as x,m as q,T as O}from"../packem_shared/target-merge-BClIXg2k.js";import{z as _,e as a,$ as j}from"../packem_shared/index-BdMIfGVZ.js";import{i as M}from"./ts-loader.js";import{otelPlugin as _e}from"../packem_shared/otelPlugin-D8LL2-4L.js";import{definePlugin as Ee}from"../packem_shared/definePlugin-DoUcoYSy.js";import{y as d}from"../packem_shared/isAccessibleSync-DYKTrrvc-BwaMhQs0.js";import{h as m}from"../packem_shared/writeFileSync-DJoHk3Ks-Dhem3Uof.js";import{p as S}from"../packem_shared/readJsonSync-CbryXYxN-Bm5i10UW.js";let N;const F=e=>(N??=I(import.meta.url))(e),l=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:process,C=e=>{if(typeof l<"u"&&l.versions&&l.versions.node){const[s,t]=l.versions.node.split(".").map(Number);if(s>22||s===22&&t>=3||s===20&&t>=16)return l.getBuiltinModule(e)}return F(e)},{createHash:w}=C("node:crypto"),{readdirSync:$,readFileSync:K}=C("node:fs"),{createRequire:L}=C("node:module");class p extends Error{chain;constructor(s,t,o){super(s,o),this.name=this.constructor.name,this.chain=t}}class P extends p{constructor(s,t){const o=[...t,`${s} (re-enters)`].join(" → ");super(`Config cycle: ${o}`,t)}}class E extends p{filePath;removedKeys;constructor(s,t,o){const r=[`${s} uses removed keys.`,""];for(const n of o){const c=n.location?` (at ${n.location})`:"";r.push(` • ${n.name}${c} → renamed to \`${n.renamedTo}\``);for(const i of n.children??[])r.push(` ↳ ${i.name} → renamed to \`${i.renamedTo}\``)}r.push("","Run `vis migrate self` to auto-rewrite the config (use --dry-run to preview)."),super(r.join(`
2
2
  `),t),this.filePath=s,this.removedKeys=o}}class T extends p{constructor(s,t,o){const r=o instanceof Error?o.message:String(o),n=t.length>0?`
3
3
  Chain: ${t.join(" → ")}`:"";super(`Failed to load ${s}: ${r}${n}`,t,{cause:o})}}const U=e=>e.join(" → ");class k extends p{constructor(s,t,o){const r=t.length>0?t[t.length-1]:"<unknown>",n=o.length>0?`
4
4
  Tried:
5
5
  ${o.join(`
6
6
  `)}`:"";super(`Cannot resolve "${s}" extended from ${r}.${n}
7
- Chain: ${U(t)}`,t)}}class W extends p{filePath;violations;constructor(s,t,o){const r=[`${s} has an invalid value.`,""];for(const n of o)r.push(` • ${n.location} — expected ${n.expected}, found ${n.found}`);r.push("","See https://visulima.com/docs/packages/vis/configuration for the expected shape."),super(r.join(`
8
- `),t),this.filePath=s,this.violations=o}}const z=e=>{const s=[];if(Object.hasOwn(e,"targetDefaults")&&s.push({name:"targetDefaults",renamedTo:"tasks"}),Object.hasOwn(e,"taskRunnerOptions")&&s.push({name:"taskRunnerOptions",renamedTo:"taskRunner"}),Object.hasOwn(e,"taskDefaults")){const{taskDefaults:t}=e,o=[];if(Array.isArray(t))for(const[r,n]of t.entries())n&&typeof n=="object"&&(Object.hasOwn(n,"scope")&&o.push({location:`taskDefaults[${r}].scope`,name:"scope",renamedTo:"match"}),Object.hasOwn(n,"targets")&&o.push({location:`taskDefaults[${r}].targets`,name:"targets",renamedTo:"tasks"}));s.push({children:o.length>0?o:void 0,name:"taskDefaults",renamedTo:"scopedTasks"})}else if(Array.isArray(e.scopedTasks))for(const[t,o]of e.scopedTasks.entries())o&&typeof o=="object"&&(Object.hasOwn(o,"scope")&&s.push({location:`scopedTasks[${t}].scope`,name:"scope",renamedTo:"match"}),Object.hasOwn(o,"targets")&&s.push({location:`scopedTasks[${t}].targets`,name:"targets",renamedTo:"tasks"}));return s},B=e=>Object.hasOwn(e,"targets")&&!Object.hasOwn(e,"tasks")?[{name:"targets",renamedTo:"tasks"}]:[],H=(e,s,t)=>{if(!t||typeof t!="object")return;const o=z(t);if(o.length>0)throw new E(e,s,o)},Y=(e,s,t)=>{if(!t||typeof t!="object")return;const o=B(t);if(o.length>0)throw new E(e,s,o)},h=e=>{if(e===null)return"null";if(Array.isArray(e))return"an array";if(typeof e=="object"){const s=Object.keys(e);return s.length>0?`an object with { ${s.join(", ")} }`:"an empty object"}return typeof e},g=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),J=e=>{const s=[];if(!Object.hasOwn(e,"scopedTasks")||e.scopedTasks===void 0)return s;const{scopedTasks:t}=e;if(!Array.isArray(t))return s.push({expected:"an array of `{ match?, tasks }` blocks",found:h(t),location:"scopedTasks"}),s;for(const[o,r]of t.entries()){const n=`scopedTasks[${o}]`;if(!g(r)){s.push({expected:"a `{ match?, tasks }` block",found:h(r),location:n});continue}g(r.tasks)||s.push({expected:"`tasks` to be an object keyed by target name",found:r.tasks===void 0?`a block with { ${Object.keys(r).join(", ")} }`:h(r.tasks),location:`${n}.tasks`}),r.match!==void 0&&!g(r.match)&&s.push({expected:"`match` to be an object of project constraints",found:h(r.match),location:`${n}.match`})}return s},Q=(e,s,t)=>{if(!t||typeof t!="object")return;const o=J(t);if(o.length>0)throw new W(e,s,o)},D=["vis.config.ts","vis.config.mts","vis.config.cts","vis.config.js","vis.config.mjs","vis.config.cjs"],X=new Set(D),A=["vis.task.ts","vis.task.mts","vis.task.cts","vis.task.js","vis.task.mjs","vis.task.cjs"],Z=new Set(A),je=2880,y={blockExoticSubdeps:!0,policies:{installScripts:{strict:!0},publisherChange:{ignoreAfter:43200,mode:"no-downgrade"}}},ee=e=>{if(!e)return{...y};const s=y.policies??{},t=e.policies??{},o={...s,...t};for(const r of Object.keys(s)){const n=s[r],c=t[r];n!==void 0&&c!==void 0&&(o[r]={...n,...c})}return{...y,...e,policies:o}},b=e=>({...e,security:ee(e.security),update:{security:!0,target:"minor",...e.update}}),se=e=>{let s;try{s=$(e)}catch{return}const t=new Set(s.filter(o=>X.has(o)));for(const o of D)if(t.has(o))return a(e,o)},te=e=>{let s;try{s=$(e)}catch{return}const t=new Set(s.filter(o=>Z.has(o)));for(const o of A)if(t.has(o))return a(e,o)},V=e=>w("sha256").update(L(e)).digest("hex"),oe=e=>{const s=w("sha256"),t=[...e].sort();for(const o of t)s.update(o),s.update(":"),s.update(V(o)),s.update(`
9
- `);return s.digest("hex")},ne=e=>{const s=a(e,"node_modules");if(d(s)){const o=a(s,".cache","vis");return m(o),a(o,"vis-config-cache.json")}const t=x("vis",{create:!0,cwd:e});return t?a(t,"vis-config-cache.json"):void 0},re=(e,s)=>{if(d(e))try{const t=S(e);if(t.hash===s)return t.config}catch{}},ce=(e,s,t)=>{try{m(C(e)),O(e,{config:t,hash:s})}catch{}},ie=e=>e===void 0?[]:Array.isArray(e)?e:[e],ae=(e,s,t)=>{if(_(e))throw new k(e,[...t,s],["Absolute paths in `extends` are not supported. Use a relative path or an npm package name."]);const o=[];if(e.startsWith("./")||e.startsWith("../")){const r=C(s),n=a(r,e);if(o.push(n),d(n))return n;throw new k(e,[...t,s],o)}try{return q(s).resolve(e)}catch{throw o.push(`require.resolve("${e}") from ${s}`),new k(e,[...t,s],o)}},G=async(e,s)=>{let t;try{t=(await M(e)).default??{}}catch(o){throw new T(e,s,o)}try{return(typeof t=="function"?await t()??{}:t)??{}}catch(o){throw new T(e,s,o)}},fe=(e,s)=>{const t={...e,...s};if(e.tasks||s.tasks){const o=new Set([...Object.keys(e.tasks??{}),...Object.keys(s.tasks??{})]),r={};for(const n of o)r[n]=K(e.tasks?.[n],s.tasks?.[n]);t.tasks=r}if((e.scopedTasks||s.scopedTasks)&&(t.scopedTasks=[...e.scopedTasks??[],...s.scopedTasks??[]]),(e.fileGroups||s.fileGroups)&&(t.fileGroups={...e.fileGroups,...s.fileGroups}),(e.taskGroups||s.taskGroups)&&(t.taskGroups={...e.taskGroups,...s.taskGroups}),e.security||s.security){const o=e.security?.policies??{},r=s.security?.policies??{},n={...o,...r};for(const c of Object.keys(o)){const i=o[c],f=r[c];i!==void 0&&f!==void 0&&(n[c]={...i,...f})}t.security={...e.security,...s.security,acceptedRisks:{...e.security?.acceptedRisks,...s.security?.acceptedRisks},policies:n}}return(e.update||s.update)&&(t.update={...e.update,...s.update}),(e.taskRunner||s.taskRunner)&&(t.taskRunner={...e.taskRunner,...s.taskRunner}),delete t.extends,t},R=async(e,s,t,o,r)=>{if(t.has(e))throw new P(e,s);if(!o.has(e)){t.add(e);try{const n=await G(e,s);H(e,s,n),Q(e,s,n);const c=ie(n.extends);for(const i of c){const f=ae(i,e,s);await R(f,[...s,e],t,o,r)}o.set(e,n),r.push(e)}finally{t.delete(e)}}},Te=async(e,s)=>{let t;if(s?.explicitConfigPath){const u=_(s.explicitConfigPath)?s.explicitConfigPath:a(e,s.explicitConfigPath);if(!d(u))throw new Error(`Cannot find config file at ${u}`);t=u}else t=se(e);if(!t)return b({});const o=new Set,r=new Map,n=[];await R(t,[],o,r,n);const c=oe(n),i=ne(e);if(i){const u=re(i,c);if(u)return u}let f={};for(const u of n)f=fe(f,r.get(u));const j=b(f);return i&&ce(i,c,j),j},ue=e=>e.replaceAll(/[^\w.-]+/g,"_"),de=(e,s)=>{const t=a(e,"node_modules"),o=ue(s);if(d(t)){const n=a(t,".cache","vis","task-configs");return m(n),a(n,`${o}.json`)}const r=x("vis",{create:!0,cwd:e});return r?a(r,"task-configs",`${o}.json`):void 0},le=(e,s)=>{if(d(e))try{const t=S(e);if(t.hash===s)return t.config}catch{}},pe=(e,s,t)=>{try{m(C(e)),O(e,{config:t,hash:s})}catch{}},be=async(e,s,t)=>{const o=te(s);if(!o)return;const r=V(o),n=de(e,t);if(n){const f=le(n,r);if(f)return f}const c=await G(o,[]);Y(o,[],c);const i=c;return n&&pe(n,r,i),i},we=e=>e,$e=e=>e;export{D as CONFIG_FILES,je as DEFAULT_MIN_RELEASE_AGE_MINUTES,y as SECURITY_DEFAULTS,A as TASK_CONFIG_FILES,b as applyDefaults,$e as defineConfig,Ee as definePlugin,we as defineTaskConfig,se as findVisConfigFile,te as findVisTaskConfigFile,Te as loadVisConfig,be as loadVisTaskConfig,_e as otelPlugin};
7
+ Chain: ${U(t)}`,t)}}class z extends p{filePath;violations;constructor(s,t,o){const r=[`${s} has an invalid value.`,""];for(const n of o)r.push(` • ${n.location} — expected ${n.expected}, found ${n.found}`);r.push("","See https://visulima.com/docs/packages/vis/configuration for the expected shape."),super(r.join(`
8
+ `),t),this.filePath=s,this.violations=o}}const W=e=>{const s=[];if(Object.hasOwn(e,"targetDefaults")&&s.push({name:"targetDefaults",renamedTo:"tasks"}),Object.hasOwn(e,"taskRunnerOptions")&&s.push({name:"taskRunnerOptions",renamedTo:"taskRunner"}),Object.hasOwn(e,"taskDefaults")){const{taskDefaults:t}=e,o=[];if(Array.isArray(t))for(const[r,n]of t.entries())n&&typeof n=="object"&&(Object.hasOwn(n,"scope")&&o.push({location:`taskDefaults[${r}].scope`,name:"scope",renamedTo:"match"}),Object.hasOwn(n,"targets")&&o.push({location:`taskDefaults[${r}].targets`,name:"targets",renamedTo:"tasks"}));s.push({children:o.length>0?o:void 0,name:"taskDefaults",renamedTo:"scopedTasks"})}else if(Array.isArray(e.scopedTasks))for(const[t,o]of e.scopedTasks.entries())o&&typeof o=="object"&&(Object.hasOwn(o,"scope")&&s.push({location:`scopedTasks[${t}].scope`,name:"scope",renamedTo:"match"}),Object.hasOwn(o,"targets")&&s.push({location:`scopedTasks[${t}].targets`,name:"targets",renamedTo:"tasks"}));return s},B=e=>Object.hasOwn(e,"targets")&&!Object.hasOwn(e,"tasks")?[{name:"targets",renamedTo:"tasks"}]:[],H=(e,s,t)=>{if(!t||typeof t!="object")return;const o=W(t);if(o.length>0)throw new E(e,s,o)},Y=(e,s,t)=>{if(!t||typeof t!="object")return;const o=B(t);if(o.length>0)throw new E(e,s,o)},h=e=>{if(e===null)return"null";if(Array.isArray(e))return"an array";if(typeof e=="object"){const s=Object.keys(e);return s.length>0?`an object with { ${s.join(", ")} }`:"an empty object"}return typeof e},g=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),J=e=>{const s=[];if(!Object.hasOwn(e,"scopedTasks")||e.scopedTasks===void 0)return s;const{scopedTasks:t}=e;if(!Array.isArray(t))return s.push({expected:"an array of `{ match?, tasks }` blocks",found:h(t),location:"scopedTasks"}),s;for(const[o,r]of t.entries()){const n=`scopedTasks[${o}]`;if(!g(r)){s.push({expected:"a `{ match?, tasks }` block",found:h(r),location:n});continue}g(r.tasks)||s.push({expected:"`tasks` to be an object keyed by target name",found:r.tasks===void 0?`a block with { ${Object.keys(r).join(", ")} }`:h(r.tasks),location:`${n}.tasks`}),r.match!==void 0&&!g(r.match)&&s.push({expected:"`match` to be an object of project constraints",found:h(r.match),location:`${n}.match`})}return s},Q=(e,s,t)=>{if(!t||typeof t!="object")return;const o=J(t);if(o.length>0)throw new z(e,s,o)},D=["vis.config.ts","vis.config.mts","vis.config.cts","vis.config.js","vis.config.mjs","vis.config.cjs"],X=new Set(D),A=["vis.task.ts","vis.task.mts","vis.task.cts","vis.task.js","vis.task.mjs","vis.task.cjs"],Z=new Set(A),ve=2880,y={blockExoticSubdeps:!0,policies:{installScripts:{strict:!0},publisherChange:{ignoreAfter:43200,mode:"no-downgrade"}}},ee=e=>{if(!e)return{...y};const s=y.policies??{},t=e.policies??{},o={...s,...t};for(const r of Object.keys(s)){const n=s[r],c=t[r];n!==void 0&&c!==void 0&&(o[r]={...n,...c})}return{...y,...e,policies:o}},b=e=>({...e,security:ee(e.security),update:{security:!0,target:"minor",...e.update}}),se=e=>{let s;try{s=$(e)}catch{return}const t=new Set(s.filter(o=>X.has(o)));for(const o of D)if(t.has(o))return a(e,o)},te=e=>{let s;try{s=$(e)}catch{return}const t=new Set(s.filter(o=>Z.has(o)));for(const o of A)if(t.has(o))return a(e,o)},V=e=>w("sha256").update(K(e)).digest("hex"),oe=e=>{const s=w("sha256"),t=[...e].sort();for(const o of t)s.update(o),s.update(":"),s.update(V(o)),s.update(`
9
+ `);return s.digest("hex")},ne=e=>{const s=a(e,"node_modules");if(d(s)){const o=a(s,".cache","vis");return m(o),a(o,"vis-config-cache.json")}const t=x("vis",{create:!0,cwd:e});return t?a(t,"vis-config-cache.json"):void 0},re=(e,s)=>{if(d(e))try{const t=S(e);if(t.hash===s)return t.config}catch{}},ce=(e,s,t)=>{try{m(j(e)),O(e,{config:t,hash:s})}catch{}},ie=e=>e===void 0?[]:Array.isArray(e)?e:[e],ae=(e,s,t)=>{if(_(e))throw new k(e,[...t,s],["Absolute paths in `extends` are not supported. Use a relative path or an npm package name."]);const o=[];if(e.startsWith("./")||e.startsWith("../")){const r=j(s),n=a(r,e);if(o.push(n),d(n))return n;throw new k(e,[...t,s],o)}try{return L(s).resolve(e)}catch{throw o.push(`require.resolve("${e}") from ${s}`),new k(e,[...t,s],o)}},G=async(e,s)=>{let t;try{t=(await M(e)).default??{}}catch(o){throw new T(e,s,o)}try{return(typeof t=="function"?await t()??{}:t)??{}}catch(o){throw new T(e,s,o)}},fe=(e,s)=>{const t={...e,...s};if(e.tasks||s.tasks){const o=new Set([...Object.keys(e.tasks??{}),...Object.keys(s.tasks??{})]),r={};for(const n of o)r[n]=q(e.tasks?.[n],s.tasks?.[n]);t.tasks=r}if((e.scopedTasks||s.scopedTasks)&&(t.scopedTasks=[...e.scopedTasks??[],...s.scopedTasks??[]]),(e.fileGroups||s.fileGroups)&&(t.fileGroups={...e.fileGroups,...s.fileGroups}),(e.taskGroups||s.taskGroups)&&(t.taskGroups={...e.taskGroups,...s.taskGroups}),e.security||s.security){const o=e.security?.policies??{},r=s.security?.policies??{},n={...o,...r};for(const c of Object.keys(o)){const i=o[c],f=r[c];i!==void 0&&f!==void 0&&(n[c]={...i,...f})}t.security={...e.security,...s.security,acceptedRisks:{...e.security?.acceptedRisks,...s.security?.acceptedRisks},policies:n}}return(e.update||s.update)&&(t.update={...e.update,...s.update}),(e.taskRunner||s.taskRunner)&&(t.taskRunner={...e.taskRunner,...s.taskRunner}),delete t.extends,t},R=async(e,s,t,o,r)=>{if(t.has(e))throw new P(e,s);if(!o.has(e)){t.add(e);try{const n=await G(e,s);H(e,s,n),Q(e,s,n);const c=ie(n.extends);for(const i of c){const f=ae(i,e,s);await R(f,[...s,e],t,o,r)}o.set(e,n),r.push(e)}finally{t.delete(e)}}},Te=async(e,s)=>{let t;if(s?.explicitConfigPath){const u=_(s.explicitConfigPath)?s.explicitConfigPath:a(e,s.explicitConfigPath);if(!d(u))throw new Error(`Cannot find config file at ${u}`);t=u}else t=se(e);if(!t)return b({});const o=new Set,r=new Map,n=[];await R(t,[],o,r,n);const c=oe(n),i=ne(e);if(i){const u=re(i,c);if(u)return u}let f={};for(const u of n)f=fe(f,r.get(u));const v=b(f);return i&&ce(i,c,v),v},ue=e=>e.replaceAll(/[^\w.-]+/g,"_"),de=(e,s)=>{const t=a(e,"node_modules"),o=ue(s);if(d(t)){const n=a(t,".cache","vis","task-configs");return m(n),a(n,`${o}.json`)}const r=x("vis",{create:!0,cwd:e});return r?a(r,"task-configs",`${o}.json`):void 0},le=(e,s)=>{if(d(e))try{const t=S(e);if(t.hash===s)return t.config}catch{}},pe=(e,s,t)=>{try{m(j(e)),O(e,{config:t,hash:s})}catch{}},be=async(e,s,t)=>{const o=te(s);if(!o)return;const r=V(o),n=de(e,t);if(n){const f=le(n,r);if(f)return f}const c=await G(o,[]);Y(o,[],c);const i=c;return n&&pe(n,r,i),i},we=e=>e,$e=e=>e;export{D as CONFIG_FILES,ve as DEFAULT_MIN_RELEASE_AGE_MINUTES,y as SECURITY_DEFAULTS,A as TASK_CONFIG_FILES,b as applyDefaults,$e as defineConfig,Ee as definePlugin,we as defineTaskConfig,se as findVisConfigFile,te as findVisTaskConfigFile,Te as loadVisConfig,be as loadVisTaskConfig,_e as otelPlugin};
@@ -1,2 +1,2 @@
1
- import{b as f,F as s,J as c}from"../packem_shared/index.server-sXNQYpsl.js";import{p as r}from"./cli-main.js";import{g as u}from"../packem_shared/osv-bloom-BCAX5ARR.js";const a=t=>{if(!t)return"never";const i=Date.parse(t);if(Number.isNaN(i))return t;const e=Date.now()-i;if(e<0)return t;const n=Math.floor(e/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;const o=Math.floor(n/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`},m=t=>t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`,l=async({options:t,workspaceRoot:i})=>{if(!i)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const e=await u(i,t.cacheDir);if(t.format==="json"){process.stdout.write(`${JSON.stringify(e,void 0,2)}
1
+ import{b as f,F as s,J as c}from"../packem_shared/index.server-D8BLnYZO.js";import{p as r}from"./cli-main.js";import{g as u}from"../packem_shared/osv-bloom-t40ra5U5.js";const a=t=>{if(!t)return"never";const i=Date.parse(t);if(Number.isNaN(i))return t;const e=Date.now()-i;if(e<0)return t;const n=Math.floor(e/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;const o=Math.floor(n/60);return o<24?`${o}h ago`:`${Math.floor(o/24)}d ago`},m=t=>t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`,l=async({options:t,workspaceRoot:i})=>{if(!i)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const e=await u(i,t.cacheDir);if(t.format==="json"){process.stdout.write(`${JSON.stringify(e,void 0,2)}
2
2
  `);return}if(r.info(`Cache: ${e.cacheDir}`),!e.present){r.warn(`No osv-bloom filter yet. Run ${f("vis advisories bloom sync")} to populate.`);return}if(e.manifest){const{manifest:o}=e;r.info(`Built: ${o.builtAtRfc3339} (${a(o.builtAtRfc3339)})`),r.info(`Fetch: ${e.fetchedAtIso??s("—")} (${a(e.fetchedAtIso)})`),r.info(`Filter: ${c(m(o.bloomByteLen))} m=${o.bloomMBits.toLocaleString()} bits k=${String(o.bloomKHashes)}`),r.info(`Set: ${o.entryCount.toLocaleString()} entries from ${o.advisoryCount.toLocaleString()} advisories (target FPR ${o.targetFpr})`),r.info(s(`Digest: ${o.setDigestSha256}`))}else r.warn("filter.bin present but manifest.json missing — `vis advisories bloom sync` will rewrite the cache.")},g=l;export{g as advisoriesBloomStatusExecute};
@@ -1,2 +1,2 @@
1
- import{F as f}from"../packem_shared/index.server-sXNQYpsl.js";import{p as i}from"./cli-main.js";import{s as d}from"../packem_shared/scan-progress-CkumcBG-.js";import{D as p,s as D}from"../packem_shared/osv-bloom-BCAX5ARR.js";const h=o=>o?.security?.audit?.advisories?.bloom??{},u=o=>o>=1e3?`${(o/1e3).toFixed(1)}s`:`${Math.round(o)}ms`,$=o=>o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/(1024*1024)).toFixed(1)} MB`,b=async({options:o,visConfig:m,workspaceRoot:n})=>{if(!n)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const a=o.format==="json",c=h(m),l=o.source??c.source??p,r=d([{id:"bloom",label:"Sync osv-bloom prefilter"}],{live:!a});let e,t;try{r.start("bloom");const s=Date.now();e=await D({allowedHosts:c.allowedHosts,cacheDir:o.cacheDir,force:!!o.force,source:l,workspaceRoot:n}),e.upToDate?r.finish("bloom","ok",`up to date · ${u(Date.now()-s)}`):r.finish("bloom","ok",`${e.manifest.entryCount.toLocaleString()} entries · ${$(e.bytesOnDisk)} · ${u(e.durationMs)}`)}catch(s){t=s instanceof Error?s.message:String(s),r.finish("bloom","error",t)}finally{r.stop()}a?process.stdout.write(`${JSON.stringify({bytesOnDisk:e?.bytesOnDisk??0,cacheDir:e?.cacheDir??null,durationMs:e?.durationMs??0,error:t??null,manifest:e?.manifest??null,source:l,upToDate:e?.upToDate??!1},void 0,2)}
1
+ import{F as f}from"../packem_shared/index.server-D8BLnYZO.js";import{p as i}from"./cli-main.js";import{s as d}from"../packem_shared/scan-progress-DcYI76zE.js";import{D as p,s as D}from"../packem_shared/osv-bloom-t40ra5U5.js";const h=o=>o?.security?.audit?.advisories?.bloom??{},u=o=>o>=1e3?`${(o/1e3).toFixed(1)}s`:`${Math.round(o)}ms`,$=o=>o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/(1024*1024)).toFixed(1)} MB`,b=async({options:o,visConfig:m,workspaceRoot:n})=>{if(!n)throw new Error("Could not determine workspace root. Run this command inside a workspace.");const a=o.format==="json",c=h(m),l=o.source??c.source??p,r=d([{id:"bloom",label:"Sync osv-bloom prefilter"}],{live:!a});let e,t;try{r.start("bloom");const s=Date.now();e=await D({allowedHosts:c.allowedHosts,cacheDir:o.cacheDir,force:!!o.force,source:l,workspaceRoot:n}),e.upToDate?r.finish("bloom","ok",`up to date · ${u(Date.now()-s)}`):r.finish("bloom","ok",`${e.manifest.entryCount.toLocaleString()} entries · ${$(e.bytesOnDisk)} · ${u(e.durationMs)}`)}catch(s){t=s instanceof Error?s.message:String(s),r.finish("bloom","error",t)}finally{r.stop()}a?process.stdout.write(`${JSON.stringify({bytesOnDisk:e?.bytesOnDisk??0,cacheDir:e?.cacheDir??null,durationMs:e?.durationMs??0,error:t??null,manifest:e?.manifest??null,source:l,upToDate:e?.upToDate??!1},void 0,2)}
2
2
  `):e&&(i.info(f(`Cache: ${e.cacheDir}`)),i.info(f(`Built: ${e.manifest.builtAtRfc3339}`)),t||i.success(e.upToDate?"osv-bloom prefilter up to date.":"osv-bloom prefilter synced.")),t&&(process.exitCode=1)},g=b;export{g as advisoriesBloomSyncExecute};