@socketsecurity/lib 6.0.6 → 6.0.7

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 (499) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/dist/ai/discover.d.mts +2 -2
  3. package/dist/ai/discover.js +3 -2
  4. package/dist/ai/spawn.js +2 -1
  5. package/dist/ai/types.d.mts +18 -6
  6. package/dist/ai/worktree.d.mts +6 -6
  7. package/dist/ai/worktree.js +1 -1
  8. package/dist/ansi/strip.d.ts +1 -1
  9. package/dist/ansi/strip.js +0 -2
  10. package/dist/archives/_internal.js +7 -9
  11. package/dist/archives/extract.js +1 -1
  12. package/dist/archives/tar.js +6 -6
  13. package/dist/archives/zip.js +3 -5
  14. package/dist/argv/flag-predicates.d.ts +12 -12
  15. package/dist/argv/flag-predicates.js +17 -17
  16. package/dist/argv/flag-types.d.ts +18 -18
  17. package/dist/argv/flag-types.js +4 -4
  18. package/dist/argv/parse.d.ts +1 -1
  19. package/dist/arrays/_internal.js +11 -12
  20. package/dist/arrays/chunk.js +0 -1
  21. package/dist/arrays/join.d.ts +37 -3
  22. package/dist/arrays/join.js +43 -7
  23. package/dist/arrays/unique.js +0 -1
  24. package/dist/bin/_internal.d.ts +1 -1
  25. package/dist/bin/_internal.js +1 -1
  26. package/dist/bin/exec.js +2 -3
  27. package/dist/bin/find.js +13 -13
  28. package/dist/bin/prim.cjs +22736 -22556
  29. package/dist/bin/resolve.js +12 -13
  30. package/dist/bin/which.js +8 -8
  31. package/dist/cache/ttl/store.js +5 -5
  32. package/dist/checks/primordials-defaults.d.ts +3 -3
  33. package/dist/checks/primordials-defaults.js +3 -3
  34. package/dist/checks/primordials.js +4 -3
  35. package/dist/{bin → cli}/check-primordials.d.ts +11 -11
  36. package/dist/{bin → cli}/check-primordials.js +55 -52
  37. package/dist/{bin → cli}/check.js +3 -3
  38. package/dist/{bin → cli}/socket-lib.d.ts +1 -1
  39. package/dist/{bin → cli}/socket-lib.js +4 -4
  40. package/dist/colors/socket-palette.js +7 -9
  41. package/dist/compression/_internal.d.ts +12 -12
  42. package/dist/compression/_internal.js +17 -17
  43. package/dist/compression/brotli.d.ts +25 -25
  44. package/dist/compression/brotli.js +33 -33
  45. package/dist/compression/gzip.d.ts +23 -23
  46. package/dist/compression/gzip.js +40 -40
  47. package/dist/constants/agents.d.ts +3 -1
  48. package/dist/constants/agents.js +15 -11
  49. package/dist/constants/licenses.js +3 -3
  50. package/dist/constants/node.d.ts +23 -0
  51. package/dist/constants/node.js +47 -15
  52. package/dist/constants/packages.js +22 -28
  53. package/dist/constants/platform.d.ts +30 -3
  54. package/dist/constants/platform.js +72 -12
  55. package/dist/constants/runtime.d.ts +22 -0
  56. package/dist/constants/runtime.js +32 -0
  57. package/dist/constants/socket.js +1 -1
  58. package/dist/cover/code.js +8 -8
  59. package/dist/cover/formatters.js +5 -5
  60. package/dist/crypto/hash.d.ts +26 -1
  61. package/dist/crypto/hash.js +43 -12
  62. package/dist/debug/_internal.js +4 -6
  63. package/dist/debug/caller-info.js +2 -3
  64. package/dist/debug/namespace.d.ts +7 -0
  65. package/dist/debug/namespace.js +21 -12
  66. package/dist/debug/output.js +21 -24
  67. package/dist/debug/types.d.ts +4 -4
  68. package/dist/dlx/arborist.js +6 -6
  69. package/dist/dlx/binary-cache.js +14 -14
  70. package/dist/dlx/binary-download.d.ts +1 -1
  71. package/dist/dlx/binary-download.js +11 -11
  72. package/dist/dlx/binary-resolution.js +16 -14
  73. package/dist/dlx/binary-types.d.ts +5 -5
  74. package/dist/dlx/binary.js +5 -5
  75. package/dist/dlx/cache.js +1 -1
  76. package/dist/dlx/detect.d.ts +34 -25
  77. package/dist/dlx/detect.js +86 -77
  78. package/dist/dlx/dir.js +2 -2
  79. package/dist/dlx/firewall.d.ts +1 -1
  80. package/dist/dlx/lockfile.d.ts +19 -18
  81. package/dist/dlx/lockfile.js +16 -16
  82. package/dist/dlx/manifest.d.ts +6 -6
  83. package/dist/dlx/manifest.js +5 -5
  84. package/dist/dlx/package.d.ts +10 -10
  85. package/dist/dlx/package.js +16 -16
  86. package/dist/dlx/packages.js +4 -4
  87. package/dist/dlx/paths.js +7 -7
  88. package/dist/dlx/spec.js +1 -1
  89. package/dist/dlx/types.d.ts +28 -27
  90. package/dist/eco/cargo/parse-lockfile.d.ts +1 -1
  91. package/dist/eco/cargo/parse-lockfile.js +2 -2
  92. package/dist/eco/manifest/analyze-lockfile.js +2 -2
  93. package/dist/eco/manifest/detect-format.js +4 -4
  94. package/dist/eco/manifest/find-packages.js +2 -2
  95. package/dist/eco/manifest/get-package-versions.js +2 -2
  96. package/dist/eco/manifest/get-package.js +2 -2
  97. package/dist/eco/manifest/parse-lockfile.js +2 -2
  98. package/dist/eco/manifest/parse-manifest.js +2 -2
  99. package/dist/eco/manifest/parse.js +2 -2
  100. package/dist/eco/npm/npm/exec.js +2 -2
  101. package/dist/eco/npm/npm/flags.js +7 -12
  102. package/dist/eco/npm/npm/parse-lockfile.d.ts +14 -14
  103. package/dist/eco/npm/npm/parse-lockfile.js +3 -3
  104. package/dist/eco/npm/parse-package-json.js +3 -3
  105. package/dist/eco/npm/pnpm/exec.d.ts +1 -1
  106. package/dist/eco/npm/pnpm/exec.js +5 -5
  107. package/dist/eco/npm/pnpm/flags.js +0 -3
  108. package/dist/eco/npm/pnpm/parse-lockfile.d.ts +1 -1
  109. package/dist/eco/npm/pnpm/parse-lockfile.js +4 -4
  110. package/dist/eco/npm/script.js +9 -6
  111. package/dist/eco/npm/yarnpkg/yarn/exec.js +3 -3
  112. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.d.ts +2 -2
  113. package/dist/eco/npm/yarnpkg/yarn/parse-lockfile.js +8 -8
  114. package/dist/effects/pulse-frames.d.ts +3 -1
  115. package/dist/effects/shimmer-keyframes.d.ts +1 -1
  116. package/dist/effects/shimmer-terminal.d.ts +1 -1
  117. package/dist/env/boolean.js +0 -1
  118. package/dist/env/ci.js +0 -1
  119. package/dist/env/debug.js +0 -1
  120. package/dist/env/github-status.d.ts +51 -0
  121. package/dist/env/github-status.js +90 -0
  122. package/dist/env/github.js +0 -8
  123. package/dist/env/home.js +0 -1
  124. package/dist/env/locale.js +0 -3
  125. package/dist/env/node-auth-token.js +0 -1
  126. package/dist/env/node-env.js +0 -1
  127. package/dist/env/node-version-managers.d.ts +53 -0
  128. package/dist/env/node-version-managers.js +90 -0
  129. package/dist/env/npm.js +0 -5
  130. package/dist/env/number.js +0 -1
  131. package/dist/env/package-manager.js +3 -6
  132. package/dist/env/path.js +0 -1
  133. package/dist/env/pre-commit.js +1 -2
  134. package/dist/env/rewire.d.ts +7 -6
  135. package/dist/env/rewire.js +15 -16
  136. package/dist/env/shell.js +0 -1
  137. package/dist/env/socket-cli.js +5 -18
  138. package/dist/env/socket-mcp.d.ts +114 -0
  139. package/dist/env/socket-mcp.js +146 -0
  140. package/dist/env/socket.d.ts +1 -109
  141. package/dist/env/socket.js +12 -167
  142. package/dist/env/string.js +0 -1
  143. package/dist/env/temp-dir.js +0 -3
  144. package/dist/env/term.js +0 -1
  145. package/dist/env/test.js +3 -6
  146. package/dist/env/windows.js +0 -4
  147. package/dist/env/xdg.js +0 -3
  148. package/dist/events/exit/_internal.d.ts +11 -9
  149. package/dist/events/exit/_internal.js +31 -35
  150. package/dist/events/exit/handler.js +3 -4
  151. package/dist/events/exit/intercept.js +4 -6
  152. package/dist/events/exit/lifecycle.js +16 -18
  153. package/dist/events/exit/signals.js +1 -2
  154. package/dist/events/exit/types.d.ts +6 -5
  155. package/dist/external/@npmcli/package-json.js +2 -2
  156. package/dist/external/npm-pack.js +2 -2
  157. package/dist/external-tools/bazel/read-bazel-version-file.js +1 -1
  158. package/dist/external-tools/bazel/types.d.ts +1 -1
  159. package/dist/external-tools/cdxgen/from-vfs.js +1 -1
  160. package/dist/external-tools/cdxgen/types.d.ts +1 -1
  161. package/dist/external-tools/from-download.d.ts +1 -1
  162. package/dist/external-tools/from-download.js +1 -1
  163. package/dist/external-tools/janus/from-vfs.js +1 -1
  164. package/dist/external-tools/janus/types.d.ts +1 -1
  165. package/dist/external-tools/jre/detect-platform-arch.d.ts +10 -6
  166. package/dist/external-tools/jre/detect-platform-arch.js +29 -14
  167. package/dist/external-tools/jre/from-vfs.js +1 -1
  168. package/dist/external-tools/jre/types.d.ts +1 -1
  169. package/dist/external-tools/manifest.d.ts +7 -7
  170. package/dist/external-tools/manifest.js +12 -12
  171. package/dist/external-tools/opengrep/from-vfs.js +1 -1
  172. package/dist/external-tools/opengrep/types.d.ts +1 -1
  173. package/dist/external-tools/python/asset-names.d.ts +76 -0
  174. package/dist/external-tools/python/asset-names.js +104 -0
  175. package/dist/external-tools/python/dlx.d.ts +80 -0
  176. package/dist/external-tools/python/dlx.js +87 -0
  177. package/dist/external-tools/python/from-download.d.ts +53 -0
  178. package/dist/external-tools/python/from-download.js +68 -0
  179. package/dist/external-tools/python/from-path.d.ts +7 -0
  180. package/dist/external-tools/python/from-path.js +23 -0
  181. package/dist/external-tools/python/pin.d.ts +121 -0
  182. package/dist/external-tools/python/pin.js +173 -0
  183. package/dist/external-tools/python/pip-install.d.ts +75 -0
  184. package/dist/external-tools/python/pip-install.js +139 -0
  185. package/dist/external-tools/python/resolve.d.ts +42 -0
  186. package/dist/external-tools/python/resolve.js +58 -0
  187. package/dist/external-tools/python/types.d.ts +49 -0
  188. package/dist/external-tools/sbt/from-vfs.js +1 -1
  189. package/dist/external-tools/sbt/types.d.ts +1 -1
  190. package/dist/external-tools/skillspector/from-path.js +3 -5
  191. package/dist/external-tools/skillspector/from-vfs.js +1 -1
  192. package/dist/external-tools/synp/from-download.js +2 -2
  193. package/dist/external-tools/synp/from-vfs.js +1 -1
  194. package/dist/external-tools/trivy/from-vfs.js +1 -1
  195. package/dist/external-tools/trivy/types.d.ts +1 -1
  196. package/dist/external-tools/trufflehog/from-vfs.js +1 -1
  197. package/dist/external-tools/trufflehog/types.d.ts +1 -1
  198. package/dist/fs/_internal.d.ts +1 -1
  199. package/dist/fs/_internal.js +7 -7
  200. package/dist/fs/access.js +5 -9
  201. package/dist/fs/{path-cache.js → allowed-dirs-cache.js} +1 -1
  202. package/dist/fs/encoding.js +5 -7
  203. package/dist/fs/{find-up.js → find.js} +11 -13
  204. package/dist/fs/inspect.js +7 -13
  205. package/dist/fs/read-dir.js +7 -10
  206. package/dist/fs/read-file.js +8 -14
  207. package/dist/fs/read-json-cache.d.ts +6 -4
  208. package/dist/fs/read-json-cache.js +9 -6
  209. package/dist/fs/read-json.js +4 -6
  210. package/dist/fs/resolve-module.js +1 -1
  211. package/dist/fs/safe.d.ts +1 -1
  212. package/dist/fs/safe.js +12 -13
  213. package/dist/fs/unique.js +4 -5
  214. package/dist/fs/validate.js +1 -2
  215. package/dist/fs/write-json.js +4 -5
  216. package/dist/git/_internal.js +10 -10
  217. package/dist/git/changed.js +4 -4
  218. package/dist/git/repo.js +3 -3
  219. package/dist/git/staged.js +4 -4
  220. package/dist/git/unstaged.js +4 -4
  221. package/dist/github/ghsa.js +2 -2
  222. package/dist/github/refs-cache.d.ts +1 -1
  223. package/dist/github/refs-cache.js +5 -5
  224. package/dist/github/refs-rest.js +5 -5
  225. package/dist/github/{fetch.js → request.js} +13 -2
  226. package/dist/github/token.js +1 -1
  227. package/dist/github/types.d.ts +1 -1
  228. package/dist/globs/_internal.js +7 -9
  229. package/dist/globs/match.js +4 -6
  230. package/dist/globs/matcher.d.ts +3 -3
  231. package/dist/globs/matcher.js +12 -14
  232. package/dist/globs/stream.js +1 -2
  233. package/dist/globs/types.d.ts +24 -24
  234. package/dist/http-request/_internal.d.ts +1 -1
  235. package/dist/http-request/browser.js +4 -2
  236. package/dist/http-request/checksum-file.d.ts +55 -0
  237. package/dist/http-request/checksum-file.js +95 -0
  238. package/dist/http-request/download-types.d.ts +15 -23
  239. package/dist/http-request/download.js +3 -3
  240. package/dist/http-request/headers.js +0 -1
  241. package/dist/http-request/request-attempt.js +37 -33
  242. package/dist/http-request/request-types.d.ts +2 -2
  243. package/dist/http-request/request.js +1 -1
  244. package/dist/http-request/user-agent.js +3 -4
  245. package/dist/integrity.d.ts +86 -18
  246. package/dist/integrity.js +119 -30
  247. package/dist/ipc/directory.js +2 -2
  248. package/dist/ipc/paths.js +1 -1
  249. package/dist/ipc/write.js +1 -1
  250. package/dist/ipc-cli/get.js +12 -12
  251. package/dist/json/edit.js +13 -14
  252. package/dist/json/format.js +2 -2
  253. package/dist/json/parse.d.ts +1 -1
  254. package/dist/json/parse.js +3 -7
  255. package/dist/logger/_internal.d.ts +4 -4
  256. package/dist/logger/_internal.js +3 -3
  257. package/dist/logger/colors.js +4 -3
  258. package/dist/logger/console-methods.d.ts +132 -0
  259. package/dist/logger/console-methods.js +169 -0
  260. package/dist/logger/console.d.ts +12 -0
  261. package/dist/logger/console.js +42 -11
  262. package/dist/logger/indentation-methods.d.ts +81 -0
  263. package/dist/logger/indentation-methods.js +121 -0
  264. package/dist/logger/node.d.ts +16 -338
  265. package/dist/logger/node.js +75 -608
  266. package/dist/logger/options.d.ts +39 -0
  267. package/dist/logger/options.js +47 -0
  268. package/dist/logger/semantic-methods.d.ts +63 -0
  269. package/dist/logger/semantic-methods.js +108 -0
  270. package/dist/logger/stream-methods.d.ts +63 -0
  271. package/dist/logger/stream-methods.js +101 -0
  272. package/dist/logger/stream.d.ts +37 -0
  273. package/dist/logger/stream.js +42 -0
  274. package/dist/logger/symbols-builder.js +9 -9
  275. package/dist/logger/symbols.d.ts +2 -25
  276. package/dist/logger/symbols.js +53 -74
  277. package/dist/logger/types.d.ts +1 -1
  278. package/dist/memo/types.d.ts +6 -6
  279. package/dist/native-messaging/host.d.ts +20 -0
  280. package/dist/native-messaging/host.js +120 -0
  281. package/dist/native-messaging/index.d.ts +5 -0
  282. package/dist/native-messaging/index.js +22 -0
  283. package/dist/native-messaging/install.d.ts +60 -0
  284. package/dist/native-messaging/install.js +141 -0
  285. package/dist/native-messaging/rate-limit.d.ts +62 -0
  286. package/dist/native-messaging/rate-limit.js +115 -0
  287. package/dist/native-messaging/run.d.ts +10 -0
  288. package/dist/native-messaging/run.js +17 -0
  289. package/dist/node/async-hooks.js +4 -3
  290. package/dist/node/child-process.js +4 -3
  291. package/dist/node/crypto.js +4 -3
  292. package/dist/node/events.js +4 -3
  293. package/dist/node/fs-promises.js +4 -3
  294. package/dist/node/fs.js +4 -3
  295. package/dist/node/http.js +4 -3
  296. package/dist/node/https.js +4 -3
  297. package/dist/node/module.js +10 -6
  298. package/dist/node/os.js +4 -3
  299. package/dist/node/path.js +4 -3
  300. package/dist/node/timers-promises.js +4 -3
  301. package/dist/node/url.js +4 -3
  302. package/dist/node/util.js +4 -3
  303. package/dist/objects/getters.js +5 -7
  304. package/dist/objects/inspect.js +1 -4
  305. package/dist/objects/mutate.js +2 -3
  306. package/dist/objects/predicates.js +0 -4
  307. package/dist/objects/sort.js +3 -7
  308. package/dist/packages/edit-class.js +15 -16
  309. package/dist/packages/edit.js +12 -14
  310. package/dist/packages/exports.js +11 -17
  311. package/dist/packages/fetch.d.ts +16 -0
  312. package/dist/packages/fetch.js +81 -0
  313. package/dist/packages/find.d.ts +55 -0
  314. package/dist/packages/find.js +65 -0
  315. package/dist/packages/isolation.js +14 -14
  316. package/dist/packages/licenses.js +16 -16
  317. package/dist/packages/manifest.js +12 -15
  318. package/dist/packages/metadata-extensions.d.ts +14 -0
  319. package/dist/packages/metadata-extensions.js +43 -0
  320. package/dist/packages/normalize.js +5 -9
  321. package/dist/packages/provenance.js +16 -18
  322. package/dist/packages/read.d.ts +29 -0
  323. package/dist/packages/read.js +66 -0
  324. package/dist/packages/specs.d.ts +48 -1
  325. package/dist/packages/specs.js +74 -11
  326. package/dist/packages/tarball.d.ts +24 -0
  327. package/dist/packages/tarball.js +79 -0
  328. package/dist/packages/types.d.ts +21 -20
  329. package/dist/packages/validation.js +0 -3
  330. package/dist/paths/_internal.d.ts +2 -1
  331. package/dist/paths/_internal.js +7 -19
  332. package/dist/paths/conversion.js +5 -9
  333. package/dist/paths/filenames.d.ts +0 -1
  334. package/dist/paths/filenames.js +0 -2
  335. package/dist/paths/normalize.js +4 -5
  336. package/dist/paths/packages.js +4 -7
  337. package/dist/paths/predicates.js +9 -16
  338. package/dist/paths/resolve.js +11 -14
  339. package/dist/paths/rewire.js +3 -3
  340. package/dist/paths/socket.js +16 -16
  341. package/dist/paths/walk.d.ts +1 -1
  342. package/dist/paths/walk.js +4 -4
  343. package/dist/perf/report.js +2 -2
  344. package/dist/perf/types.d.ts +1 -1
  345. package/dist/pkg-ext/data.js +1 -1
  346. package/dist/primordials/array.js +9 -9
  347. package/dist/primordials/date.js +2 -2
  348. package/dist/primordials/error.js +3 -3
  349. package/dist/primordials/headers.d.ts +10 -0
  350. package/dist/primordials/headers.js +23 -0
  351. package/dist/primordials/intl.d.ts +13 -0
  352. package/dist/primordials/intl.js +26 -0
  353. package/dist/primordials/math.js +33 -33
  354. package/dist/primordials/number.js +9 -9
  355. package/dist/primordials/object.js +5 -5
  356. package/dist/primordials/string.d.ts +2 -2
  357. package/dist/primordials/string.js +6 -6
  358. package/dist/primordials/symbol.js +3 -3
  359. package/dist/primordials/uncurry.js +9 -9
  360. package/dist/process/abort.js +3 -3
  361. package/dist/process/lock-manager.js +8 -8
  362. package/dist/process/spawn/_internal.js +6 -8
  363. package/dist/process/spawn/child.js +14 -14
  364. package/dist/process/spawn/errors.js +2 -4
  365. package/dist/process/spawn/kill-tree.d.ts +53 -0
  366. package/dist/process/spawn/kill-tree.js +85 -0
  367. package/dist/process/spawn/stdio.js +0 -1
  368. package/dist/process/spawn/types.d.ts +5 -5
  369. package/dist/process/transient.js +2 -2
  370. package/dist/promises/_internal.d.ts +2 -1
  371. package/dist/promises/_internal.js +2 -6
  372. package/dist/promises/iterate.js +11 -15
  373. package/dist/promises/options.js +3 -6
  374. package/dist/promises/retry.js +4 -5
  375. package/dist/promises/timers.d.ts +30 -0
  376. package/dist/promises/timers.js +48 -0
  377. package/dist/releases/github-archives.d.ts +6 -6
  378. package/dist/releases/github-archives.js +2 -2
  379. package/dist/releases/github-asset-url.d.ts +1 -1
  380. package/dist/releases/github-asset-url.js +5 -5
  381. package/dist/releases/github-downloads.d.ts +1 -1
  382. package/dist/releases/github-downloads.js +3 -3
  383. package/dist/releases/github-listing.d.ts +11 -2
  384. package/dist/releases/github-listing.js +20 -7
  385. package/dist/releases/github-retry-config.js +1 -1
  386. package/dist/releases/github-types.d.ts +6 -6
  387. package/dist/releases/socket-btm-binary-naming.d.ts +107 -0
  388. package/dist/releases/socket-btm-binary-naming.js +155 -0
  389. package/dist/releases/socket-btm.d.ts +8 -115
  390. package/dist/releases/socket-btm.js +16 -159
  391. package/dist/schema/types.d.ts +1 -1
  392. package/dist/sea/detect.js +6 -6
  393. package/dist/secrets/_internal.d.ts +2 -2
  394. package/dist/secrets/_internal.js +2 -2
  395. package/dist/secrets/compare.d.ts +45 -0
  396. package/dist/secrets/compare.js +61 -0
  397. package/dist/secrets/keychain.js +6 -4
  398. package/dist/secrets/linux.js +19 -19
  399. package/dist/secrets/macos.d.ts +1 -1
  400. package/dist/secrets/macos.js +13 -13
  401. package/dist/secrets/rc.d.ts +2 -2
  402. package/dist/secrets/rc.js +6 -4
  403. package/dist/secrets/socket-api-token.d.ts +4 -4
  404. package/dist/secrets/socket-api-token.js +18 -9
  405. package/dist/secrets/windows.js +14 -13
  406. package/dist/shadow/skip.js +2 -2
  407. package/dist/smol/detect.js +9 -10
  408. package/dist/smol/http.js +6 -7
  409. package/dist/smol/https.js +6 -7
  410. package/dist/smol/manifest.d.ts +1 -1
  411. package/dist/smol/manifest.js +6 -7
  412. package/dist/smol/path.d.ts +1 -1
  413. package/dist/smol/path.js +7 -8
  414. package/dist/smol/primordial.d.ts +4 -0
  415. package/dist/smol/primordial.js +6 -7
  416. package/dist/smol/purl.d.ts +1 -1
  417. package/dist/smol/purl.js +7 -8
  418. package/dist/smol/versions.js +6 -7
  419. package/dist/smol/vfs.js +6 -7
  420. package/dist/sorts/_internal.js +6 -8
  421. package/dist/sorts/natural.js +10 -12
  422. package/dist/sorts/semver.js +1 -2
  423. package/dist/sorts/strings.js +0 -1
  424. package/dist/sorts/types.d.ts +1 -1
  425. package/dist/spinner/create-spinner-class.d.ts +38 -0
  426. package/dist/spinner/create-spinner-class.js +302 -0
  427. package/dist/spinner/default.js +8 -9
  428. package/dist/spinner/spinner-internals.d.ts +36 -0
  429. package/dist/spinner/spinner-internals.js +101 -0
  430. package/dist/spinner/spinner-shimmer-methods.d.ts +54 -0
  431. package/dist/spinner/spinner-shimmer-methods.js +143 -0
  432. package/dist/spinner/spinner-status-methods.d.ts +40 -0
  433. package/dist/spinner/spinner-status-methods.js +133 -0
  434. package/dist/spinner/spinner.d.ts +4 -5
  435. package/dist/spinner/spinner.js +18 -705
  436. package/dist/spinner/types.d.ts +3 -1
  437. package/dist/spinner/with.d.ts +10 -0
  438. package/dist/spinner/with.js +16 -2
  439. package/dist/stdio/divider.js +1 -1
  440. package/dist/stdio/footer.js +3 -3
  441. package/dist/stdio/header.js +4 -4
  442. package/dist/stdio/progress.js +5 -5
  443. package/dist/stdio/prompts.d.ts +5 -3
  444. package/dist/stdio/prompts.js +6 -7
  445. package/dist/stdio/stdout.js +3 -3
  446. package/dist/streams/parallel.js +3 -5
  447. package/dist/streams/transform.js +2 -3
  448. package/dist/strings/format.js +2 -6
  449. package/dist/strings/predicates.js +0 -2
  450. package/dist/strings/search.js +1 -2
  451. package/dist/strings/transform.js +0 -3
  452. package/dist/strings/width.js +9 -10
  453. package/dist/tables/bordered.js +4 -3
  454. package/dist/tables/padding.js +1 -1
  455. package/dist/tables/simple.js +8 -5
  456. package/dist/temporal/instant.js +1 -1
  457. package/dist/temporal/slots.js +6 -6
  458. package/dist/temporal/system.js +9 -9
  459. package/dist/themes/context.d.ts +3 -2
  460. package/dist/themes/context.js +4 -5
  461. package/dist/themes/themes.js +15 -15
  462. package/dist/themes/types.d.ts +3 -3
  463. package/dist/url/parse.js +0 -2
  464. package/dist/url/predicates.js +1 -2
  465. package/dist/url/search-params.js +3 -9
  466. package/dist/url/types.d.ts +5 -5
  467. package/dist/versions/_internal.js +3 -3
  468. package/dist/words/article.js +0 -1
  469. package/dist/words/capitalize.js +0 -1
  470. package/dist/words/pluralize.js +15 -5
  471. package/package.json +247 -106
  472. package/dist/external-tools/uv/asset-names.d.ts +0 -36
  473. package/dist/external-tools/uv/asset-names.js +0 -70
  474. package/dist/external-tools/uv/from-download.d.ts +0 -17
  475. package/dist/external-tools/uv/from-download.js +0 -47
  476. package/dist/external-tools/uv/from-path.d.ts +0 -5
  477. package/dist/external-tools/uv/from-path.js +0 -22
  478. package/dist/external-tools/uv/from-vfs.d.ts +0 -7
  479. package/dist/external-tools/uv/from-vfs.js +0 -26
  480. package/dist/external-tools/uv/resolve.d.ts +0 -25
  481. package/dist/external-tools/uv/resolve.js +0 -53
  482. package/dist/external-tools/uv/types.d.ts +0 -24
  483. package/dist/http-request/checksums.d.ts +0 -69
  484. package/dist/http-request/checksums.js +0 -108
  485. package/dist/http-request/http-request.d.ts +0 -12
  486. package/dist/http-request/http-request.js +0 -11
  487. package/dist/packages/operations.d.ts +0 -113
  488. package/dist/packages/operations.js +0 -304
  489. package/dist/ssri/convert.d.ts +0 -48
  490. package/dist/ssri/convert.js +0 -69
  491. package/dist/ssri/parse.d.ts +0 -27
  492. package/dist/ssri/parse.js +0 -41
  493. package/dist/ssri/validate.d.ts +0 -41
  494. package/dist/ssri/validate.js +0 -56
  495. /package/dist/{bin → cli}/check.d.ts +0 -0
  496. /package/dist/external-tools/{uv → python}/types.js +0 -0
  497. /package/dist/fs/{path-cache.d.ts → allowed-dirs-cache.d.ts} +0 -0
  498. /package/dist/fs/{find-up.d.ts → find.d.ts} +0 -0
  499. /package/dist/github/{fetch.d.ts → request.d.ts} +0 -0
