@socketsecurity/lib 0.0.0 → 1.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 (555) hide show
  1. package/CHANGELOG.md +270 -0
  2. package/LICENSE +21 -0
  3. package/README.md +80 -2
  4. package/data/extensions.json +28 -0
  5. package/dist/abort.d.ts +11 -0
  6. package/dist/abort.js +62 -0
  7. package/dist/abort.js.map +7 -0
  8. package/dist/agent.d.ts +102 -0
  9. package/dist/agent.js +288 -0
  10. package/dist/agent.js.map +7 -0
  11. package/dist/ansi.d.ts +29 -0
  12. package/dist/ansi.js +62 -0
  13. package/dist/ansi.js.map +7 -0
  14. package/dist/argv/flags.d.ts +199 -0
  15. package/dist/argv/flags.js +284 -0
  16. package/dist/argv/flags.js.map +7 -0
  17. package/dist/argv/parse.d.ts +76 -0
  18. package/dist/argv/parse.js +173 -0
  19. package/dist/argv/parse.js.map +7 -0
  20. package/dist/arrays.d.ts +29 -0
  21. package/dist/arrays.js +87 -0
  22. package/dist/arrays.js.map +7 -0
  23. package/dist/bin.d.ts +50 -0
  24. package/dist/bin.js +405 -0
  25. package/dist/bin.js.map +7 -0
  26. package/dist/cacache.d.ts +86 -0
  27. package/dist/cacache.js +140 -0
  28. package/dist/cacache.js.map +7 -0
  29. package/dist/cache-with-ttl.d.ts +133 -0
  30. package/dist/cache-with-ttl.js +225 -0
  31. package/dist/cache-with-ttl.js.map +7 -0
  32. package/dist/constants/agents.d.ts +37 -0
  33. package/dist/constants/agents.js +128 -0
  34. package/dist/constants/agents.js.map +7 -0
  35. package/dist/constants/core.d.ts +22 -0
  36. package/dist/constants/core.js +59 -0
  37. package/dist/constants/core.js.map +7 -0
  38. package/dist/constants/encoding.d.ts +13 -0
  39. package/dist/constants/encoding.js +50 -0
  40. package/dist/constants/encoding.js.map +7 -0
  41. package/dist/constants/github.d.ts +7 -0
  42. package/dist/constants/github.js +32 -0
  43. package/dist/constants/github.js.map +7 -0
  44. package/dist/constants/licenses.d.ts +8 -0
  45. package/dist/constants/licenses.js +68 -0
  46. package/dist/constants/licenses.js.map +7 -0
  47. package/dist/constants/node.d.ts +29 -0
  48. package/dist/constants/node.js +173 -0
  49. package/dist/constants/node.js.map +7 -0
  50. package/dist/constants/packages.d.ts +19 -0
  51. package/dist/constants/packages.js +130 -0
  52. package/dist/constants/packages.js.map +7 -0
  53. package/dist/constants/paths.d.ts +51 -0
  54. package/dist/constants/paths.js +152 -0
  55. package/dist/constants/paths.js.map +7 -0
  56. package/dist/constants/platform.d.ts +6 -0
  57. package/dist/constants/platform.js +43 -0
  58. package/dist/constants/platform.js.map +7 -0
  59. package/dist/constants/process.d.ts +7 -0
  60. package/dist/constants/process.js +54 -0
  61. package/dist/constants/process.js.map +7 -0
  62. package/dist/constants/socket.d.ts +29 -0
  63. package/dist/constants/socket.js +83 -0
  64. package/dist/constants/socket.js.map +7 -0
  65. package/dist/constants/testing.d.ts +9 -0
  66. package/dist/constants/testing.js +38 -0
  67. package/dist/constants/testing.js.map +7 -0
  68. package/dist/constants/time.d.ts +11 -0
  69. package/dist/constants/time.js +41 -0
  70. package/dist/constants/time.js.map +7 -0
  71. package/dist/constants/typescript.d.ts +6 -0
  72. package/dist/constants/typescript.js +56 -0
  73. package/dist/constants/typescript.js.map +7 -0
  74. package/dist/cover/code.d.ts +8 -0
  75. package/dist/cover/code.js +137 -0
  76. package/dist/cover/code.js.map +7 -0
  77. package/dist/cover/formatters.d.ts +9 -0
  78. package/dist/cover/formatters.js +103 -0
  79. package/dist/cover/formatters.js.map +7 -0
  80. package/dist/cover/type.d.ts +7 -0
  81. package/dist/cover/type.js +65 -0
  82. package/dist/cover/type.js.map +7 -0
  83. package/dist/cover/types.d.ts +70 -0
  84. package/dist/cover/types.js +17 -0
  85. package/dist/cover/types.js.map +7 -0
  86. package/dist/debug.d.ts +99 -0
  87. package/dist/debug.js +345 -0
  88. package/dist/debug.js.map +7 -0
  89. package/dist/dlx-binary.d.ts +49 -0
  90. package/dist/dlx-binary.js +261 -0
  91. package/dist/dlx-binary.js.map +7 -0
  92. package/dist/dlx.d.ts +64 -0
  93. package/dist/dlx.js +168 -0
  94. package/dist/dlx.js.map +7 -0
  95. package/dist/download-lock.d.ts +48 -0
  96. package/dist/download-lock.js +139 -0
  97. package/dist/download-lock.js.map +7 -0
  98. package/dist/effects/pulse-frames.d.ts +23 -0
  99. package/dist/effects/pulse-frames.js +66 -0
  100. package/dist/effects/pulse-frames.js.map +7 -0
  101. package/dist/effects/text-shimmer.d.ts +37 -0
  102. package/dist/effects/text-shimmer.js +175 -0
  103. package/dist/effects/text-shimmer.js.map +7 -0
  104. package/dist/effects/types.d.ts +41 -0
  105. package/dist/effects/types.js +17 -0
  106. package/dist/effects/types.js.map +7 -0
  107. package/dist/effects/ultra.d.ts +16 -0
  108. package/dist/effects/ultra.js +63 -0
  109. package/dist/effects/ultra.js.map +7 -0
  110. package/dist/env/appdata.d.ts +1 -0
  111. package/dist/env/appdata.js +30 -0
  112. package/dist/env/appdata.js.map +7 -0
  113. package/dist/env/ci.d.ts +1 -0
  114. package/dist/env/ci.js +31 -0
  115. package/dist/env/ci.js.map +7 -0
  116. package/dist/env/comspec.d.ts +1 -0
  117. package/dist/env/comspec.js +30 -0
  118. package/dist/env/comspec.js.map +7 -0
  119. package/dist/env/debug.d.ts +1 -0
  120. package/dist/env/debug.js +30 -0
  121. package/dist/env/debug.js.map +7 -0
  122. package/dist/env/getters.d.ts +40 -0
  123. package/dist/env/getters.js +283 -0
  124. package/dist/env/getters.js.map +7 -0
  125. package/dist/env/github-api-url.d.ts +1 -0
  126. package/dist/env/github-api-url.js +30 -0
  127. package/dist/env/github-api-url.js.map +7 -0
  128. package/dist/env/github-base-ref.d.ts +1 -0
  129. package/dist/env/github-base-ref.js +30 -0
  130. package/dist/env/github-base-ref.js.map +7 -0
  131. package/dist/env/github-ref-name.d.ts +1 -0
  132. package/dist/env/github-ref-name.js +30 -0
  133. package/dist/env/github-ref-name.js.map +7 -0
  134. package/dist/env/github-ref-type.d.ts +1 -0
  135. package/dist/env/github-ref-type.js +30 -0
  136. package/dist/env/github-ref-type.js.map +7 -0
  137. package/dist/env/github-repository.d.ts +1 -0
  138. package/dist/env/github-repository.js +30 -0
  139. package/dist/env/github-repository.js.map +7 -0
  140. package/dist/env/github-server-url.d.ts +1 -0
  141. package/dist/env/github-server-url.js +30 -0
  142. package/dist/env/github-server-url.js.map +7 -0
  143. package/dist/env/github-token.d.ts +1 -0
  144. package/dist/env/github-token.js +30 -0
  145. package/dist/env/github-token.js.map +7 -0
  146. package/dist/env/helpers.d.ts +6 -0
  147. package/dist/env/helpers.js +49 -0
  148. package/dist/env/helpers.js.map +7 -0
  149. package/dist/env/home.d.ts +1 -0
  150. package/dist/env/home.js +30 -0
  151. package/dist/env/home.js.map +7 -0
  152. package/dist/env/jest-worker-id.d.ts +1 -0
  153. package/dist/env/jest-worker-id.js +30 -0
  154. package/dist/env/jest-worker-id.js.map +7 -0
  155. package/dist/env/lang.d.ts +1 -0
  156. package/dist/env/lang.js +30 -0
  157. package/dist/env/lang.js.map +7 -0
  158. package/dist/env/lc-all.d.ts +1 -0
  159. package/dist/env/lc-all.js +30 -0
  160. package/dist/env/lc-all.js.map +7 -0
  161. package/dist/env/lc-messages.d.ts +1 -0
  162. package/dist/env/lc-messages.js +30 -0
  163. package/dist/env/lc-messages.js.map +7 -0
  164. package/dist/env/localappdata.d.ts +1 -0
  165. package/dist/env/localappdata.js +30 -0
  166. package/dist/env/localappdata.js.map +7 -0
  167. package/dist/env/node-auth-token.d.ts +1 -0
  168. package/dist/env/node-auth-token.js +30 -0
  169. package/dist/env/node-auth-token.js.map +7 -0
  170. package/dist/env/node-env.d.ts +1 -0
  171. package/dist/env/node-env.js +30 -0
  172. package/dist/env/node-env.js.map +7 -0
  173. package/dist/env/npm-config-registry.d.ts +1 -0
  174. package/dist/env/npm-config-registry.js +30 -0
  175. package/dist/env/npm-config-registry.js.map +7 -0
  176. package/dist/env/npm-config-user-agent.d.ts +1 -0
  177. package/dist/env/npm-config-user-agent.js +30 -0
  178. package/dist/env/npm-config-user-agent.js.map +7 -0
  179. package/dist/env/npm-lifecycle-event.d.ts +1 -0
  180. package/dist/env/npm-lifecycle-event.js +30 -0
  181. package/dist/env/npm-lifecycle-event.js.map +7 -0
  182. package/dist/env/npm-registry.d.ts +1 -0
  183. package/dist/env/npm-registry.js +30 -0
  184. package/dist/env/npm-registry.js.map +7 -0
  185. package/dist/env/npm-token.d.ts +1 -0
  186. package/dist/env/npm-token.js +30 -0
  187. package/dist/env/npm-token.js.map +7 -0
  188. package/dist/env/path.d.ts +1 -0
  189. package/dist/env/path.js +30 -0
  190. package/dist/env/path.js.map +7 -0
  191. package/dist/env/pre-commit.d.ts +1 -0
  192. package/dist/env/pre-commit.js +31 -0
  193. package/dist/env/pre-commit.js.map +7 -0
  194. package/dist/env/shell.d.ts +1 -0
  195. package/dist/env/shell.js +30 -0
  196. package/dist/env/shell.js.map +7 -0
  197. package/dist/env/socket-accept-risks.d.ts +1 -0
  198. package/dist/env/socket-accept-risks.js +31 -0
  199. package/dist/env/socket-accept-risks.js.map +7 -0
  200. package/dist/env/socket-api-base-url.d.ts +1 -0
  201. package/dist/env/socket-api-base-url.js +30 -0
  202. package/dist/env/socket-api-base-url.js.map +7 -0
  203. package/dist/env/socket-api-proxy.d.ts +1 -0
  204. package/dist/env/socket-api-proxy.js +30 -0
  205. package/dist/env/socket-api-proxy.js.map +7 -0
  206. package/dist/env/socket-api-timeout.d.ts +1 -0
  207. package/dist/env/socket-api-timeout.js +31 -0
  208. package/dist/env/socket-api-timeout.js.map +7 -0
  209. package/dist/env/socket-api-token.d.ts +1 -0
  210. package/dist/env/socket-api-token.js +30 -0
  211. package/dist/env/socket-api-token.js.map +7 -0
  212. package/dist/env/socket-cacache-dir.d.ts +1 -0
  213. package/dist/env/socket-cacache-dir.js +30 -0
  214. package/dist/env/socket-cacache-dir.js.map +7 -0
  215. package/dist/env/socket-cli-accept-risks.d.ts +1 -0
  216. package/dist/env/socket-cli-accept-risks.js +33 -0
  217. package/dist/env/socket-cli-accept-risks.js.map +7 -0
  218. package/dist/env/socket-cli-api-base-url.d.ts +1 -0
  219. package/dist/env/socket-cli-api-base-url.js +30 -0
  220. package/dist/env/socket-cli-api-base-url.js.map +7 -0
  221. package/dist/env/socket-cli-api-proxy.d.ts +1 -0
  222. package/dist/env/socket-cli-api-proxy.js +30 -0
  223. package/dist/env/socket-cli-api-proxy.js.map +7 -0
  224. package/dist/env/socket-cli-api-timeout.d.ts +1 -0
  225. package/dist/env/socket-cli-api-timeout.js +31 -0
  226. package/dist/env/socket-cli-api-timeout.js.map +7 -0
  227. package/dist/env/socket-cli-api-token.d.ts +1 -0
  228. package/dist/env/socket-cli-api-token.js +30 -0
  229. package/dist/env/socket-cli-api-token.js.map +7 -0
  230. package/dist/env/socket-cli-config.d.ts +1 -0
  231. package/dist/env/socket-cli-config.js +30 -0
  232. package/dist/env/socket-cli-config.js.map +7 -0
  233. package/dist/env/socket-cli-fix.d.ts +1 -0
  234. package/dist/env/socket-cli-fix.js +30 -0
  235. package/dist/env/socket-cli-fix.js.map +7 -0
  236. package/dist/env/socket-cli-no-api-token.d.ts +1 -0
  237. package/dist/env/socket-cli-no-api-token.js +33 -0
  238. package/dist/env/socket-cli-no-api-token.js.map +7 -0
  239. package/dist/env/socket-cli-optimize.d.ts +1 -0
  240. package/dist/env/socket-cli-optimize.js +31 -0
  241. package/dist/env/socket-cli-optimize.js.map +7 -0
  242. package/dist/env/socket-cli-org-slug.d.ts +1 -0
  243. package/dist/env/socket-cli-org-slug.js +30 -0
  244. package/dist/env/socket-cli-org-slug.js.map +7 -0
  245. package/dist/env/socket-cli-shadow-accept-risks.d.ts +1 -0
  246. package/dist/env/socket-cli-shadow-accept-risks.js +33 -0
  247. package/dist/env/socket-cli-shadow-accept-risks.js.map +7 -0
  248. package/dist/env/socket-cli-shadow-api-token.d.ts +1 -0
  249. package/dist/env/socket-cli-shadow-api-token.js +30 -0
  250. package/dist/env/socket-cli-shadow-api-token.js.map +7 -0
  251. package/dist/env/socket-cli-shadow-bin.d.ts +1 -0
  252. package/dist/env/socket-cli-shadow-bin.js +30 -0
  253. package/dist/env/socket-cli-shadow-bin.js.map +7 -0
  254. package/dist/env/socket-cli-shadow-progress.d.ts +1 -0
  255. package/dist/env/socket-cli-shadow-progress.js +33 -0
  256. package/dist/env/socket-cli-shadow-progress.js.map +7 -0
  257. package/dist/env/socket-cli-shadow-silent.d.ts +1 -0
  258. package/dist/env/socket-cli-shadow-silent.js +33 -0
  259. package/dist/env/socket-cli-shadow-silent.js.map +7 -0
  260. package/dist/env/socket-cli-view-all-risks.d.ts +1 -0
  261. package/dist/env/socket-cli-view-all-risks.js +33 -0
  262. package/dist/env/socket-cli-view-all-risks.js.map +7 -0
  263. package/dist/env/socket-config.d.ts +1 -0
  264. package/dist/env/socket-config.js +30 -0
  265. package/dist/env/socket-config.js.map +7 -0
  266. package/dist/env/socket-debug.d.ts +1 -0
  267. package/dist/env/socket-debug.js +30 -0
  268. package/dist/env/socket-debug.js.map +7 -0
  269. package/dist/env/socket-home.d.ts +1 -0
  270. package/dist/env/socket-home.js +30 -0
  271. package/dist/env/socket-home.js.map +7 -0
  272. package/dist/env/socket-no-api-token.d.ts +1 -0
  273. package/dist/env/socket-no-api-token.js +31 -0
  274. package/dist/env/socket-no-api-token.js.map +7 -0
  275. package/dist/env/socket-npm-registry.d.ts +1 -0
  276. package/dist/env/socket-npm-registry.js +30 -0
  277. package/dist/env/socket-npm-registry.js.map +7 -0
  278. package/dist/env/socket-org-slug.d.ts +1 -0
  279. package/dist/env/socket-org-slug.js +30 -0
  280. package/dist/env/socket-org-slug.js.map +7 -0
  281. package/dist/env/socket-registry-url.d.ts +1 -0
  282. package/dist/env/socket-registry-url.js +30 -0
  283. package/dist/env/socket-registry-url.js.map +7 -0
  284. package/dist/env/socket-view-all-risks.d.ts +1 -0
  285. package/dist/env/socket-view-all-risks.js +31 -0
  286. package/dist/env/socket-view-all-risks.js.map +7 -0
  287. package/dist/env/temp.d.ts +1 -0
  288. package/dist/env/temp.js +30 -0
  289. package/dist/env/temp.js.map +7 -0
  290. package/dist/env/term.d.ts +1 -0
  291. package/dist/env/term.js +30 -0
  292. package/dist/env/term.js.map +7 -0
  293. package/dist/env/tmp.d.ts +1 -0
  294. package/dist/env/tmp.js +30 -0
  295. package/dist/env/tmp.js.map +7 -0
  296. package/dist/env/tmpdir.d.ts +1 -0
  297. package/dist/env/tmpdir.js +30 -0
  298. package/dist/env/tmpdir.js.map +7 -0
  299. package/dist/env/userprofile.d.ts +1 -0
  300. package/dist/env/userprofile.js +30 -0
  301. package/dist/env/userprofile.js.map +7 -0
  302. package/dist/env/vitest.d.ts +1 -0
  303. package/dist/env/vitest.js +31 -0
  304. package/dist/env/vitest.js.map +7 -0
  305. package/dist/env/xdg-cache-home.d.ts +1 -0
  306. package/dist/env/xdg-cache-home.js +30 -0
  307. package/dist/env/xdg-cache-home.js.map +7 -0
  308. package/dist/env/xdg-config-home.d.ts +1 -0
  309. package/dist/env/xdg-config-home.js +30 -0
  310. package/dist/env/xdg-config-home.js.map +7 -0
  311. package/dist/env/xdg-data-home.d.ts +1 -0
  312. package/dist/env/xdg-data-home.js +30 -0
  313. package/dist/env/xdg-data-home.js.map +7 -0
  314. package/dist/env.d.ts +15 -0
  315. package/dist/env.js +63 -0
  316. package/dist/env.js.map +7 -0
  317. package/dist/external/@inquirer/checkbox.js +4 -0
  318. package/dist/external/@inquirer/confirm.js +22 -0
  319. package/dist/external/@inquirer/core.js +4 -0
  320. package/dist/external/@inquirer/input.js +1 -0
  321. package/dist/external/@inquirer/password.js +1 -0
  322. package/dist/external/@inquirer/prompts.js +4 -0
  323. package/dist/external/@inquirer/search.js +1 -0
  324. package/dist/external/@inquirer/select.js +25 -0
  325. package/dist/external/@npmcli/package-json/index.js +1 -0
  326. package/dist/external/@npmcli/package-json/lib/read-package.js +1 -0
  327. package/dist/external/@npmcli/package-json/lib/sort.js +1 -0
  328. package/dist/external/@npmcli/promise-spawn.js +5 -0
  329. package/dist/external/@socketregistry/is-unicode-supported.d.ts +2 -0
  330. package/dist/external/@socketregistry/is-unicode-supported.js +5 -0
  331. package/dist/external/@socketregistry/packageurl-js.js +34 -0
  332. package/dist/external/@socketregistry/yocto-spinner.d.ts +12 -0
  333. package/dist/external/@socketregistry/yocto-spinner.js +8 -0
  334. package/dist/external/@yarnpkg/extensions.d.ts +5 -0
  335. package/dist/external/@yarnpkg/extensions.js +5 -0
  336. package/dist/external/cacache.d.ts +93 -0
  337. package/dist/external/cacache.js +32 -0
  338. package/dist/external/debug.d.ts +25 -0
  339. package/dist/external/debug.js +9 -0
  340. package/dist/external/del.d.ts +1 -0
  341. package/dist/external/del.js +54 -0
  342. package/dist/external/fast-glob.js +54 -0
  343. package/dist/external/fast-sort.d.ts +4 -0
  344. package/dist/external/fast-sort.js +5 -0
  345. package/dist/external/get-east-asian-width.d.ts +5 -0
  346. package/dist/external/get-east-asian-width.js +5 -0
  347. package/dist/external/libnpmpack.d.ts +3 -0
  348. package/dist/external/libnpmpack.js +225 -0
  349. package/dist/external/make-fetch-happen.d.ts +16 -0
  350. package/dist/external/make-fetch-happen.js +69 -0
  351. package/dist/external/normalize-package-data.js +6 -0
  352. package/dist/external/npm-package-arg.js +6 -0
  353. package/dist/external/pacote.d.ts +19 -0
  354. package/dist/external/pacote.js +105 -0
  355. package/dist/external/picomatch.js +5 -0
  356. package/dist/external/semver.d.ts +3 -0
  357. package/dist/external/semver.js +5 -0
  358. package/dist/external/spdx-correct.js +5 -0
  359. package/dist/external/spdx-expression-parse.js +5 -0
  360. package/dist/external/streaming-iterables.js +5 -0
  361. package/dist/external/validate-npm-package-name.js +5 -0
  362. package/dist/external/which.js +5 -0
  363. package/dist/external/yargs-parser.d.ts +3 -0
  364. package/dist/external/yargs-parser.js +26 -0
  365. package/dist/external/yoctocolors-cjs.d.ts +38 -0
  366. package/dist/external/yoctocolors-cjs.js +5 -0
  367. package/dist/external/zod.d.ts +1 -0
  368. package/dist/external/zod.js +27 -0
  369. package/dist/fs.d.ts +184 -0
  370. package/dist/fs.js +610 -0
  371. package/dist/fs.js.map +7 -0
  372. package/dist/functions.d.ts +27 -0
  373. package/dist/functions.js +70 -0
  374. package/dist/functions.js.map +7 -0
  375. package/dist/git.d.ts +93 -0
  376. package/dist/git.js +321 -0
  377. package/dist/git.js.map +7 -0
  378. package/dist/github.d.ts +121 -0
  379. package/dist/github.js +203 -0
  380. package/dist/github.js.map +7 -0
  381. package/dist/globs.d.ts +46 -0
  382. package/dist/globs.js +154 -0
  383. package/dist/globs.js.map +7 -0
  384. package/dist/http-request.d.ts +53 -0
  385. package/dist/http-request.js +315 -0
  386. package/dist/http-request.js.map +7 -0
  387. package/dist/index.d.ts +13 -0
  388. package/dist/index.js +64 -0
  389. package/dist/index.js.map +7 -0
  390. package/dist/ipc.d.ts +366 -0
  391. package/dist/ipc.js +234 -0
  392. package/dist/ipc.js.map +7 -0
  393. package/dist/json.d.ts +23 -0
  394. package/dist/json.js +75 -0
  395. package/dist/json.js.map +7 -0
  396. package/dist/logger.d.ts +183 -0
  397. package/dist/logger.js +653 -0
  398. package/dist/logger.js.map +7 -0
  399. package/dist/maintained-node-versions.d.ts +7 -0
  400. package/dist/maintained-node-versions.js +37 -0
  401. package/dist/maintained-node-versions.js.map +7 -0
  402. package/dist/memoization.d.ts +142 -0
  403. package/dist/memoization.js +212 -0
  404. package/dist/memoization.js.map +7 -0
  405. package/dist/objects.d.ts +146 -0
  406. package/dist/objects.js +321 -0
  407. package/dist/objects.js.map +7 -0
  408. package/dist/packages/editable.d.ts +107 -0
  409. package/dist/packages/editable.js +358 -0
  410. package/dist/packages/editable.js.map +7 -0
  411. package/dist/packages/exports.d.ts +30 -0
  412. package/dist/packages/exports.js +164 -0
  413. package/dist/packages/exports.js.map +7 -0
  414. package/dist/packages/isolation.d.ts +22 -0
  415. package/dist/packages/isolation.js +197 -0
  416. package/dist/packages/isolation.js.map +7 -0
  417. package/dist/packages/licenses.d.ts +68 -0
  418. package/dist/packages/licenses.js +216 -0
  419. package/dist/packages/licenses.js.map +7 -0
  420. package/dist/packages/manifest.d.ts +16 -0
  421. package/dist/packages/manifest.js +192 -0
  422. package/dist/packages/manifest.js.map +7 -0
  423. package/dist/packages/normalize.d.ts +21 -0
  424. package/dist/packages/normalize.js +122 -0
  425. package/dist/packages/normalize.js.map +7 -0
  426. package/dist/packages/operations.d.ts +54 -0
  427. package/dist/packages/operations.js +306 -0
  428. package/dist/packages/operations.js.map +7 -0
  429. package/dist/packages/paths.d.ts +10 -0
  430. package/dist/packages/paths.js +55 -0
  431. package/dist/packages/paths.js.map +7 -0
  432. package/dist/packages/provenance.d.ts +10 -0
  433. package/dist/packages/provenance.js +180 -0
  434. package/dist/packages/provenance.js.map +7 -0
  435. package/dist/packages/registry.d.ts +8 -0
  436. package/dist/packages/registry.js +30 -0
  437. package/dist/packages/registry.js.map +7 -0
  438. package/dist/packages/specs.d.ts +28 -0
  439. package/dist/packages/specs.js +85 -0
  440. package/dist/packages/specs.js.map +7 -0
  441. package/dist/packages/validation.d.ts +15 -0
  442. package/dist/packages/validation.js +53 -0
  443. package/dist/packages/validation.js.map +7 -0
  444. package/dist/packages.d.ts +154 -0
  445. package/dist/packages.js +131 -0
  446. package/dist/packages.js.map +7 -0
  447. package/dist/path.d.ts +74 -0
  448. package/dist/path.js +442 -0
  449. package/dist/path.js.map +7 -0
  450. package/dist/paths.d.ts +42 -0
  451. package/dist/paths.js +145 -0
  452. package/dist/paths.js.map +7 -0
  453. package/dist/performance.d.ts +178 -0
  454. package/dist/performance.js +219 -0
  455. package/dist/performance.js.map +7 -0
  456. package/dist/promise-queue.d.ts +35 -0
  457. package/dist/promise-queue.js +111 -0
  458. package/dist/promise-queue.js.map +7 -0
  459. package/dist/promises.d.ts +67 -0
  460. package/dist/promises.js +268 -0
  461. package/dist/promises.js.map +7 -0
  462. package/dist/prompts.d.ts +27 -0
  463. package/dist/prompts.js +60 -0
  464. package/dist/prompts.js.map +7 -0
  465. package/dist/regexps.d.ts +13 -0
  466. package/dist/regexps.js +32 -0
  467. package/dist/regexps.js.map +7 -0
  468. package/dist/sea.d.ts +10 -0
  469. package/dist/sea.js +46 -0
  470. package/dist/sea.js.map +7 -0
  471. package/dist/shadow.d.ts +17 -0
  472. package/dist/shadow.js +60 -0
  473. package/dist/shadow.js.map +7 -0
  474. package/dist/signal-exit.d.ts +23 -0
  475. package/dist/signal-exit.js +250 -0
  476. package/dist/signal-exit.js.map +7 -0
  477. package/dist/sorts.d.ts +28 -0
  478. package/dist/sorts.js +96 -0
  479. package/dist/sorts.js.map +7 -0
  480. package/dist/spawn.d.ts +207 -0
  481. package/dist/spawn.js +201 -0
  482. package/dist/spawn.js.map +7 -0
  483. package/dist/spinner.d.ts +208 -0
  484. package/dist/spinner.js +729 -0
  485. package/dist/spinner.js.map +7 -0
  486. package/dist/ssri.d.ts +95 -0
  487. package/dist/ssri.js +73 -0
  488. package/dist/ssri.js.map +7 -0
  489. package/dist/stdio/clear.d.ts +40 -0
  490. package/dist/stdio/clear.js +84 -0
  491. package/dist/stdio/clear.js.map +7 -0
  492. package/dist/stdio/divider.d.ts +48 -0
  493. package/dist/stdio/divider.js +81 -0
  494. package/dist/stdio/divider.js.map +7 -0
  495. package/dist/stdio/footer.d.ts +25 -0
  496. package/dist/stdio/footer.js +96 -0
  497. package/dist/stdio/footer.js.map +7 -0
  498. package/dist/stdio/header.d.ts +25 -0
  499. package/dist/stdio/header.js +102 -0
  500. package/dist/stdio/header.js.map +7 -0
  501. package/dist/stdio/mask.d.ts +72 -0
  502. package/dist/stdio/mask.js +187 -0
  503. package/dist/stdio/mask.js.map +7 -0
  504. package/dist/stdio/progress.d.ts +51 -0
  505. package/dist/stdio/progress.js +171 -0
  506. package/dist/stdio/progress.js.map +7 -0
  507. package/dist/stdio/prompts.d.ts +46 -0
  508. package/dist/stdio/prompts.js +90 -0
  509. package/dist/stdio/prompts.js.map +7 -0
  510. package/dist/stdio/stderr.d.ts +48 -0
  511. package/dist/stdio/stderr.js +91 -0
  512. package/dist/stdio/stderr.js.map +7 -0
  513. package/dist/stdio/stdout.d.ts +48 -0
  514. package/dist/stdio/stdout.js +105 -0
  515. package/dist/stdio/stdout.js.map +7 -0
  516. package/dist/streams.d.ts +20 -0
  517. package/dist/streams.js +80 -0
  518. package/dist/streams.js.map +7 -0
  519. package/dist/strings.d.ts +139 -0
  520. package/dist/strings.js +253 -0
  521. package/dist/strings.js.map +7 -0
  522. package/dist/suppress-warnings.d.ts +66 -0
  523. package/dist/suppress-warnings.js +100 -0
  524. package/dist/suppress-warnings.js.map +7 -0
  525. package/dist/tables.d.ts +69 -0
  526. package/dist/tables.js +130 -0
  527. package/dist/tables.js.map +7 -0
  528. package/dist/temporary-executor.d.ts +9 -0
  529. package/dist/temporary-executor.js +54 -0
  530. package/dist/temporary-executor.js.map +7 -0
  531. package/dist/types.d.ts +65 -0
  532. package/dist/types.js +74 -0
  533. package/dist/types.js.map +7 -0
  534. package/dist/url.d.ts +60 -0
  535. package/dist/url.js +144 -0
  536. package/dist/url.js.map +7 -0
  537. package/dist/utils/get-ipc.d.ts +16 -0
  538. package/dist/utils/get-ipc.js +60 -0
  539. package/dist/utils/get-ipc.js.map +7 -0
  540. package/dist/validation/json-parser.d.ts +10 -0
  541. package/dist/validation/json-parser.js +129 -0
  542. package/dist/validation/json-parser.js.map +7 -0
  543. package/dist/validation/types.d.ts +40 -0
  544. package/dist/validation/types.js +17 -0
  545. package/dist/validation/types.js.map +7 -0
  546. package/dist/versions.d.ts +87 -0
  547. package/dist/versions.js +155 -0
  548. package/dist/versions.js.map +7 -0
  549. package/dist/words.d.ts +22 -0
  550. package/dist/words.js +52 -0
  551. package/dist/words.js.map +7 -0
  552. package/dist/zod.d.ts +5 -0
  553. package/dist/zod.js +29 -0
  554. package/dist/zod.js.map +7 -0
  555. package/package.json +856 -7