@@ -18,20 +18,19 @@ const require_node_module = require('../node/module.js');
18
18
  * (`@socketsecurity/lib/eco/manifest/parse`), which already routes
19
19
  * through this when smol is present.
20
20
  */
21
- let _smolManifest;
22
- let _smolManifestProbed = false;
21
+ let cachedSmolManifest;
22
+ let smolManifestProbed = false;
23
23
  /**
24
24
  * Returns `node:smol-manifest` when running on the smol Node binary, otherwise
25
25
  * `undefined`. Result is cached across calls.
26
26
  */
27
- /*@__NO_SIDE_EFFECTS__*/
28
27
  function getSmolManifest() {
29
- if (!_smolManifestProbed) {
30
- _smolManifestProbed = true;
28
+ if (!smolManifestProbed) {
29
+ smolManifestProbed = true;
31
30
  /* c8 ignore start - smol Node binary only. */
32
- if (/* @__PURE__ */ require_node_module.isNodeBuiltin("node:smol-manifest")) _smolManifest = require("node:smol-manifest");
31
+ if (require_node_module.isNodeBuiltin("node:smol-manifest")) cachedSmolManifest = require("node:smol-manifest");
33
32
  }
34
- return _smolManifest;
33
+ return cachedSmolManifest;
35
34
  }
36
35
 
37
36
  //#endregion
@@ -6,7 +6,7 @@
6
6
  * and on socket-btm binaries that haven't shipped the binding yet; callers
7
7
  * fall back to the JS implementation. Result is cached. The binding does not
8
8
  * exist yet (the plan is unbuilt) — this accessor is the seam so that when it
9
- * lands, only this file changes and `paths/walk`, `fs/access`, `fs/find-up`
9
+ * lands, only this file changes and `paths/walk`, `fs/access`, `fs/find`
10
10
  * light up natively. Today `getSmolPath()` is always `undefined` and the JS
11
11
  * paths run.
12
12
  */
package/dist/smol/path.js CHANGED
@@ -12,26 +12,25 @@ const require_node_module = require('../node/module.js');
12
12
  * and on socket-btm binaries that haven't shipped the binding yet; callers
13
13
  * fall back to the JS implementation. Result is cached. The binding does not
14
14
  * exist yet (the plan is unbuilt) — this accessor is the seam so that when it
15
- * lands, only this file changes and `paths/walk`, `fs/access`, `fs/find-up`
15
+ * lands, only this file changes and `paths/walk`, `fs/access`, `fs/find`
16
16
  * light up natively. Today `getSmolPath()` is always `undefined` and the JS
17
17
  * paths run.
18
18
  */
19
- let _smolPath;
20
- let _smolPathProbed = false;
19
+ let smolPathCache;
20
+ let smolPathProbed = false;
21
21
  /**
22
22
  * Returns the `node:smol-path` binding when running on a smol Node binary that
23
23
  * ships it; otherwise `undefined`. Cached across calls.
24
24
  *
25
25
  * @returns The native binding, or `undefined` to signal "use the JS fallback".
26
26
  */
27
- /*@__NO_SIDE_EFFECTS__*/
28
27
  function getSmolPath() {
29
- if (!_smolPathProbed) {
30
- _smolPathProbed = true;
28
+ if (!smolPathProbed) {
29
+ smolPathProbed = true;
31
30
  /* c8 ignore start - smol Node binary only. */
32
- if (/* @__PURE__ */ require_node_module.isNodeBuiltin("node:smol-path")) _smolPath = require("node:smol-path");
31
+ if (require_node_module.isNodeBuiltin("node:smol-path")) smolPathCache = require("node:smol-path");
33
32
  }
34
- return _smolPath;
33
+ return smolPathCache;
35
34
  }
36
35
 
37
36
  //#endregion
@@ -67,6 +67,10 @@ export interface SmolPrimordialBinding {
67
67
  numberParseInt10(s: string): number;
68
68
  stringCharCodeAt(s: string, i: number): number;
69
69
  stringIsWellFormed(s: string): boolean;
70
+ IntlCollator: typeof Intl.Collator;
71
+ IntlListFormat: typeof Intl.ListFormat;
72
+ IntlPluralRules: typeof Intl.PluralRules;
73
+ IntlSegmenter: typeof Intl.Segmenter;
70
74
  }
71
75
  /**
72
76
  * Returns `node:smol-primordial` when running on the smol Node binary,
@@ -20,20 +20,19 @@ const require_node_module = require('../node/module.js');
20
20
  *
21
21
  * @see https://v8.dev/blog/v8-release-99 — V8 Fast API Calls overview
22
22
  */
23
- let _smolPrimordial;
24
- let _smolPrimordialProbed = false;
23
+ let smolPrimordial;
24
+ let smolPrimordialProbed = false;
25
25
  /**
26
26
  * Returns `node:smol-primordial` when running on the smol Node binary,
27
27
  * otherwise `undefined`. Result is cached across calls.
28
28
  */
29
- /*@__NO_SIDE_EFFECTS__*/
30
29
  function getSmolPrimordial() {
31
- if (!_smolPrimordialProbed) {
32
- _smolPrimordialProbed = true;
30
+ if (!smolPrimordialProbed) {
31
+ smolPrimordialProbed = true;
33
32
  /* c8 ignore start - smol Node binary only. */
34
- if (/* @__PURE__ */ require_node_module.isNodeBuiltin("node:smol-primordial")) _smolPrimordial = require("node:smol-primordial");
33
+ if (require_node_module.isNodeBuiltin("node:smol-primordial")) smolPrimordial = require("node:smol-primordial");
35
34
  }
36
- return _smolPrimordial;
35
+ return smolPrimordial;
37
36
  }
38
37
 
39
38
  //#endregion
@@ -7,7 +7,7 @@
7
7
  * calls. Callers fall back to the JS `@socketregistry/packageurl-js` import
8
8
  * on the undefined path.
9
9
  *
10
- * @internal — used by `src/packages/operations.ts` to resolve the
10
+ * @internal — used by `src/packages/specs.ts` to resolve the
11
11
  * `pkg:npm/<name>` parse on `resolveRegistryPackageName`. Most
12
12
  * callers should keep using `PackageURL` from
13
13
  * `external/@socketregistry/packageurl-js` directly; this loader
package/dist/smol/purl.js CHANGED
@@ -13,26 +13,25 @@ const require_node_module = require('../node/module.js');
13
13
  * calls. Callers fall back to the JS `@socketregistry/packageurl-js` import
14
14
  * on the undefined path.
15
15
  *
16
- * @internal — used by `src/packages/operations.ts` to resolve the
16
+ * @internal — used by `src/packages/specs.ts` to resolve the
17
17
  * `pkg:npm/<name>` parse on `resolveRegistryPackageName`. Most
18
18
  * callers should keep using `PackageURL` from
19
19
  * `external/@socketregistry/packageurl-js` directly; this loader
20
20
  * only matters where the hot path warrants the native acceleration.
21
21
  */
22
- let _smolPurl;
23
- let _smolPurlProbed = false;
22
+ let smolPurl;
23
+ let smolPurlProbed = false;
24
24
  /**
25
25
  * Returns `node:smol-purl` when running on the smol Node binary, otherwise
26
26
  * `undefined`. Result is cached across calls.
27
27
  */
28
- /*@__NO_SIDE_EFFECTS__*/
29
28
  function getSmolPurl() {
30
- if (!_smolPurlProbed) {
31
- _smolPurlProbed = true;
29
+ if (!smolPurlProbed) {
30
+ smolPurlProbed = true;
32
31
  /* c8 ignore start - smol Node binary only. */
33
- if (/* @__PURE__ */ require_node_module.isNodeBuiltin("node:smol-purl")) _smolPurl = require("node:smol-purl");
32
+ if (require_node_module.isNodeBuiltin("node:smol-purl")) smolPurl = require("node:smol-purl");
34
33
  }
35
- return _smolPurl;
34
+ return smolPurl;
36
35
  }
37
36
 
38
37
  //#endregion
@@ -16,20 +16,19 @@ const require_node_module = require('../node/module.js');
16
16
  * ops. Most callers should use the standard `versions` exports,
17
17
  * which already route through this when smol is present.
18
18
  */
19
- let _smolVersions;
20
- let _smolVersionsProbed = false;
19
+ let smolVersions;
20
+ let smolVersionsProbed = false;
21
21
  /**
22
22
  * Returns `node:smol-versions` when running on the smol Node binary, otherwise
23
23
  * `undefined`. Result is cached across calls.
24
24
  */
25
- /*@__NO_SIDE_EFFECTS__*/
26
25
  function getSmolVersions() {
27
- if (!_smolVersionsProbed) {
28
- _smolVersionsProbed = true;
26
+ if (!smolVersionsProbed) {
27
+ smolVersionsProbed = true;
29
28
  /* c8 ignore start - smol Node binary only. */
30
- if (/* @__PURE__ */ require_node_module.isNodeBuiltin("node:smol-versions")) _smolVersions = require("node:smol-versions");
29
+ if (require_node_module.isNodeBuiltin("node:smol-versions")) smolVersions = require("node:smol-versions");
31
30
  }
32
- return _smolVersions;
31
+ return smolVersions;
33
32
  }
34
33
 
35
34
  //#endregion
package/dist/smol/vfs.js CHANGED
@@ -26,8 +26,8 @@ const require_node_module = require('../node/module.js');
26
26
  * binding. Result is cached across calls. Callers fall back to PATH lookup
27
27
  * (or out-of-band downloads in socket-cli's case) when this is missing.
28
28
  */
29
- let _smolVfs;
30
- let _smolVfsProbed = false;
29
+ let cachedSmolVfs;
30
+ let smolVfsProbed = false;
31
31
  /**
32
32
  * Returns the pre-mounted SEA `SmolVirtualFileSystem` instance when running on
33
33
  * a smol Node binary with an embedded SEA payload; otherwise `undefined`.
@@ -37,14 +37,13 @@ let _smolVfsProbed = false;
37
37
  * binding-module loader is collapsed into this function so callers don't deal
38
38
  * with two indirection levels.
39
39
  */
40
- /*@__NO_SIDE_EFFECTS__*/
41
40
  function getSmolVfs() {
42
- if (!_smolVfsProbed) {
43
- _smolVfsProbed = true;
41
+ if (!smolVfsProbed) {
42
+ smolVfsProbed = true;
44
43
  /* c8 ignore start - smol Node binary only. */
45
- if (/* @__PURE__ */ require_node_module.isNodeBuiltin("node:smol-vfs")) _smolVfs = require("node:smol-vfs").getSmolVfs();
44
+ if (require_node_module.isNodeBuiltin("node:smol-vfs")) cachedSmolVfs = require("node:smol-vfs").getSmolVfs();
46
45
  }
47
- return _smolVfs;
46
+ return cachedSmolVfs;
48
47
  }
49
48
 
50
49
  //#endregion
@@ -3,17 +3,15 @@
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
4
 
5
5
  //#region src/sorts/_internal.ts
6
- let _fastSort;
7
- let _semver;
8
- /*@__NO_SIDE_EFFECTS__*/
6
+ let fastSort;
7
+ let semver;
9
8
  function getFastSort() {
10
- if (_fastSort === void 0) _fastSort = /*@__PURE__*/ require("../external/fast-sort.js");
11
- return _fastSort;
9
+ if (fastSort === void 0) fastSort = /*@__PURE__*/ require("../external/fast-sort.js");
10
+ return fastSort;
12
11
  }
13
- /*@__NO_SIDE_EFFECTS__*/
14
12
  function getSemver() {
15
- if (_semver === void 0) _semver = /*@__PURE__*/ require("../external/semver.js");
16
- return _semver;
13
+ if (semver === void 0) semver = /*@__PURE__*/ require("../external/semver.js");
14
+ return semver;
17
15
  }
18
16
 
19
17
  //#endregion
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  /* Socket Lib - Built with rolldown */
3
3
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_intl = require('../primordials/intl.js');
4
5
  const require_sorts__internal = require('./_internal.js');
5
6
 
6
7
  //#region src/sorts/natural.ts
@@ -11,9 +12,9 @@ const require_sorts__internal = require('./_internal.js');
11
12
  * Intl.Collator()` is 10-14ms in Node — too expensive to call
12
13
  * per-comparison.
13
14
  */
14
- let _localeCompare;
15
- let _naturalCompare;
16
- let _naturalSorter;
15
+ let cachedLocaleCompare;
16
+ let cachedNaturalCompare;
17
+ let cachedNaturalSorter;
17
18
  /**
18
19
  * Compare two strings using locale-aware comparison.
19
20
  *
@@ -24,10 +25,9 @@ let _naturalSorter;
24
25
  * localeCompare('a', 'a') // 0
25
26
  * ```
26
27
  */
27
- /*@__NO_SIDE_EFFECTS__*/
28
28
  function localeCompare(x, y) {
29
- if (_localeCompare === void 0) _localeCompare = new Intl.Collator().compare;
30
- return _localeCompare(x, y);
29
+ if (cachedLocaleCompare === void 0) cachedLocaleCompare = new require_primordials_intl.IntlCollator().compare;
30
+ return cachedLocaleCompare(x, y);
31
31
  }
32
32
  /**
33
33
  * Compare two strings using natural sorting (numeric-aware, case-insensitive).
@@ -38,13 +38,12 @@ function localeCompare(x, y) {
38
38
  * naturalCompare('img10', 'img2') // positive (img10 after img2)
39
39
  * ```
40
40
  */
41
- /*@__NO_SIDE_EFFECTS__*/
42
41
  function naturalCompare(x, y) {
43
- if (_naturalCompare === void 0) _naturalCompare = new Intl.Collator(void 0, {
42
+ if (cachedNaturalCompare === void 0) cachedNaturalCompare = new require_primordials_intl.IntlCollator(void 0, {
44
43
  numeric: true,
45
44
  sensitivity: "base"
46
45
  }).compare;
47
- return _naturalCompare(x, y);
46
+ return cachedNaturalCompare(x, y);
48
47
  }
49
48
  /**
50
49
  * Sort an array using natural comparison.
@@ -55,10 +54,9 @@ function naturalCompare(x, y) {
55
54
  * // ['file1', 'file2', 'file10']
56
55
  * ```
57
56
  */
58
- /*@__NO_SIDE_EFFECTS__*/
59
57
  function naturalSorter(arrayToSort) {
60
- if (_naturalSorter === void 0) _naturalSorter = (/* @__PURE__ */ require_sorts__internal.getFastSort()).createNewSortInstance({ comparer: naturalCompare });
61
- return _naturalSorter(arrayToSort);
58
+ if (cachedNaturalSorter === void 0) cachedNaturalSorter = require_sorts__internal.getFastSort().createNewSortInstance({ comparer: naturalCompare });
59
+ return cachedNaturalSorter(arrayToSort);
62
60
  }
63
61
 
64
62
  //#endregion
@@ -18,10 +18,9 @@ const require_sorts__internal = require('./_internal.js');
18
18
  * compareSemver('1.0.0', '1.0.0') // 0
19
19
  * ```
20
20
  */
21
- /*@__NO_SIDE_EFFECTS__*/
22
21
  function compareSemver(a, b) {
23
22
  /* c8 ignore start */
24
- const semver = /* @__PURE__ */ require_sorts__internal.getSemver();
23
+ const semver = require_sorts__internal.getSemver();
25
24
  const validA = semver.valid(a);
26
25
  /* c8 ignore stop */
27
26
  const validB = semver.valid(b);
@@ -18,7 +18,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
18
18
  * compareStr('a', 'a') // 0
19
19
  * ```
20
20
  */
21
- /*@__NO_SIDE_EFFECTS__*/
22
21
  function compareStr(a, b) {
23
22
  return a < b ? -1 : a > b ? 1 : 0;
24
23
  }
@@ -3,5 +3,5 @@
3
3
  * shape returned by `naturalSorter`. Pure types, no runtime side effects.
4
4
  */
5
5
  import type * as fastSortType from '../external/fast-sort';
6
- export type FastSortFunction = ReturnType<typeof import('fast-sort').createNewSortInstance>;
6
+ export type FastSortFunction = ReturnType<typeof fastSortType.createNewSortInstance>;
7
7
  export type { fastSortType };
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @file Builds the lazy-init Socket `Spinner` class that extends the live
3
+ * `yocto-spinner` constructor. The class graph is constructed inside
4
+ * `createSpinnerClass()` so the `super()` call binds against the runtime
5
+ * `YoctoSpinner` constructor passed in by the factory; keeping it here
6
+ * (rather than at module scope) preserves the spinner's lazy-init guarantee
7
+ * while splitting the bulk of the class body out of the factory module.
8
+ */
9
+ import type { ColorRgb, ColorValue } from '../colors/types';
10
+ import { incLogCallCountSymbol, lastWasBlankSymbol } from '../logger/symbols';
11
+ import type { SpinnerInstance, SpinnerOptions } from './types';
12
+ export type SpinnerCtorType = {
13
+ new (options?: SpinnerOptions | undefined): SpinnerInstance;
14
+ };
15
+ export type YoctoSpinnerConstructor = new (...args: unknown[]) => {
16
+ get color(): ColorRgb | ColorValue;
17
+ set color(value: ColorRgb | ColorValue);
18
+ isSpinning: boolean;
19
+ [key: string]: unknown;
20
+ };
21
+ export type SpinnerLogger = {
22
+ error: (...args: unknown[]) => unknown;
23
+ log: (...args: unknown[]) => unknown;
24
+ [lastWasBlankSymbol]: (value: boolean) => unknown;
25
+ [incLogCallCountSymbol]: () => unknown;
26
+ };
27
+ /**
28
+ * Build the Socket `Spinner` class as a subclass of the live `yocto-spinner`
29
+ * constructor. Passing the parent class in keeps the `super()` binding against
30
+ * the runtime constructor while letting the bulk of the class body live outside
31
+ * the factory module.
32
+ *
33
+ * @param YoctoSpinnerClass - Runtime `yocto-spinner` constructor to extend.
34
+ * @param logger - Default logger used for status output.
35
+ *
36
+ * @returns The constructed Socket spinner constructor.
37
+ */
38
+ export declare function createSpinnerClass(YoctoSpinnerClass: YoctoSpinnerConstructor, logger: SpinnerLogger): SpinnerCtorType;
@@ -0,0 +1,302 @@
1
+ "use strict";
2
+ /* Socket Lib - Built with rolldown */
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+ const require_primordials_math = require('../primordials/math.js');
5
+ const require_primordials_array = require('../primordials/array.js');
6
+ const require_primordials_object = require('../primordials/object.js');
7
+ const require_logger_symbols = require('../logger/symbols.js');
8
+ const require_strings_predicates = require('../strings/predicates.js');
9
+ const require_process_abort = require('../process/abort.js');
10
+ const require_colors_convert = require('../colors/convert.js');
11
+ const require_strings_width = require('../strings/width.js');
12
+ const require_spinner_format = require('./format.js');
13
+ const require_spinner_spinner_internals = require('./spinner-internals.js');
14
+ const require_spinner_spinner_shimmer_methods = require('./spinner-shimmer-methods.js');
15
+ const require_spinner_spinner_status_methods = require('./spinner-status-methods.js');
16
+
17
+ //#region src/spinner/create-spinner-class.ts
18
+ /**
19
+ * Build the Socket `Spinner` class as a subclass of the live `yocto-spinner`
20
+ * constructor. Passing the parent class in keeps the `super()` binding against
21
+ * the runtime constructor while letting the bulk of the class body live outside
22
+ * the factory module.
23
+ *
24
+ * @param YoctoSpinnerClass - Runtime `yocto-spinner` constructor to extend.
25
+ * @param logger - Default logger used for status output.
26
+ *
27
+ * @returns The constructed Socket spinner constructor.
28
+ */
29
+ function createSpinnerClass(YoctoSpinnerClass, logger) {
30
+ const SpinnerCtor = class SpinnerClass extends YoctoSpinnerClass {
31
+ #baseText = "";
32
+ #indentation = "";
33
+ #progress;
34
+ #shimmer;
35
+ #shimmerSavedConfig;
36
+ constructor(ctorOptions) {
37
+ const opts = {
38
+ __proto__: null,
39
+ ...ctorOptions
40
+ };
41
+ const spinnerColorRgb = require_spinner_spinner_internals.resolveSpinnerColorRgb(opts);
42
+ const shimmerInfo = require_spinner_spinner_internals.parseShimmerOption(opts.shimmer);
43
+ super({
44
+ signal: require_process_abort.getAbortSignal(),
45
+ ...opts,
46
+ color: spinnerColorRgb,
47
+ onRenderFrame: (frame, text, applyColor) => {
48
+ const spacing = require_strings_width.stringWidth(frame) === 1 ? " " : " ";
49
+ return frame ? `${applyColor(frame)}${spacing}${text}` : text;
50
+ },
51
+ onFrameUpdate: shimmerInfo ? () => {
52
+ if (this.#baseText) super["text"] = this.#buildDisplayText();
53
+ } : void 0
54
+ });
55
+ this.#shimmer = shimmerInfo;
56
+ this.#shimmerSavedConfig = shimmerInfo;
57
+ }
58
+ get color() {
59
+ const value = super.color;
60
+ return require_colors_convert.isRgbTuple(value) ? value : require_colors_convert.toRgb(value);
61
+ }
62
+ set color(value) {
63
+ super.color = require_colors_convert.isRgbTuple(value) ? value : require_colors_convert.toRgb(value);
64
+ }
65
+ /**
66
+ * Apply a yocto-spinner method and update logger state. Handles text
67
+ * normalization, extra arguments, and logger tracking. Exposed under
68
+ * `applyStatusSymbol` so the status methods installed from
69
+ * `spinner-status-methods.ts` can drive it.
70
+ */
71
+ [require_spinner_spinner_status_methods.applyStatusSymbol](methodName, args) {
72
+ let extras;
73
+ let text = require_primordials_array.ArrayPrototypeAt(args, 0);
74
+ if (typeof text === "string") extras = require_primordials_array.ArrayPrototypeSlice(args, 1);
75
+ else {
76
+ extras = args;
77
+ text = "";
78
+ }
79
+ const wasSpinning = this.isSpinning;
80
+ const normalized = require_spinner_format.normalizeText(text);
81
+ const superMethod = super[methodName];
82
+ if (methodName === "stop" && !normalized) superMethod.call(this);
83
+ else superMethod.call(this, normalized);
84
+ if (methodName === "stop") {
85
+ if (wasSpinning && normalized) {
86
+ logger[require_logger_symbols.lastWasBlankSymbol](require_strings_predicates.isBlankString(normalized));
87
+ logger[require_logger_symbols.incLogCallCountSymbol]();
88
+ }
89
+ } else {
90
+ logger[require_logger_symbols.lastWasBlankSymbol](false);
91
+ logger[require_logger_symbols.incLogCallCountSymbol]();
92
+ }
93
+ /* c8 ignore start - extras-empty no-op arm fires when log called without extras */
94
+ if (extras.length) {
95
+ logger.log(...extras);
96
+ logger[require_logger_symbols.lastWasBlankSymbol](false);
97
+ }
98
+ /* c8 ignore stop */
99
+ return this;
100
+ }
101
+ /**
102
+ * Build the complete display text with progress, shimmer, and indentation.
103
+ * Combines base text, progress bar, shimmer effects, and indentation.
104
+ *
105
+ * @private
106
+ */
107
+ #buildDisplayText() {
108
+ let displayText = this.#baseText;
109
+ /* c8 ignore start - progress + shimmer paths fire only when caller seeded those configs */
110
+ if (this.#progress) {
111
+ const progressText = require_spinner_format.formatProgress(this.#progress);
112
+ displayText = displayText ? `${displayText} ${progressText}` : progressText;
113
+ }
114
+ if (displayText && this.#shimmer) displayText = require_spinner_spinner_internals.applyShimmer(displayText, this.#shimmer, this.color);
115
+ if (this.#indentation && displayText) displayText = this.#indentation + displayText;
116
+ /* c8 ignore stop */
117
+ return displayText;
118
+ }
119
+ /**
120
+ * Show a status message without stopping the spinner. Outputs the symbol
121
+ * and message to stderr, then continues spinning. Exposed under
122
+ * `showStatusSymbol` so the status methods installed from
123
+ * `spinner-status-methods.ts` can drive it.
124
+ */
125
+ [require_spinner_spinner_status_methods.showStatusSymbol](symbolType, args) {
126
+ let text = require_primordials_array.ArrayPrototypeAt(args, 0);
127
+ let extras;
128
+ if (typeof text === "string") extras = require_primordials_array.ArrayPrototypeSlice(args, 1);
129
+ else {
130
+ extras = args;
131
+ text = "";
132
+ }
133
+ logger.error(`${require_logger_symbols.LOG_SYMBOLS[symbolType]} ${text}`, ...extras);
134
+ return this;
135
+ }
136
+ /**
137
+ * Update the spinner's displayed text. Rebuilds display text and triggers
138
+ * render.
139
+ *
140
+ * @private
141
+ */
142
+ #updateSpinnerText() {
143
+ super["text"] = this.#buildDisplayText();
144
+ }
145
+ [require_spinner_spinner_shimmer_methods.getShimmerSymbol]() {
146
+ return this.#shimmer;
147
+ }
148
+ [require_spinner_spinner_shimmer_methods.setShimmerSymbol](value) {
149
+ this.#shimmer = value;
150
+ }
151
+ [require_spinner_spinner_shimmer_methods.getSavedShimmerSymbol]() {
152
+ return this.#shimmerSavedConfig;
153
+ }
154
+ [require_spinner_spinner_shimmer_methods.setSavedShimmerSymbol](value) {
155
+ this.#shimmerSavedConfig = value;
156
+ }
157
+ [require_spinner_spinner_shimmer_methods.updateTextSymbol]() {
158
+ this.#updateSpinnerText();
159
+ }
160
+ /**
161
+ * Decrease indentation level by removing spaces from the left. Pass 0 to
162
+ * reset indentation to zero completely.
163
+ *
164
+ * @default spaces=2
165
+ *
166
+ * @param spaces - Number of spaces to remove.
167
+ *
168
+ * @returns This spinner for chaining
169
+ */
170
+ dedent(spaces) {
171
+ if (spaces === 0) this.#indentation = "";
172
+ else {
173
+ const amount = spaces ?? 2;
174
+ const newLength = require_primordials_math.MathMax(0, this.#indentation.length - amount);
175
+ this.#indentation = this.#indentation.slice(0, newLength);
176
+ }
177
+ this.#updateSpinnerText();
178
+ return this;
179
+ }
180
+ /**
181
+ * Increase indentation level by adding spaces to the left. Pass 0 to reset
182
+ * indentation to zero completely.
183
+ *
184
+ * @default spaces=2
185
+ *
186
+ * @param spaces - Number of spaces to add.
187
+ *
188
+ * @returns This spinner for chaining
189
+ */
190
+ indent(spaces) {
191
+ /* c8 ignore start - spaces===0 fires when caller passes 0; else-branch + default fire for omitted/non-zero */
192
+ if (spaces === 0) this.#indentation = "";
193
+ else {
194
+ const amount = spaces ?? 2;
195
+ this.#indentation += " ".repeat(amount);
196
+ }
197
+ /* c8 ignore stop */
198
+ this.#updateSpinnerText();
199
+ return this;
200
+ }
201
+ /**
202
+ * Update progress information displayed with the spinner. Shows a progress
203
+ * bar with percentage and optional unit label.
204
+ *
205
+ * @param current - Current progress value.
206
+ * @param total - Total/maximum progress value.
207
+ * @param unit - Optional unit label (e.g., 'files', 'items')
208
+ *
209
+ * @returns This spinner for chaining
210
+ */
211
+ progress = (current, total, unit) => {
212
+ this.#progress = {
213
+ __proto__: null,
214
+ current,
215
+ total,
216
+ ...unit ? { unit } : {}
217
+ };
218
+ this.#updateSpinnerText();
219
+ return this;
220
+ };
221
+ /**
222
+ * Increment progress by a specified amount. Updates the progress bar
223
+ * displayed with the spinner. Clamps the result between 0 and the total
224
+ * value.
225
+ *
226
+ * @default amount=1
227
+ *
228
+ * @param amount - Amount to increment by.
229
+ *
230
+ * @returns This spinner for chaining
231
+ */
232
+ progressStep(amount = 1) {
233
+ /* c8 ignore start - no-progress no-op fires before progress() seed; unit-spread arm fires when seeded with unit */
234
+ if (this.#progress) {
235
+ const newCurrent = this.#progress.current + amount;
236
+ this.#progress = {
237
+ __proto__: null,
238
+ current: require_primordials_math.MathMax(0, Math.min(newCurrent, this.#progress.total)),
239
+ total: this.#progress.total,
240
+ ...this.#progress.unit ? { unit: this.#progress.unit } : {}
241
+ };
242
+ this.#updateSpinnerText();
243
+ }
244
+ return this;
245
+ /* c8 ignore stop */
246
+ }
247
+ /**
248
+ * Start the spinner animation with optional text. Begins displaying the
249
+ * animated spinner on stderr.
250
+ *
251
+ * @param text - Optional text to display with the spinner.
252
+ *
253
+ * @returns This spinner for chaining
254
+ */
255
+ start(...args) {
256
+ /* c8 ignore start - args-length and normalized-falsy arms exercised across calls; some test paths skip both */
257
+ if (args.length) {
258
+ const normalized = require_spinner_format.normalizeText(require_primordials_array.ArrayPrototypeAt(args, 0));
259
+ if (!normalized) {
260
+ this.#baseText = "";
261
+ super["text"] = "";
262
+ } else this.#baseText = normalized;
263
+ }
264
+ /* c8 ignore stop */
265
+ this.#updateSpinnerText();
266
+ return this[require_spinner_spinner_status_methods.applyStatusSymbol]("start", []);
267
+ }
268
+ /**
269
+ * Stop the spinner animation and clear internal state. Auto-clears the
270
+ * spinner line via yocto-spinner.stop(). Resets progress, shimmer, and text
271
+ * state.
272
+ *
273
+ * @param text - Optional final text to display after stopping.
274
+ *
275
+ * @returns This spinner for chaining
276
+ */
277
+ stop(...args) {
278
+ this.#baseText = "";
279
+ this.#progress = void 0;
280
+ this.#shimmer = void 0;
281
+ return this[require_spinner_spinner_status_methods.applyStatusSymbol]("stop", args);
282
+ }
283
+ text(value) {
284
+ if (arguments.length === 0) return this.#baseText;
285
+ this.#baseText = value ?? "";
286
+ this.#updateSpinnerText();
287
+ return this;
288
+ }
289
+ };
290
+ require_spinner_spinner_status_methods.installStatusMethods(SpinnerCtor.prototype, logger);
291
+ require_spinner_spinner_shimmer_methods.installShimmerMethods(SpinnerCtor.prototype);
292
+ require_primordials_object.ObjectDefineProperties(SpinnerCtor.prototype, {
293
+ error: require_spinner_format.desc(SpinnerCtor.prototype.fail),
294
+ errorAndStop: require_spinner_format.desc(SpinnerCtor.prototype.failAndStop),
295
+ warning: require_spinner_format.desc(SpinnerCtor.prototype.warn),
296
+ warningAndStop: require_spinner_format.desc(SpinnerCtor.prototype.warnAndStop)
297
+ });
298
+ return SpinnerCtor;
299
+ }
300
+
301
+ //#endregion
302
+ exports.createSpinnerClass = createSpinnerClass;