@@ -0,0 +1,139 @@
1
+ /* Socket Lib - Built with esbuild */
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var download_lock_exports = {};
20
+ __export(download_lock_exports, {
21
+ downloadWithLock: () => downloadWithLock
22
+ });
23
+ module.exports = __toCommonJS(download_lock_exports);
24
+ var import_node_fs = require("node:fs");
25
+ var import_promises = require("node:fs/promises");
26
+ var import_node_path = require("node:path");
27
+ var import_http_request = require("./http-request");
28
+ function getLockFilePath(destPath, locksDir) {
29
+ const dir = locksDir || `${(0, import_node_path.dirname)(destPath)}/.locks`;
30
+ const filename = `${destPath.replace(/[^\w.-]/g, "_")}.lock`;
31
+ return (0, import_node_path.join)(dir, filename);
32
+ }
33
+ function isLockStale(lockInfo, staleTimeout) {
34
+ const age = Date.now() - lockInfo.startTime;
35
+ if (age > staleTimeout) {
36
+ return true;
37
+ }
38
+ try {
39
+ process.kill(lockInfo.pid, 0);
40
+ return false;
41
+ } catch {
42
+ return true;
43
+ }
44
+ }
45
+ async function acquireLock(destPath, url, options) {
46
+ const { lockTimeout, locksDir, pollInterval, staleTimeout } = options;
47
+ const lockPath = getLockFilePath(destPath, locksDir);
48
+ const lockDir = (0, import_node_path.dirname)(lockPath);
49
+ await (0, import_promises.mkdir)(lockDir, { recursive: true });
50
+ const startTime = Date.now();
51
+ while (true) {
52
+ try {
53
+ if ((0, import_node_fs.existsSync)(lockPath)) {
54
+ const lockContent = await (0, import_promises.readFile)(lockPath, "utf8");
55
+ const lockInfo2 = JSON.parse(lockContent);
56
+ if (isLockStale(lockInfo2, staleTimeout)) {
57
+ await (0, import_promises.rm)(lockPath, { force: true });
58
+ } else {
59
+ if (Date.now() - startTime > lockTimeout) {
60
+ throw new Error(
61
+ `Lock acquisition timed out after ${lockTimeout}ms (held by PID ${lockInfo2.pid})`
62
+ );
63
+ }
64
+ await new Promise((resolve) => setTimeout(resolve, pollInterval));
65
+ continue;
66
+ }
67
+ }
68
+ const lockInfo = {
69
+ pid: process.pid,
70
+ startTime: Date.now(),
71
+ url
72
+ };
73
+ await (0, import_promises.writeFile)(lockPath, JSON.stringify(lockInfo, null, 2), {
74
+ // Use 'wx' flag to fail if file exists (atomic operation)
75
+ flag: "wx"
76
+ });
77
+ return lockPath;
78
+ } catch (e) {
79
+ if (e.code === "EEXIST") {
80
+ if (Date.now() - startTime > lockTimeout) {
81
+ throw new Error(`Lock acquisition timed out after ${lockTimeout}ms`);
82
+ }
83
+ await new Promise((resolve) => setTimeout(resolve, pollInterval));
84
+ continue;
85
+ }
86
+ throw e;
87
+ }
88
+ }
89
+ }
90
+ async function releaseLock(lockPath) {
91
+ try {
92
+ await (0, import_promises.rm)(lockPath, { force: true });
93
+ } catch {
94
+ }
95
+ }
96
+ async function downloadWithLock(url, destPath, options) {
97
+ const {
98
+ lockTimeout = 6e4,
99
+ locksDir,
100
+ pollInterval = 1e3,
101
+ staleTimeout = 3e5,
102
+ ...downloadOptions
103
+ } = { __proto__: null, ...options };
104
+ if ((0, import_node_fs.existsSync)(destPath)) {
105
+ const statResult = await (0, import_promises.stat)(destPath).catch(() => null);
106
+ if (statResult && statResult.size > 0) {
107
+ return {
108
+ path: destPath,
109
+ size: statResult.size
110
+ };
111
+ }
112
+ }
113
+ const lockPath = await acquireLock(destPath, url, {
114
+ lockTimeout,
115
+ locksDir,
116
+ pollInterval,
117
+ staleTimeout
118
+ });
119
+ try {
120
+ if ((0, import_node_fs.existsSync)(destPath)) {
121
+ const statResult = await (0, import_promises.stat)(destPath).catch(() => null);
122
+ if (statResult && statResult.size > 0) {
123
+ return {
124
+ path: destPath,
125
+ size: statResult.size
126
+ };
127
+ }
128
+ }
129
+ const result = await (0, import_http_request.httpDownload)(url, destPath, downloadOptions);
130
+ return result;
131
+ } finally {
132
+ await releaseLock(lockPath);
133
+ }
134
+ }
135
+ // Annotate the CommonJS export names for ESM import in node:
136
+ 0 && (module.exports = {
137
+ downloadWithLock
138
+ });
139
+ //# sourceMappingURL=download-lock.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/download-lock.ts"],
4
+ "sourcesContent": ["/** @fileoverview Download locking utilities to prevent concurrent downloads of the same resource. Uses file-based locking for cross-process synchronization. */\n\nimport { existsSync } from 'node:fs'\nimport { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\nimport { dirname, join } from 'node:path'\nimport type { HttpDownloadOptions, HttpDownloadResult } from './http-request'\nimport { httpDownload } from './http-request'\n\nexport interface DownloadLockInfo {\n pid: number\n startTime: number\n url: string\n}\n\nexport interface DownloadWithLockOptions extends HttpDownloadOptions {\n /**\n * Maximum time to wait for lock acquisition in milliseconds.\n * @default 60000 (1 minute)\n */\n lockTimeout?: number | undefined\n /**\n * Directory where lock files are stored.\n * @default '<destPath>.locks'\n */\n locksDir?: string | undefined\n /**\n * Interval for checking stale locks in milliseconds.\n * @default 1000 (1 second)\n */\n pollInterval?: number | undefined\n /**\n * Maximum age of a lock before it's considered stale in milliseconds.\n * @default 300000 (5 minutes)\n */\n staleTimeout?: number | undefined\n}\n\n/**\n * Get the path to the lock file for a destination path.\n */\nfunction getLockFilePath(destPath: string, locksDir?: string): string {\n const dir = locksDir || `${dirname(destPath)}/.locks`\n const filename = `${destPath.replace(/[^\\w.-]/g, '_')}.lock`\n return join(dir, filename)\n}\n\n/**\n * Check if a lock is stale (process no longer exists or too old).\n */\nfunction isLockStale(\n lockInfo: DownloadLockInfo,\n staleTimeout: number,\n): boolean {\n // Check if lock is too old\n const age = Date.now() - lockInfo.startTime\n if (age > staleTimeout) {\n return true\n }\n\n // Check if process still exists (Node.js specific)\n try {\n // process.kill(pid, 0) doesn't actually kill the process\n // It just checks if the process exists\n process.kill(lockInfo.pid, 0)\n return false\n } catch {\n // Process doesn't exist\n return true\n }\n}\n\n/**\n * Acquire a lock for downloading to a destination path.\n * @throws {Error} When lock cannot be acquired within timeout.\n */\nasync function acquireLock(\n destPath: string,\n url: string,\n options: {\n lockTimeout: number\n locksDir?: string | undefined\n pollInterval: number\n staleTimeout: number\n },\n): Promise<string> {\n const { lockTimeout, locksDir, pollInterval, staleTimeout } = options\n const lockPath = getLockFilePath(destPath, locksDir)\n const lockDir = dirname(lockPath)\n\n // Ensure lock directory exists\n await mkdir(lockDir, { recursive: true })\n\n const startTime = Date.now()\n\n while (true) {\n try {\n // Try to read existing lock\n if (existsSync(lockPath)) {\n // eslint-disable-next-line no-await-in-loop\n const lockContent = await readFile(lockPath, 'utf8')\n const lockInfo: DownloadLockInfo = JSON.parse(lockContent)\n\n // Check if lock is stale\n if (isLockStale(lockInfo, staleTimeout)) {\n // Remove stale lock\n // eslint-disable-next-line no-await-in-loop\n await rm(lockPath, { force: true })\n } else {\n // Lock is valid, check timeout\n if (Date.now() - startTime > lockTimeout) {\n throw new Error(\n `Lock acquisition timed out after ${lockTimeout}ms (held by PID ${lockInfo.pid})`,\n )\n }\n\n // Wait and retry\n // eslint-disable-next-line no-await-in-loop\n await new Promise(resolve => setTimeout(resolve, pollInterval))\n continue\n }\n }\n\n // Try to create lock file\n const lockInfo: DownloadLockInfo = {\n pid: process.pid,\n startTime: Date.now(),\n url,\n }\n\n // eslint-disable-next-line no-await-in-loop\n await writeFile(lockPath, JSON.stringify(lockInfo, null, 2), {\n // Use 'wx' flag to fail if file exists (atomic operation)\n flag: 'wx',\n })\n\n // Successfully acquired lock\n return lockPath\n } catch (e) {\n // If file already exists, another process created it first\n if ((e as NodeJS.ErrnoException).code === 'EEXIST') {\n if (Date.now() - startTime > lockTimeout) {\n throw new Error(`Lock acquisition timed out after ${lockTimeout}ms`)\n }\n // eslint-disable-next-line no-await-in-loop\n await new Promise(resolve => setTimeout(resolve, pollInterval))\n continue\n }\n\n // Other error\n throw e\n }\n }\n}\n\n/**\n * Release a lock by removing the lock file.\n */\nasync function releaseLock(lockPath: string): Promise<void> {\n try {\n await rm(lockPath, { force: true })\n } catch {\n // Ignore errors when releasing lock\n }\n}\n\n/**\n * Download a file with locking to prevent concurrent downloads of the same resource.\n * If another process is already downloading to the same destination, this will wait\n * for the download to complete (up to lockTimeout) before proceeding.\n *\n * @throws {Error} When download fails or lock cannot be acquired.\n *\n * @example\n * ```typescript\n * const result = await downloadWithLock(\n * 'https://example.com/file.tar.gz',\n * '/tmp/downloads/file.tar.gz',\n * {\n * retries: 3,\n * lockTimeout: 60000, // Wait up to 1 minute for other downloads\n * }\n * )\n * ```\n */\nexport async function downloadWithLock(\n url: string,\n destPath: string,\n options?: DownloadWithLockOptions | undefined,\n): Promise<HttpDownloadResult> {\n const {\n lockTimeout = 60_000,\n locksDir,\n pollInterval = 1000,\n staleTimeout = 300_000,\n ...downloadOptions\n } = { __proto__: null, ...options } as DownloadWithLockOptions\n\n // If file already exists and has content, return immediately\n if (existsSync(destPath)) {\n const statResult = await stat(destPath).catch(() => null)\n if (statResult && statResult.size > 0) {\n return {\n path: destPath,\n size: statResult.size,\n }\n }\n }\n\n // Acquire lock\n const lockPath = await acquireLock(destPath, url, {\n lockTimeout,\n locksDir,\n pollInterval,\n staleTimeout,\n })\n\n try {\n // Check again if file was created while we were waiting for lock\n if (existsSync(destPath)) {\n const statResult = await stat(destPath).catch(() => null)\n if (statResult && statResult.size > 0) {\n return {\n path: destPath,\n size: statResult.size,\n }\n }\n }\n\n // Perform download\n const result = await httpDownload(url, destPath, downloadOptions)\n\n return result\n } finally {\n // Always release lock\n await releaseLock(lockPath)\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["lockInfo"]
7
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Socket pulse animation frames generator.
3
+ * Generates themeable pulsing animation frames using sparkles (✧ ✦) and lightning (⚡).
4
+ * Follows the cli-spinners format: https://github.com/sindresorhus/cli-spinners
5
+ */
6
+ export type SocketFramesOptions = {
7
+ readonly baseColor?: readonly [number, number, number] | undefined;
8
+ readonly interval?: number | undefined;
9
+ };
10
+ /**
11
+ * Generate Socket pulse animation frames.
12
+ * Creates a pulsing throbber using Unicode sparkles and lightning symbols.
13
+ * Frames use brightness modifiers (bold/dim) but no embedded colors.
14
+ * Yocto-spinner applies the current spinner color to each frame.
15
+ *
16
+ * Returns a spinner definition compatible with cli-spinners format.
17
+ *
18
+ * @see https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json
19
+ */
20
+ export declare function generateSocketSpinnerFrames(options?: SocketFramesOptions | undefined): {
21
+ frames: string[];
22
+ interval: number;
23
+ };
@@ -0,0 +1,66 @@
1
+ /* Socket Lib - Built with esbuild */
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var pulse_frames_exports = {};
20
+ __export(pulse_frames_exports, {
21
+ generateSocketSpinnerFrames: () => generateSocketSpinnerFrames
22
+ });
23
+ module.exports = __toCommonJS(pulse_frames_exports);
24
+ function generateSocketSpinnerFrames(options) {
25
+ const opts = { __proto__: null, ...options };
26
+ const interval = opts.interval ?? 50;
27
+ const bold = "\x1B[1m";
28
+ const dim = "\x1B[2m";
29
+ const reset = "\x1B[0m";
30
+ const lightning = "\u26A1\uFE0E";
31
+ const starFilled = "\u2726\uFE0E";
32
+ const starOutline = "\u2727\uFE0E";
33
+ const starTiny = "\u22C6\uFE0E";
34
+ const frames = [
35
+ // Build up from dim to bright
36
+ `${dim}${starOutline}${reset}`,
37
+ `${dim}${starOutline}${reset}`,
38
+ `${dim}${starTiny}${reset}`,
39
+ `${starFilled}${reset}`,
40
+ `${starFilled}${reset}`,
41
+ `${bold}${starFilled}${reset}`,
42
+ `${bold}${starFilled}${reset}`,
43
+ `${bold}${lightning}${reset}`,
44
+ `${bold}${lightning}${reset}`,
45
+ `${bold}${lightning}${reset}`,
46
+ // Fade down
47
+ `${bold}${lightning}${reset}`,
48
+ `${bold}${lightning}${reset}`,
49
+ `${bold}${starFilled}${reset}`,
50
+ `${bold}${starFilled}${reset}`,
51
+ `${starFilled}${reset}`,
52
+ `${starFilled}${reset}`,
53
+ `${dim}${starTiny}${reset}`,
54
+ `${dim}${starOutline}${reset}`
55
+ ];
56
+ return {
57
+ __proto__: null,
58
+ frames,
59
+ interval
60
+ };
61
+ }
62
+ // Annotate the CommonJS export names for ESM import in node:
63
+ 0 && (module.exports = {
64
+ generateSocketSpinnerFrames
65
+ });
66
+ //# sourceMappingURL=pulse-frames.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/effects/pulse-frames.ts"],
4
+ "sourcesContent": ["/**\n * @fileoverview Socket pulse animation frames generator.\n * Generates themeable pulsing animation frames using sparkles (\u2727 \u2726) and lightning (\u26A1).\n * Follows the cli-spinners format: https://github.com/sindresorhus/cli-spinners\n */\n\nexport type SocketFramesOptions = {\n readonly baseColor?: readonly [number, number, number] | undefined\n readonly interval?: number | undefined\n}\n\n/**\n * Generate Socket pulse animation frames.\n * Creates a pulsing throbber using Unicode sparkles and lightning symbols.\n * Frames use brightness modifiers (bold/dim) but no embedded colors.\n * Yocto-spinner applies the current spinner color to each frame.\n *\n * Returns a spinner definition compatible with cli-spinners format.\n *\n * @see https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json\n */\nexport function generateSocketSpinnerFrames(\n options?: SocketFramesOptions | undefined,\n): {\n frames: string[]\n interval: number\n} {\n const opts = { __proto__: null, ...options } as SocketFramesOptions\n const interval = opts.interval ?? 50\n\n // ANSI codes for brightness modifiers only (no colors).\n // Yocto-spinner will apply the spinner's current color to each frame.\n const bold = '\\x1b[1m'\n const dim = '\\x1b[2m'\n const reset = '\\x1b[0m'\n\n // Using VS15 (\\uFE0E) to force text-style rendering.\n // Lightning bolt (\u26A1) is wider than stars. To keep consistent spacing:\n // - All frames have NO internal padding\n // - Yocto-spinner adds 1 space after each frame\n // - Success/fail symbols also get 1 space (consistent)\n const lightning = '\u26A1\\uFE0E'\n const starFilled = '\u2726\\uFE0E'\n const starOutline = '\u2727\\uFE0E'\n const starTiny = '\u22C6\\uFE0E'\n\n // Pulse frames with brightness modifiers only.\n // Each frame gets colored by yocto-spinner based on current spinner.color.\n // Yocto-spinner adds 1 space after the frame automatically.\n const frames = [\n // Build up from dim to bright\n `${dim}${starOutline}${reset}`,\n `${dim}${starOutline}${reset}`,\n `${dim}${starTiny}${reset}`,\n `${starFilled}${reset}`,\n `${starFilled}${reset}`,\n `${bold}${starFilled}${reset}`,\n `${bold}${starFilled}${reset}`,\n `${bold}${lightning}${reset}`,\n `${bold}${lightning}${reset}`,\n `${bold}${lightning}${reset}`,\n // Fade down\n `${bold}${lightning}${reset}`,\n `${bold}${lightning}${reset}`,\n `${bold}${starFilled}${reset}`,\n `${bold}${starFilled}${reset}`,\n `${starFilled}${reset}`,\n `${starFilled}${reset}`,\n `${dim}${starTiny}${reset}`,\n `${dim}${starOutline}${reset}`,\n ]\n\n return {\n __proto__: null,\n frames,\n interval,\n } as { frames: string[]; interval: number }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBO,SAAS,4BACd,SAIA;AACA,QAAM,OAAO,EAAE,WAAW,MAAM,GAAG,QAAQ;AAC3C,QAAM,WAAW,KAAK,YAAY;AAIlC,QAAM,OAAO;AACb,QAAM,MAAM;AACZ,QAAM,QAAQ;AAOd,QAAM,YAAY;AAClB,QAAM,aAAa;AACnB,QAAM,cAAc;AACpB,QAAM,WAAW;AAKjB,QAAM,SAAS;AAAA;AAAA,IAEb,GAAG,GAAG,GAAG,WAAW,GAAG,KAAK;AAAA,IAC5B,GAAG,GAAG,GAAG,WAAW,GAAG,KAAK;AAAA,IAC5B,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK;AAAA,IACzB,GAAG,UAAU,GAAG,KAAK;AAAA,IACrB,GAAG,UAAU,GAAG,KAAK;AAAA,IACrB,GAAG,IAAI,GAAG,UAAU,GAAG,KAAK;AAAA,IAC5B,GAAG,IAAI,GAAG,UAAU,GAAG,KAAK;AAAA,IAC5B,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK;AAAA,IAC3B,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK;AAAA,IAC3B,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK;AAAA;AAAA,IAE3B,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK;AAAA,IAC3B,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK;AAAA,IAC3B,GAAG,IAAI,GAAG,UAAU,GAAG,KAAK;AAAA,IAC5B,GAAG,IAAI,GAAG,UAAU,GAAG,KAAK;AAAA,IAC5B,GAAG,UAAU,GAAG,KAAK;AAAA,IACrB,GAAG,UAAU,GAAG,KAAK;AAAA,IACrB,GAAG,GAAG,GAAG,QAAQ,GAAG,KAAK;AAAA,IACzB,GAAG,GAAG,GAAG,WAAW,GAAG,KAAK;AAAA,EAC9B;AAEA,SAAO;AAAA,IACL,WAAW;AAAA,IACX;AAAA,IACA;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,37 @@
1
+ import type { ShimmerColorGradient, ShimmerColorRgb, ShimmerDirection, ShimmerState } from './types';
2
+ // Re-export types for backward compatibility.
3
+ export type { ShimmerColor, ShimmerColorGradient, ShimmerColorInherit, ShimmerColorRgb, ShimmerConfig, ShimmerDirection, ShimmerState, } from './types';
4
+ /**
5
+ * Detected text formatting styles from ANSI codes.
6
+ */
7
+ type TextStyles = {
8
+ bold: boolean;
9
+ dim: boolean;
10
+ italic: boolean;
11
+ strikethrough: boolean;
12
+ underline: boolean;
13
+ };
14
+ // Internal options for applyShimmer function.
15
+ type ShimmerOptions = {
16
+ readonly color?: ShimmerColorRgb | ShimmerColorGradient | undefined;
17
+ readonly direction?: ShimmerDirection | undefined;
18
+ readonly shimmerWidth?: number | undefined;
19
+ readonly styles?: TextStyles | undefined;
20
+ };
21
+ export declare const COLOR_INHERIT = "inherit";
22
+ export declare const DIR_LTR = "ltr";
23
+ export declare const DIR_NONE = "none";
24
+ export declare const DIR_RANDOM = "random";
25
+ export declare const DIR_RTL = "rtl";
26
+ export declare const MODE_BI = "bi";
27
+ /**
28
+ * Apply shimmer animation effect to text.
29
+ * This is the main entry point for shimmer animations. It:
30
+ * 1. Strips ANSI codes to get plain text for character positioning
31
+ * 2. Detects any styling (bold, italic, underline, etc.) to preserve
32
+ * 3. Calculates the current shimmer wave position based on animation step
33
+ * 4. Renders each character with appropriate brightness based on distance from wave
34
+ * 5. Updates the animation state for the next frame
35
+ * 6. Handles direction changes for bidirectional and random modes
36
+ */
37
+ export declare function applyShimmer(text: string, state: ShimmerState, options?: ShimmerOptions | undefined): string;
@@ -0,0 +1,175 @@
1
+ /* Socket Lib - Built with esbuild */
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var text_shimmer_exports = {};
20
+ __export(text_shimmer_exports, {
21
+ COLOR_INHERIT: () => COLOR_INHERIT,
22
+ DIR_LTR: () => DIR_LTR,
23
+ DIR_NONE: () => DIR_NONE,
24
+ DIR_RANDOM: () => DIR_RANDOM,
25
+ DIR_RTL: () => DIR_RTL,
26
+ MODE_BI: () => MODE_BI,
27
+ applyShimmer: () => applyShimmer
28
+ });
29
+ module.exports = __toCommonJS(text_shimmer_exports);
30
+ var import_ansi = require("../ansi");
31
+ var import_arrays = require("../arrays");
32
+ function detectStyles(text) {
33
+ return {
34
+ __proto__: null,
35
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.
36
+ bold: /\x1b\[1m/.test(text),
37
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.
38
+ dim: /\x1b\[2m/.test(text),
39
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.
40
+ italic: /\x1b\[3m/.test(text),
41
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.
42
+ strikethrough: /\x1b\[9m/.test(text),
43
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.
44
+ underline: /\x1b\[4m/.test(text)
45
+ };
46
+ }
47
+ function stylesToAnsi(styles) {
48
+ let codes = "";
49
+ if (styles.bold) {
50
+ codes += "\x1B[1m";
51
+ }
52
+ if (styles.dim) {
53
+ codes += "\x1B[2m";
54
+ }
55
+ if (styles.italic) {
56
+ codes += "\x1B[3m";
57
+ }
58
+ if (styles.underline) {
59
+ codes += "\x1B[4m";
60
+ }
61
+ if (styles.strikethrough) {
62
+ codes += "\x1B[9m";
63
+ }
64
+ return codes;
65
+ }
66
+ const COLOR_INHERIT = "inherit";
67
+ const DIR_LTR = "ltr";
68
+ const DIR_NONE = "none";
69
+ const DIR_RANDOM = "random";
70
+ const DIR_RTL = "rtl";
71
+ const MODE_BI = "bi";
72
+ function shimmerIntensity(distance, shimmerWidth = 2.5) {
73
+ if (distance > shimmerWidth) {
74
+ return 0;
75
+ }
76
+ const normalized = distance / shimmerWidth;
77
+ return (1 - normalized) ** 2.5;
78
+ }
79
+ function blendColors(color1, color2, factor) {
80
+ const r = Math.round(color1[0] + (color2[0] - color1[0]) * factor);
81
+ const g = Math.round(color1[1] + (color2[1] - color1[1]) * factor);
82
+ const b = Math.round(color1[2] + (color2[2] - color1[2]) * factor);
83
+ return [r, g, b];
84
+ }
85
+ function renderChar(char, index, shimmerPos, baseColor, styles) {
86
+ const distance = Math.abs(index - shimmerPos);
87
+ const intensity = shimmerIntensity(distance);
88
+ const styleCode = stylesToAnsi(styles);
89
+ const charColor = (0, import_arrays.isArray)(baseColor[0]) ? baseColor[index % baseColor.length] ?? [
90
+ 140,
91
+ 82,
92
+ 255
93
+ ] : baseColor;
94
+ if (intensity === 0) {
95
+ const base = `\x1B[38;2;${charColor[0]};${charColor[1]};${charColor[2]}m`;
96
+ return `${styleCode}${base}${char}${import_ansi.ANSI_RESET}`;
97
+ }
98
+ const white = [255, 255, 255];
99
+ const blended = blendColors(charColor, white, intensity);
100
+ const color = `\x1B[38;2;${blended[0]};${blended[1]};${blended[2]}m`;
101
+ return `${styleCode}${color}${char}${import_ansi.ANSI_RESET}`;
102
+ }
103
+ function getShimmerPos(textLength, step, currentDir, shimmerWidth = 2.5) {
104
+ const totalSteps = textLength + shimmerWidth + 2;
105
+ if (currentDir === DIR_RTL) {
106
+ return textLength - step % totalSteps;
107
+ }
108
+ return step % totalSteps;
109
+ }
110
+ function pickDirection(direction) {
111
+ if (direction === DIR_RANDOM) {
112
+ return Math.random() < 0.5 ? DIR_LTR : DIR_RTL;
113
+ }
114
+ if (direction === DIR_RTL) {
115
+ return DIR_RTL;
116
+ }
117
+ return DIR_LTR;
118
+ }
119
+ function applyShimmer(text, state, options) {
120
+ const opts = { __proto__: null, ...options };
121
+ const direction = opts.direction ?? DIR_NONE;
122
+ const shimmerWidth = opts.shimmerWidth ?? 2.5;
123
+ const color = opts.color ?? [140, 82, 255];
124
+ const styles = opts.styles ?? detectStyles(text);
125
+ const plainText = (0, import_ansi.stripAnsi)(text);
126
+ if (!plainText || direction === DIR_NONE) {
127
+ const styleCode = stylesToAnsi(styles);
128
+ const isGradient = (0, import_arrays.isArray)(color[0]);
129
+ return plainText.split("").map((char, i) => {
130
+ const charColor = isGradient ? color[i % color.length] ?? [
131
+ 140,
132
+ 82,
133
+ 255
134
+ ] : color;
135
+ const base = `\x1B[38;2;${charColor[0]};${charColor[1]};${charColor[2]}m`;
136
+ return `${styleCode}${base}${char}${import_ansi.ANSI_RESET}`;
137
+ }).join("");
138
+ }
139
+ const shimmerPos = getShimmerPos(
140
+ plainText.length,
141
+ state.step,
142
+ state.currentDir,
143
+ shimmerWidth
144
+ );
145
+ const result = plainText.split("").map((char, i) => renderChar(char, i, shimmerPos, color, styles)).join("");
146
+ state.step += state.speed;
147
+ const totalSteps = plainText.length + shimmerWidth + 2;
148
+ if (state.mode === MODE_BI) {
149
+ if (state.step >= totalSteps) {
150
+ state.step = 0;
151
+ state.currentDir = state.currentDir === DIR_LTR ? DIR_RTL : DIR_LTR;
152
+ }
153
+ } else if (state.mode === DIR_RANDOM) {
154
+ if (state.step >= totalSteps) {
155
+ state.step = 0;
156
+ state.currentDir = pickDirection(DIR_RANDOM);
157
+ }
158
+ } else {
159
+ if (state.step >= totalSteps) {
160
+ state.step = 0;
161
+ }
162
+ }
163
+ return result;
164
+ }
165
+ // Annotate the CommonJS export names for ESM import in node:
166
+ 0 && (module.exports = {
167
+ COLOR_INHERIT,
168
+ DIR_LTR,
169
+ DIR_NONE,
170
+ DIR_RANDOM,
171
+ DIR_RTL,
172
+ MODE_BI,
173
+ applyShimmer
174
+ });
175
+ //# sourceMappingURL=text-shimmer.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/effects/text-shimmer.ts"],
4
+ "sourcesContent": ["/**\n * @fileoverview Text shimmer animation utilities.\n * Provides animated highlight effects for spinner text with configurable directions:\n * - LTR (left-to-right): Shimmer wave moves from left to right\n * - RTL (right-to-left): Shimmer wave moves from right to left\n * - Bidirectional: Alternates between LTR and RTL each cycle\n * - Random: Picks a random direction each cycle\n * - None: No shimmer animation\n *\n * The shimmer effect creates a bright wave that travels across the text,\n * with characters near the wave appearing nearly white and fading to the\n * base color as they get further from the wave position.\n */\n\nimport { ANSI_RESET, stripAnsi } from '../ansi'\nimport { isArray } from '../arrays'\n\nimport type {\n ShimmerColorGradient,\n ShimmerColorRgb,\n ShimmerDirection,\n ShimmerState,\n} from './types'\n\n// Re-export types for backward compatibility.\nexport type {\n ShimmerColor,\n ShimmerColorGradient,\n ShimmerColorInherit,\n ShimmerColorRgb,\n ShimmerConfig,\n ShimmerDirection,\n ShimmerState,\n} from './types'\n\n/**\n * Detected text formatting styles from ANSI codes.\n */\ntype TextStyles = {\n bold: boolean\n dim: boolean\n italic: boolean\n strikethrough: boolean\n underline: boolean\n}\n\n/**\n * Detect all text formatting styles present in ANSI-coded text.\n * Checks for bold, dim, italic, underline, and strikethrough.\n */\nfunction detectStyles(text: string): TextStyles {\n return {\n __proto__: null,\n // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.\n bold: /\\x1b\\[1m/.test(text),\n // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.\n dim: /\\x1b\\[2m/.test(text),\n // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.\n italic: /\\x1b\\[3m/.test(text),\n // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.\n strikethrough: /\\x1b\\[9m/.test(text),\n // biome-ignore lint/suspicious/noControlCharactersInRegex: ANSI escape sequence detection.\n underline: /\\x1b\\[4m/.test(text),\n } as TextStyles\n}\n\n/**\n * Build ANSI code string from text styles.\n * Returns the concatenated ANSI codes needed to apply the styles.\n */\nfunction stylesToAnsi(styles: TextStyles): string {\n let codes = ''\n if (styles.bold) {\n codes += '\\x1b[1m'\n }\n if (styles.dim) {\n codes += '\\x1b[2m'\n }\n if (styles.italic) {\n codes += '\\x1b[3m'\n }\n if (styles.underline) {\n codes += '\\x1b[4m'\n }\n if (styles.strikethrough) {\n codes += '\\x1b[9m'\n }\n return codes\n}\n\n// Internal options for applyShimmer function.\ntype ShimmerOptions = {\n readonly color?: ShimmerColorRgb | ShimmerColorGradient | undefined\n readonly direction?: ShimmerDirection | undefined\n readonly shimmerWidth?: number | undefined\n readonly styles?: TextStyles | undefined\n}\n\nexport const COLOR_INHERIT = 'inherit'\n\nexport const DIR_LTR = 'ltr'\n\nexport const DIR_NONE = 'none'\n\nexport const DIR_RANDOM = 'random'\n\nexport const DIR_RTL = 'rtl'\n\nexport const MODE_BI = 'bi'\n\n/**\n * Calculate shimmer intensity based on distance from shimmer wave position.\n * Uses a power curve for smooth falloff - characters close to the wave\n * get high intensity (bright white), while distant characters get 0.\n */\nfunction shimmerIntensity(\n distance: number,\n shimmerWidth: number = 2.5,\n): number {\n // Characters beyond shimmer width get no effect.\n if (distance > shimmerWidth) {\n return 0\n }\n // Smooth falloff using power curve.\n const normalized = distance / shimmerWidth\n return (1 - normalized) ** 2.5\n}\n\n/**\n * Blend two RGB colors based on a blend factor (0-1).\n * factor 0 = color1, factor 1 = color2, factor 0.5 = 50/50 blend.\n */\nfunction blendColors(\n color1: readonly [number, number, number],\n color2: readonly [number, number, number],\n factor: number,\n): readonly [number, number, number] {\n const r = Math.round(color1[0] + (color2[0] - color1[0]) * factor)\n const g = Math.round(color1[1] + (color2[1] - color1[1]) * factor)\n const b = Math.round(color1[2] + (color2[2] - color1[2]) * factor)\n return [r, g, b] as const\n}\n\n/**\n * Render character with shimmer effect based on distance from shimmer position.\n * Characters closer to the shimmer position get brighter (nearly white),\n * while characters further away use the base color.\n * Creates a smooth gradient by blending base color with white based on intensity.\n * Supports both single color and per-character color gradients.\n */\nfunction renderChar(\n char: string,\n index: number,\n shimmerPos: number,\n baseColor: readonly [number, number, number] | ShimmerColorGradient,\n styles: TextStyles,\n): string {\n // Calculate how far this character is from the shimmer wave.\n const distance = Math.abs(index - shimmerPos)\n const intensity = shimmerIntensity(distance)\n\n const styleCode = stylesToAnsi(styles)\n\n // Get base color for this character (single or per-character from gradient).\n const charColor: readonly [number, number, number] = isArray(baseColor[0])\n ? ((baseColor as ShimmerColorGradient)[index % baseColor.length] ?? [\n 140, 82, 255,\n ])\n : (baseColor as readonly [number, number, number])\n\n // If no shimmer intensity, use base color as-is.\n if (intensity === 0) {\n const base = `\\x1b[38;2;${charColor[0]};${charColor[1]};${charColor[2]}m`\n return `${styleCode}${base}${char}${ANSI_RESET}`\n }\n\n // Blend base color with white based on intensity to create smooth gradient.\n // Higher intensity = more white, creating the shimmer wave effect.\n const white: readonly [number, number, number] = [255, 255, 255] as const\n const blended = blendColors(charColor, white, intensity)\n\n const color = `\\x1b[38;2;${blended[0]};${blended[1]};${blended[2]}m`\n return `${styleCode}${color}${char}${ANSI_RESET}`\n}\n\n/**\n * Calculate shimmer wave position for current animation step.\n * The shimmer wave moves across the text length, with extra space\n * for the wave to fade in/out at the edges.\n */\nfunction getShimmerPos(\n textLength: number,\n step: number,\n currentDir: 'ltr' | 'rtl',\n shimmerWidth: number = 2.5,\n): number {\n // Total steps for one complete cycle (text length + fade in/out space).\n const totalSteps = textLength + shimmerWidth + 2\n\n // RTL: Shimmer moves from right to left.\n if (currentDir === DIR_RTL) {\n return textLength - (step % totalSteps)\n }\n\n // LTR: Shimmer moves from left to right.\n return step % totalSteps\n}\n\n/**\n * Resolve shimmer direction to a concrete 'ltr' or 'rtl' value.\n * Used for initializing shimmer state and picking random directions.\n */\nfunction pickDirection(direction: ShimmerDirection): 'ltr' | 'rtl' {\n // Random mode: 50/50 chance of LTR or RTL.\n if (direction === DIR_RANDOM) {\n return Math.random() < 0.5 ? DIR_LTR : DIR_RTL\n }\n // RTL mode: Use RTL direction.\n if (direction === DIR_RTL) {\n return DIR_RTL\n }\n // LTR mode (or any other): Default to LTR.\n return DIR_LTR\n}\n\n/**\n * Apply shimmer animation effect to text.\n * This is the main entry point for shimmer animations. It:\n * 1. Strips ANSI codes to get plain text for character positioning\n * 2. Detects any styling (bold, italic, underline, etc.) to preserve\n * 3. Calculates the current shimmer wave position based on animation step\n * 4. Renders each character with appropriate brightness based on distance from wave\n * 5. Updates the animation state for the next frame\n * 6. Handles direction changes for bidirectional and random modes\n */\nexport function applyShimmer(\n text: string,\n state: ShimmerState,\n options?: ShimmerOptions | undefined,\n): string {\n const opts = { __proto__: null, ...options } as ShimmerOptions\n const direction = opts.direction ?? DIR_NONE\n const shimmerWidth = opts.shimmerWidth ?? 2.5\n // Socket purple.\n const color = opts.color ?? ([140, 82, 255] as const)\n\n // Detect text formatting styles from original text.\n const styles = opts.styles ?? detectStyles(text)\n\n // Strip ANSI codes to get plain text.\n const plainText = stripAnsi(text)\n\n // No shimmer effect.\n if (!plainText || direction === DIR_NONE) {\n const styleCode = stylesToAnsi(styles)\n\n // Support gradient colors (array of colors, one per character).\n const isGradient = isArray(color[0])\n\n return plainText\n .split('')\n .map((char, i) => {\n const charColor: readonly [number, number, number] = isGradient\n ? ((color as ShimmerColorGradient)[i % color.length] ?? [\n 140, 82, 255,\n ])\n : (color as readonly [number, number, number])\n const base = `\\x1b[38;2;${charColor[0]};${charColor[1]};${charColor[2]}m`\n return `${styleCode}${base}${char}${ANSI_RESET}`\n })\n .join('')\n }\n\n // Calculate shimmer position.\n const shimmerPos = getShimmerPos(\n plainText.length,\n state.step,\n state.currentDir,\n shimmerWidth,\n )\n\n // Render text with shimmer.\n const result = plainText\n .split('')\n .map((char, i) => renderChar(char, i, shimmerPos, color, styles))\n .join('')\n\n // Advance shimmer position by speed amount each frame.\n // Speed represents steps per frame (e.g., 0.33 = advance 0.33 steps per frame).\n // This creates smooth animation by moving in small increments every frame\n // instead of jumping larger distances every N frames.\n state.step += state.speed\n\n // Handle bidirectional direction changes.\n const totalSteps = plainText.length + shimmerWidth + 2\n if (state.mode === MODE_BI) {\n if (state.step >= totalSteps) {\n state.step = 0\n // Toggle direction every cycle.\n state.currentDir = state.currentDir === DIR_LTR ? DIR_RTL : DIR_LTR\n }\n } else if (state.mode === DIR_RANDOM) {\n // Change direction randomly at end of each cycle.\n if (state.step >= totalSteps) {\n state.step = 0\n state.currentDir = pickDirection(DIR_RANDOM)\n }\n } else {\n // Reset for continuous loops.\n if (state.step >= totalSteps) {\n state.step = 0\n }\n }\n\n return result\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @fileoverview Shared types for effects (shimmer, pulse, ultra, etc.).
3
+ * Common type definitions used across multiple effect modules.
4
+ */
5
+ export type ShimmerColorInherit = 'inherit';
6
+ export type ShimmerColorRgb = readonly [number, number, number];
7
+ export type ShimmerColor = ShimmerColorInherit | ShimmerColorRgb;
8
+ export type ShimmerColorGradient = readonly ShimmerColorRgb[];
9
+ export type ShimmerDirection = 'ltr' | 'rtl' | 'bi' | 'random' | 'none';
10
+ /**
11
+ * Shimmer animation configuration.
12
+ */
13
+ export type ShimmerConfig = {
14
+ readonly color?: ShimmerColor | ShimmerColorGradient | undefined;
15
+ readonly dir?: ShimmerDirection | undefined;
16
+ /**
17
+ * Animation speed in steps per frame.
18
+ * Lower values = slower shimmer (e.g., 0.33 = ~150ms per step).
19
+ * Higher values = faster shimmer (e.g., 1.0 = 50ms per step).
20
+ * Default: 1/3 (~0.33).
21
+ */
22
+ readonly speed?: number | undefined;
23
+ };
24
+ /**
25
+ * Internal shimmer animation state.
26
+ * Tracks current animation position and direction.
27
+ */
28
+ export type ShimmerState = {
29
+ currentDir: 'ltr' | 'rtl';
30
+ mode: ShimmerDirection;
31
+ /**
32
+ * Animation speed in steps per frame.
33
+ * The shimmer position advances by this amount every frame.
34
+ */
35
+ speed: number;
36
+ /**
37
+ * Current shimmer position.
38
+ * Can be fractional for smooth sub-character movement.
39
+ */
40
+ step: number;
41
+ };
@@ -0,0 +1,17 @@
1
+ /* Socket Lib - Built with esbuild */
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var types_exports = {};
16
+ module.exports = __toCommonJS(types_exports);
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/effects/types.ts"],
4
+ "sourcesContent": ["/**\n * @fileoverview Shared types for effects (shimmer, pulse, ultra, etc.).\n * Common type definitions used across multiple effect modules.\n */\n\nexport type ShimmerColorInherit = 'inherit'\n\nexport type ShimmerColorRgb = readonly [number, number, number]\n\nexport type ShimmerColor = ShimmerColorInherit | ShimmerColorRgb\n\nexport type ShimmerColorGradient = readonly ShimmerColorRgb[]\n\nexport type ShimmerDirection = 'ltr' | 'rtl' | 'bi' | 'random' | 'none'\n\n/**\n * Shimmer animation configuration.\n */\nexport type ShimmerConfig = {\n readonly color?: ShimmerColor | ShimmerColorGradient | undefined\n readonly dir?: ShimmerDirection | undefined\n /**\n * Animation speed in steps per frame.\n * Lower values = slower shimmer (e.g., 0.33 = ~150ms per step).\n * Higher values = faster shimmer (e.g., 1.0 = 50ms per step).\n * Default: 1/3 (~0.33).\n */\n readonly speed?: number | undefined\n}\n\n/**\n * Internal shimmer animation state.\n * Tracks current animation position and direction.\n */\nexport type ShimmerState = {\n currentDir: 'ltr' | 'rtl'\n mode: ShimmerDirection\n /**\n * Animation speed in steps per frame.\n * The shimmer position advances by this amount every frame.\n */\n speed: number\n /**\n * Current shimmer position.\n * Can be fractional for smooth sub-character movement.\n */\n step: number\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @fileoverview Ultrathink rainbow gradient effect.
3
+ * Provides rainbow gradient color generation for shimmer animations.
4
+ * "Ultrathink" is Claude's intensive thinking mode for deep analysis.
5
+ */
6
+ import type { ShimmerColorGradient } from './types';
7
+ /**
8
+ * Rainbow gradient colors used for ultrathink effect.
9
+ * This gradient cycles through the full color spectrum with smooth transitions.
10
+ */
11
+ export declare const RAINBOW_GRADIENT: ShimmerColorGradient;
12
+ /**
13
+ * Generate rainbow gradient colors for any text length.
14
+ * Colors are distributed evenly across the text by cycling through the gradient.
15
+ */
16
+ export declare function generateRainbowGradient(textLength: number): ShimmerColorGradient;