@socketsecurity/lib 1.3.2 → 1.3.3

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 (337) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/abort.js +1 -60
  3. package/dist/abort.js.map +2 -2
  4. package/dist/agent.js +1 -289
  5. package/dist/agent.js.map +2 -2
  6. package/dist/ansi.js +1 -60
  7. package/dist/ansi.js.map +2 -2
  8. package/dist/argv/flags.js +1 -282
  9. package/dist/argv/flags.js.map +2 -2
  10. package/dist/argv/parse.js +1 -171
  11. package/dist/argv/parse.js.map +2 -2
  12. package/dist/arrays.js +1 -85
  13. package/dist/arrays.js.map +2 -2
  14. package/dist/bin.js +1 -402
  15. package/dist/bin.js.map +2 -2
  16. package/dist/cacache.js +1 -137
  17. package/dist/cacache.js.map +2 -2
  18. package/dist/cache-with-ttl.js +1 -223
  19. package/dist/cache-with-ttl.js.map +2 -2
  20. package/dist/constants/agents.js +1 -126
  21. package/dist/constants/agents.js.map +2 -2
  22. package/dist/constants/core.js +2 -57
  23. package/dist/constants/core.js.map +2 -2
  24. package/dist/constants/encoding.js +1 -48
  25. package/dist/constants/encoding.js.map +2 -2
  26. package/dist/constants/github.js +1 -30
  27. package/dist/constants/github.js.map +2 -2
  28. package/dist/constants/licenses.js +1 -66
  29. package/dist/constants/licenses.js.map +2 -2
  30. package/dist/constants/node.js +1 -171
  31. package/dist/constants/node.js.map +2 -2
  32. package/dist/constants/packages.js +1 -128
  33. package/dist/constants/packages.js.map +2 -2
  34. package/dist/constants/paths.js +1 -150
  35. package/dist/constants/paths.js.map +2 -2
  36. package/dist/constants/platform.js +1 -41
  37. package/dist/constants/platform.js.map +2 -2
  38. package/dist/constants/process.js +1 -52
  39. package/dist/constants/process.js.map +2 -2
  40. package/dist/constants/socket.js +1 -81
  41. package/dist/constants/socket.js.map +2 -2
  42. package/dist/constants/testing.js +1 -36
  43. package/dist/constants/testing.js.map +2 -2
  44. package/dist/constants/time.js +1 -39
  45. package/dist/constants/time.js.map +2 -2
  46. package/dist/constants/typescript.js +1 -54
  47. package/dist/constants/typescript.js.map +2 -2
  48. package/dist/cover/code.js +1 -135
  49. package/dist/cover/code.js.map +2 -2
  50. package/dist/cover/formatters.js +11 -101
  51. package/dist/cover/formatters.js.map +2 -2
  52. package/dist/cover/type.js +1 -63
  53. package/dist/cover/type.js.map +2 -2
  54. package/dist/cover/types.js +1 -15
  55. package/dist/cover/types.js.map +2 -2
  56. package/dist/debug.js +2 -343
  57. package/dist/debug.js.map +2 -2
  58. package/dist/dlx-binary.js +1 -259
  59. package/dist/dlx-binary.js.map +2 -2
  60. package/dist/dlx-package.js +1 -149
  61. package/dist/dlx-package.js.map +2 -2
  62. package/dist/dlx.js +1 -166
  63. package/dist/dlx.js.map +2 -2
  64. package/dist/download-lock.js +1 -137
  65. package/dist/download-lock.js.map +2 -2
  66. package/dist/effects/pulse-frames.js +1 -64
  67. package/dist/effects/pulse-frames.js.map +2 -2
  68. package/dist/effects/text-shimmer.js +1 -174
  69. package/dist/effects/text-shimmer.js.map +2 -2
  70. package/dist/effects/types.js +1 -15
  71. package/dist/effects/types.js.map +2 -2
  72. package/dist/effects/ultra.js +1 -61
  73. package/dist/effects/ultra.js.map +2 -2
  74. package/dist/env/appdata.js +1 -28
  75. package/dist/env/appdata.js.map +2 -2
  76. package/dist/env/ci.js +1 -29
  77. package/dist/env/ci.js.map +2 -2
  78. package/dist/env/comspec.js +1 -28
  79. package/dist/env/comspec.js.map +2 -2
  80. package/dist/env/debug.js +1 -28
  81. package/dist/env/debug.js.map +2 -2
  82. package/dist/env/getters.js +1 -281
  83. package/dist/env/getters.js.map +2 -2
  84. package/dist/env/github-api-url.js +1 -28
  85. package/dist/env/github-api-url.js.map +2 -2
  86. package/dist/env/github-base-ref.js +1 -28
  87. package/dist/env/github-base-ref.js.map +2 -2
  88. package/dist/env/github-ref-name.js +1 -28
  89. package/dist/env/github-ref-name.js.map +2 -2
  90. package/dist/env/github-ref-type.js +1 -28
  91. package/dist/env/github-ref-type.js.map +2 -2
  92. package/dist/env/github-repository.js +1 -28
  93. package/dist/env/github-repository.js.map +2 -2
  94. package/dist/env/github-server-url.js +1 -28
  95. package/dist/env/github-server-url.js.map +2 -2
  96. package/dist/env/github-token.js +1 -28
  97. package/dist/env/github-token.js.map +2 -2
  98. package/dist/env/helpers.js +1 -47
  99. package/dist/env/helpers.js.map +2 -2
  100. package/dist/env/home.js +1 -28
  101. package/dist/env/home.js.map +2 -2
  102. package/dist/env/jest-worker-id.js +1 -28
  103. package/dist/env/jest-worker-id.js.map +2 -2
  104. package/dist/env/lang.js +1 -28
  105. package/dist/env/lang.js.map +2 -2
  106. package/dist/env/lc-all.js +1 -28
  107. package/dist/env/lc-all.js.map +2 -2
  108. package/dist/env/lc-messages.js +1 -28
  109. package/dist/env/lc-messages.js.map +2 -2
  110. package/dist/env/localappdata.js +1 -28
  111. package/dist/env/localappdata.js.map +2 -2
  112. package/dist/env/node-auth-token.js +1 -28
  113. package/dist/env/node-auth-token.js.map +2 -2
  114. package/dist/env/node-env.js +1 -28
  115. package/dist/env/node-env.js.map +2 -2
  116. package/dist/env/npm-config-registry.js +1 -28
  117. package/dist/env/npm-config-registry.js.map +2 -2
  118. package/dist/env/npm-config-user-agent.js +1 -28
  119. package/dist/env/npm-config-user-agent.js.map +2 -2
  120. package/dist/env/npm-lifecycle-event.js +1 -28
  121. package/dist/env/npm-lifecycle-event.js.map +2 -2
  122. package/dist/env/npm-registry.js +1 -28
  123. package/dist/env/npm-registry.js.map +2 -2
  124. package/dist/env/npm-token.js +1 -28
  125. package/dist/env/npm-token.js.map +2 -2
  126. package/dist/env/path.js +1 -28
  127. package/dist/env/path.js.map +2 -2
  128. package/dist/env/pre-commit.js +1 -29
  129. package/dist/env/pre-commit.js.map +2 -2
  130. package/dist/env/shell.js +1 -28
  131. package/dist/env/shell.js.map +2 -2
  132. package/dist/env/socket-accept-risks.js +1 -29
  133. package/dist/env/socket-accept-risks.js.map +2 -2
  134. package/dist/env/socket-api-base-url.js +1 -28
  135. package/dist/env/socket-api-base-url.js.map +2 -2
  136. package/dist/env/socket-api-proxy.js +1 -28
  137. package/dist/env/socket-api-proxy.js.map +2 -2
  138. package/dist/env/socket-api-timeout.js +1 -29
  139. package/dist/env/socket-api-timeout.js.map +2 -2
  140. package/dist/env/socket-api-token.js +1 -28
  141. package/dist/env/socket-api-token.js.map +2 -2
  142. package/dist/env/socket-cacache-dir.js +1 -28
  143. package/dist/env/socket-cacache-dir.js.map +2 -2
  144. package/dist/env/socket-cli-accept-risks.js +1 -31
  145. package/dist/env/socket-cli-accept-risks.js.map +2 -2
  146. package/dist/env/socket-cli-api-base-url.js +1 -28
  147. package/dist/env/socket-cli-api-base-url.js.map +2 -2
  148. package/dist/env/socket-cli-api-proxy.js +1 -28
  149. package/dist/env/socket-cli-api-proxy.js.map +2 -2
  150. package/dist/env/socket-cli-api-timeout.js +1 -29
  151. package/dist/env/socket-cli-api-timeout.js.map +2 -2
  152. package/dist/env/socket-cli-api-token.js +1 -28
  153. package/dist/env/socket-cli-api-token.js.map +2 -2
  154. package/dist/env/socket-cli-config.js +1 -28
  155. package/dist/env/socket-cli-config.js.map +2 -2
  156. package/dist/env/socket-cli-fix.js +1 -28
  157. package/dist/env/socket-cli-fix.js.map +2 -2
  158. package/dist/env/socket-cli-no-api-token.js +1 -31
  159. package/dist/env/socket-cli-no-api-token.js.map +2 -2
  160. package/dist/env/socket-cli-optimize.js +1 -29
  161. package/dist/env/socket-cli-optimize.js.map +2 -2
  162. package/dist/env/socket-cli-org-slug.js +1 -28
  163. package/dist/env/socket-cli-org-slug.js.map +2 -2
  164. package/dist/env/socket-cli-shadow-accept-risks.js +1 -31
  165. package/dist/env/socket-cli-shadow-accept-risks.js.map +2 -2
  166. package/dist/env/socket-cli-shadow-api-token.js +1 -28
  167. package/dist/env/socket-cli-shadow-api-token.js.map +2 -2
  168. package/dist/env/socket-cli-shadow-bin.js +1 -28
  169. package/dist/env/socket-cli-shadow-bin.js.map +2 -2
  170. package/dist/env/socket-cli-shadow-progress.js +1 -31
  171. package/dist/env/socket-cli-shadow-progress.js.map +2 -2
  172. package/dist/env/socket-cli-shadow-silent.js +1 -31
  173. package/dist/env/socket-cli-shadow-silent.js.map +2 -2
  174. package/dist/env/socket-cli-view-all-risks.js +1 -31
  175. package/dist/env/socket-cli-view-all-risks.js.map +2 -2
  176. package/dist/env/socket-config.js +1 -28
  177. package/dist/env/socket-config.js.map +2 -2
  178. package/dist/env/socket-debug.js +1 -28
  179. package/dist/env/socket-debug.js.map +2 -2
  180. package/dist/env/socket-home.js +1 -28
  181. package/dist/env/socket-home.js.map +2 -2
  182. package/dist/env/socket-no-api-token.js +1 -29
  183. package/dist/env/socket-no-api-token.js.map +2 -2
  184. package/dist/env/socket-npm-registry.js +1 -28
  185. package/dist/env/socket-npm-registry.js.map +2 -2
  186. package/dist/env/socket-org-slug.js +1 -28
  187. package/dist/env/socket-org-slug.js.map +2 -2
  188. package/dist/env/socket-registry-url.js +1 -28
  189. package/dist/env/socket-registry-url.js.map +2 -2
  190. package/dist/env/socket-view-all-risks.js +1 -29
  191. package/dist/env/socket-view-all-risks.js.map +2 -2
  192. package/dist/env/temp.js +1 -28
  193. package/dist/env/temp.js.map +2 -2
  194. package/dist/env/term.js +1 -28
  195. package/dist/env/term.js.map +2 -2
  196. package/dist/env/tmp.js +1 -28
  197. package/dist/env/tmp.js.map +2 -2
  198. package/dist/env/tmpdir.js +1 -28
  199. package/dist/env/tmpdir.js.map +2 -2
  200. package/dist/env/userprofile.js +1 -28
  201. package/dist/env/userprofile.js.map +2 -2
  202. package/dist/env/vitest.js +1 -29
  203. package/dist/env/vitest.js.map +2 -2
  204. package/dist/env/xdg-cache-home.js +1 -28
  205. package/dist/env/xdg-cache-home.js.map +2 -2
  206. package/dist/env/xdg-config-home.js +1 -28
  207. package/dist/env/xdg-config-home.js.map +2 -2
  208. package/dist/env/xdg-data-home.js +1 -28
  209. package/dist/env/xdg-data-home.js.map +2 -2
  210. package/dist/env.js +1 -61
  211. package/dist/env.js.map +2 -2
  212. package/dist/fs.js +3 -626
  213. package/dist/fs.js.map +2 -2
  214. package/dist/functions.js +1 -68
  215. package/dist/functions.js.map +2 -2
  216. package/dist/git.js +2 -320
  217. package/dist/git.js.map +2 -2
  218. package/dist/github.js +1 -201
  219. package/dist/github.js.map +2 -2
  220. package/dist/globs.js +1 -152
  221. package/dist/globs.js.map +2 -2
  222. package/dist/http-request.js +1 -313
  223. package/dist/http-request.js.map +2 -2
  224. package/dist/index.js +1 -62
  225. package/dist/index.js.map +2 -2
  226. package/dist/ipc.js +1 -232
  227. package/dist/ipc.js.map +2 -2
  228. package/dist/json.js +1 -73
  229. package/dist/json.js.map +2 -2
  230. package/dist/logger.js +1 -1254
  231. package/dist/logger.js.map +2 -2
  232. package/dist/maintained-node-versions.js +1 -35
  233. package/dist/maintained-node-versions.js.map +2 -2
  234. package/dist/memoization.js +1 -210
  235. package/dist/memoization.js.map +2 -2
  236. package/dist/objects.d.ts +0 -3
  237. package/dist/objects.js +1 -319
  238. package/dist/objects.js.map +3 -3
  239. package/dist/packages/editable.js +9 -356
  240. package/dist/packages/editable.js.map +2 -2
  241. package/dist/packages/exports.js +1 -162
  242. package/dist/packages/exports.js.map +2 -2
  243. package/dist/packages/isolation.js +1 -195
  244. package/dist/packages/isolation.js.map +2 -2
  245. package/dist/packages/licenses.js +1 -214
  246. package/dist/packages/licenses.js.map +2 -2
  247. package/dist/packages/manifest.js +1 -190
  248. package/dist/packages/manifest.js.map +2 -2
  249. package/dist/packages/normalize.js +1 -120
  250. package/dist/packages/normalize.js.map +2 -2
  251. package/dist/packages/operations.js +1 -304
  252. package/dist/packages/operations.js.map +2 -2
  253. package/dist/packages/paths.js +1 -53
  254. package/dist/packages/paths.js.map +2 -2
  255. package/dist/packages/provenance.js +1 -178
  256. package/dist/packages/provenance.js.map +2 -2
  257. package/dist/packages/registry.js +1 -28
  258. package/dist/packages/registry.js.map +2 -2
  259. package/dist/packages/specs.js +1 -83
  260. package/dist/packages/specs.js.map +2 -2
  261. package/dist/packages/validation.js +1 -51
  262. package/dist/packages/validation.js.map +2 -2
  263. package/dist/packages.js +1 -129
  264. package/dist/packages.js.map +2 -2
  265. package/dist/path.js +1 -448
  266. package/dist/path.js.map +2 -2
  267. package/dist/paths.js +1 -143
  268. package/dist/paths.js.map +2 -2
  269. package/dist/performance.js +15 -216
  270. package/dist/performance.js.map +2 -2
  271. package/dist/promise-queue.js +1 -109
  272. package/dist/promise-queue.js.map +2 -2
  273. package/dist/promises.js +1 -269
  274. package/dist/promises.js.map +2 -2
  275. package/dist/prompts.js +1 -58
  276. package/dist/prompts.js.map +2 -2
  277. package/dist/regexps.js +1 -30
  278. package/dist/regexps.js.map +2 -2
  279. package/dist/sea.js +1 -44
  280. package/dist/sea.js.map +2 -2
  281. package/dist/shadow.js +1 -58
  282. package/dist/shadow.js.map +2 -2
  283. package/dist/signal-exit.js +1 -248
  284. package/dist/signal-exit.js.map +2 -2
  285. package/dist/sorts.js +1 -94
  286. package/dist/sorts.js.map +2 -2
  287. package/dist/spawn.js +1 -199
  288. package/dist/spawn.js.map +2 -2
  289. package/dist/spinner.js +1 -865
  290. package/dist/spinner.js.map +2 -2
  291. package/dist/ssri.js +1 -71
  292. package/dist/ssri.js.map +2 -2
  293. package/dist/stdio/clear.js +1 -82
  294. package/dist/stdio/clear.js.map +2 -2
  295. package/dist/stdio/divider.js +3 -89
  296. package/dist/stdio/divider.js.map +2 -2
  297. package/dist/stdio/footer.js +2 -94
  298. package/dist/stdio/footer.js.map +2 -2
  299. package/dist/stdio/header.js +2 -100
  300. package/dist/stdio/header.js.map +2 -2
  301. package/dist/stdio/mask.js +5 -206
  302. package/dist/stdio/mask.js.map +2 -2
  303. package/dist/stdio/progress.js +2 -209
  304. package/dist/stdio/progress.js.map +2 -2
  305. package/dist/stdio/prompts.js +1 -88
  306. package/dist/stdio/prompts.js.map +2 -2
  307. package/dist/stdio/stderr.js +2 -89
  308. package/dist/stdio/stderr.js.map +2 -2
  309. package/dist/stdio/stdout.js +2 -103
  310. package/dist/stdio/stdout.js.map +2 -2
  311. package/dist/streams.js +1 -78
  312. package/dist/streams.js.map +2 -2
  313. package/dist/strings.js +3 -251
  314. package/dist/strings.js.map +2 -2
  315. package/dist/suppress-warnings.js +1 -98
  316. package/dist/suppress-warnings.js.map +2 -2
  317. package/dist/tables.js +3 -128
  318. package/dist/tables.js.map +2 -2
  319. package/dist/temporary-executor.js +1 -53
  320. package/dist/temporary-executor.js.map +2 -2
  321. package/dist/types.js +1 -72
  322. package/dist/types.js.map +2 -2
  323. package/dist/url.js +1 -142
  324. package/dist/url.js.map +2 -2
  325. package/dist/utils/get-ipc.js +1 -58
  326. package/dist/utils/get-ipc.js.map +2 -2
  327. package/dist/validation/json-parser.js +1 -127
  328. package/dist/validation/json-parser.js.map +2 -2
  329. package/dist/validation/types.js +1 -15
  330. package/dist/validation/types.js.map +2 -2
  331. package/dist/versions.js +1 -153
  332. package/dist/versions.js.map +2 -2
  333. package/dist/words.js +1 -50
  334. package/dist/words.js.map +2 -2
  335. package/dist/zod.js +1 -27
  336. package/dist/zod.js.map +2 -2
  337. package/package.json +1 -1
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/logger.ts"],
4
4
  "sourcesContent": ["/**\n * @fileoverview Console logging utilities with line prefix support.\n * Provides enhanced console methods with formatted output capabilities.\n */\n\nimport isUnicodeSupported from './external/@socketregistry/is-unicode-supported'\nimport yoctocolorsCjs from './external/yoctocolors-cjs'\nimport { objectAssign, objectFreeze } from './objects'\nimport { applyLinePrefix, isBlankString } from './strings'\n\n/**\n * Log symbols for terminal output with colored indicators.\n *\n * Each symbol provides visual feedback for different message types, with\n * Unicode and ASCII fallback support.\n *\n * @example\n * ```typescript\n * import { LOG_SYMBOLS } from '@socketsecurity/lib'\n *\n * console.log(`${LOG_SYMBOLS.success} Operation completed`)\n * console.log(`${LOG_SYMBOLS.fail} Operation failed`)\n * console.log(`${LOG_SYMBOLS.warn} Warning message`)\n * console.log(`${LOG_SYMBOLS.info} Information message`)\n * ```\n */\ntype LogSymbols = {\n /** Red colored failure symbol (\u2716 or \u00D7 in ASCII) */\n fail: string\n /** Blue colored information symbol (\u2139 or i in ASCII) */\n info: string\n /** Green colored success symbol (\u2714 or \u221A in ASCII) */\n success: string\n /** Yellow colored warning symbol (\u26A0 or \u203C in ASCII) */\n warn: string\n}\n\n/**\n * Type definition for logger methods that mirror console methods.\n *\n * All methods return the logger instance for method chaining.\n */\ntype LoggerMethods = {\n [K in keyof typeof console]: (typeof console)[K] extends (\n ...args: infer A\n ) => any\n ? (...args: A) => Logger\n : (typeof console)[K]\n}\n\n/**\n * A task that can be executed with automatic start/complete logging.\n *\n * @example\n * ```typescript\n * const task = logger.createTask('Database migration')\n * task.run(() => {\n * // Migration logic here\n * })\n * // Logs: \"Starting task: Database migration\"\n * // Logs: \"Completed task: Database migration\"\n * ```\n */\ninterface Task {\n /**\n * Executes the task function with automatic logging.\n *\n * @template T - The return type of the task function\n * @param f - The function to execute\n * @returns The result of the task function\n */\n run<T>(f: () => T): T\n}\n\nexport type { LogSymbols, LoggerMethods, Task }\n\nconst globalConsole = console\n// IMPORTANT: Do not use destructuring here - use direct assignment instead.\n// tsgo has a bug that incorrectly transpiles destructured exports, resulting in\n// `exports.SomeName = void 0;` which causes runtime errors.\n// See: https://github.com/SocketDev/socket-packageurl-js/issues/3\nconst ReflectApply = Reflect.apply\nconst ReflectConstruct = Reflect.construct\n\nlet _Console: typeof import('console').Console | undefined\n/**\n * Construct a new Console instance.\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction constructConsole(...args: unknown[]) {\n if (_Console === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n const nodeConsole = /*@__PURE__*/ require('node:console')\n _Console = nodeConsole.Console\n }\n return ReflectConstruct(\n _Console! as new (\n ...args: unknown[]\n ) => Console, // eslint-disable-line no-undef\n args,\n )\n}\n\n/**\n * Get the yoctocolors module for terminal colors.\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getYoctocolors() {\n return yoctocolorsCjs\n}\n\n/**\n * Log symbols for terminal output with colored indicators.\n *\n * Provides colored Unicode symbols (\u2714, \u2716, \u26A0, \u2139) with ASCII fallbacks (\u221A, \u00D7, \u203C, i)\n * for terminals that don't support Unicode. Symbols are color-coded: green for\n * success, red for failure, yellow for warnings, blue for info.\n *\n * The symbols are lazily initialized on first access and then frozen for immutability.\n *\n * @example\n * ```typescript\n * import { LOG_SYMBOLS } from '@socketsecurity/lib'\n *\n * console.log(`${LOG_SYMBOLS.success} Build completed`) // Green \u2714\n * console.log(`${LOG_SYMBOLS.fail} Build failed`) // Red \u2716\n * console.log(`${LOG_SYMBOLS.warn} Deprecated API used`) // Yellow \u26A0\n * console.log(`${LOG_SYMBOLS.info} Starting process`) // Blue \u2139\n * ```\n */\nexport const LOG_SYMBOLS = /*@__PURE__*/ (() => {\n const target: Record<string, string> = {\n __proto__: null,\n } as unknown as Record<string, string>\n // Mutable handler to simulate a frozen target.\n const handler: ProxyHandler<Record<string, string>> = {\n __proto__: null,\n } as unknown as ProxyHandler<Record<string, string>>\n const init = () => {\n const supported = isUnicodeSupported()\n const colors = getYoctocolors()\n objectAssign(target, {\n fail: colors.red(supported ? '\u2716' : '\u00D7'),\n info: colors.blue(supported ? '\u2139' : 'i'),\n success: colors.green(supported ? '\u2714' : '\u221A'),\n warn: colors.yellow(supported ? '\u26A0' : '\u203C'),\n })\n objectFreeze(target)\n // The handler of a Proxy is mutable after proxy instantiation.\n // We delete the traps to defer to native behavior.\n for (const trapName in handler) {\n delete handler[trapName as keyof ProxyHandler<Record<string, string>>]\n }\n }\n for (const trapName of Reflect.ownKeys(Reflect)) {\n const fn = (Reflect as Record<PropertyKey, unknown>)[trapName]\n if (typeof fn === 'function') {\n ;(handler as Record<string, (...args: unknown[]) => unknown>)[\n trapName as string\n ] = (...args: unknown[]) => {\n init()\n return fn(...args)\n }\n }\n }\n return new Proxy(target, handler)\n})()\n\nconst boundConsoleEntries = [\n // Add bound properties from console[kBindProperties](ignoreErrors, colorMode, groupIndentation).\n // https://github.com/nodejs/node/blob/v24.0.1/lib/internal/console/constructor.js#L230-L265\n '_stderrErrorHandler',\n '_stdoutErrorHandler',\n // Add methods that need to be bound to function properly.\n 'assert',\n 'clear',\n 'count',\n 'countReset',\n 'createTask',\n 'debug',\n 'dir',\n 'dirxml',\n 'error',\n // Skip group methods because in at least Node 20 with the Node --frozen-intrinsics\n // flag it triggers a readonly property for Symbol(kGroupIndent). Instead, we\n // implement these methods ourselves.\n //'group',\n //'groupCollapsed',\n //'groupEnd',\n 'info',\n 'log',\n 'table',\n 'time',\n 'timeEnd',\n 'timeLog',\n 'trace',\n 'warn',\n]\n .filter(n => typeof (globalConsole as any)[n] === 'function')\n .map(n => [n, (globalConsole as any)[n].bind(globalConsole)])\n\nconst consolePropAttributes = {\n __proto__: null,\n writable: true,\n enumerable: false,\n configurable: true,\n}\nconst maxIndentation = 1000\nconst privateConsole = new WeakMap()\n\nconst consoleSymbols = Object.getOwnPropertySymbols(globalConsole)\n\n/**\n * Symbol for incrementing the internal log call counter.\n *\n * This is an internal symbol used to track the number of times logging\n * methods have been called on a logger instance.\n */\nexport const incLogCallCountSymbol = Symbol.for('logger.logCallCount++')\n\nconst kGroupIndentationWidthSymbol =\n consoleSymbols.find(s => (s as any).label === 'kGroupIndentWidth') ??\n Symbol('kGroupIndentWidth')\n\n/**\n * Symbol for tracking whether the last logged line was blank.\n *\n * This is used internally to prevent multiple consecutive blank lines\n * and to determine whether to add spacing before certain messages.\n */\nexport const lastWasBlankSymbol = Symbol.for('logger.lastWasBlank')\n\n/**\n * Enhanced console logger with indentation, colored symbols, and stream management.\n *\n * Provides a fluent API for logging with automatic indentation tracking, colored\n * status symbols, separate stderr/stdout management, and method chaining. All\n * methods return `this` for easy chaining.\n *\n * Features:\n * - Automatic line prefixing with indentation\n * - Colored status symbols (success, fail, warn, info)\n * - Separate indentation tracking for stderr and stdout\n * - Stream-bound logger instances via `.stderr` and `.stdout`\n * - Group/indentation management\n * - Progress indicators with clearable lines\n * - Task execution with automatic logging\n *\n * @example\n * ```typescript\n * import { logger } from '@socketsecurity/lib'\n *\n * // Basic logging with symbols\n * logger.success('Build completed')\n * logger.fail('Build failed')\n * logger.warn('Deprecated API')\n * logger.info('Starting process')\n *\n * // Indentation and grouping\n * logger.log('Processing files:')\n * logger.indent()\n * logger.log('file1.js')\n * logger.log('file2.js')\n * logger.dedent()\n *\n * // Method chaining\n * logger\n * .log('Step 1')\n * .indent()\n * .log('Substep 1.1')\n * .log('Substep 1.2')\n * .dedent()\n * .log('Step 2')\n *\n * // Stream-specific logging\n * logger.stdout.log('Normal output')\n * logger.stderr.error('Error message')\n *\n * // Progress indicators\n * logger.progress('Processing...')\n * // ... do work ...\n * logger.clearLine()\n * logger.success('Done')\n *\n * // Task execution\n * const task = logger.createTask('Migration')\n * task.run(() => {\n * // Migration logic\n * })\n * ```\n */\n/*@__PURE__*/\nexport class Logger {\n /**\n * Static reference to log symbols for convenience.\n *\n * @example\n * ```typescript\n * console.log(`${Logger.LOG_SYMBOLS.success} Done`)\n * ```\n */\n static LOG_SYMBOLS = LOG_SYMBOLS\n\n #parent?: Logger\n #boundStream?: 'stderr' | 'stdout'\n #stderrLogger?: Logger\n #stdoutLogger?: Logger\n #stderrIndention = ''\n #stdoutIndention = ''\n #lastWasBlank = false\n #logCallCount = 0\n #constructorArgs: unknown[]\n #options: Record<string, unknown>\n\n /**\n * Creates a new Logger instance.\n *\n * When called without arguments, creates a logger using the default\n * `process.stdout` and `process.stderr` streams. Can accept custom\n * console constructor arguments for advanced use cases.\n *\n * @param args - Optional console constructor arguments\n *\n * @example\n * ```typescript\n * // Default logger\n * const logger = new Logger()\n *\n * // Custom streams (advanced)\n * const customLogger = new Logger({\n * stdout: customWritableStream,\n * stderr: customErrorStream\n * })\n * ```\n */\n constructor(...args: unknown[]) {\n // Store constructor args for child loggers\n this.#constructorArgs = args\n\n // Store options if provided (for future extensibility)\n const options = args['0']\n if (typeof options === 'object' && options !== null) {\n this.#options = { __proto__: null, ...options }\n } else {\n this.#options = { __proto__: null }\n }\n\n if (args.length) {\n privateConsole.set(this, constructConsole(...args))\n } else {\n // Create a new console that acts like the builtin one so that it will\n // work with Node's --frozen-intrinsics flag.\n const con = constructConsole({\n stdout: process.stdout,\n stderr: process.stderr,\n }) as typeof console & Record<string, unknown>\n for (const { 0: key, 1: method } of boundConsoleEntries) {\n con[key] = method\n }\n privateConsole.set(this, con)\n }\n }\n\n /**\n * Gets a logger instance bound exclusively to stderr.\n *\n * All logging operations on this instance will write to stderr only.\n * Indentation is tracked separately from stdout. The instance is\n * cached and reused on subsequent accesses.\n *\n * @returns A logger instance bound to stderr\n *\n * @example\n * ```typescript\n * // Write errors to stderr\n * logger.stderr.error('Configuration invalid')\n * logger.stderr.warn('Using fallback settings')\n *\n * // Indent only affects stderr\n * logger.stderr.indent()\n * logger.stderr.error('Nested error details')\n * logger.stderr.dedent()\n * ```\n */\n get stderr(): Logger {\n if (!this.#stderrLogger) {\n // Pass parent's constructor args to maintain config\n const instance = new Logger(...this.#constructorArgs)\n instance.#parent = this\n instance.#boundStream = 'stderr'\n instance.#options = { __proto__: null, ...this.#options }\n this.#stderrLogger = instance\n }\n return this.#stderrLogger\n }\n\n /**\n * Gets a logger instance bound exclusively to stdout.\n *\n * All logging operations on this instance will write to stdout only.\n * Indentation is tracked separately from stderr. The instance is\n * cached and reused on subsequent accesses.\n *\n * @returns A logger instance bound to stdout\n *\n * @example\n * ```typescript\n * // Write normal output to stdout\n * logger.stdout.log('Processing started')\n * logger.stdout.log('Items processed: 42')\n *\n * // Indent only affects stdout\n * logger.stdout.indent()\n * logger.stdout.log('Detailed output')\n * logger.stdout.dedent()\n * ```\n */\n get stdout(): Logger {\n if (!this.#stdoutLogger) {\n // Pass parent's constructor args to maintain config\n const instance = new Logger(...this.#constructorArgs)\n instance.#parent = this\n instance.#boundStream = 'stdout'\n instance.#options = { __proto__: null, ...this.#options }\n this.#stdoutLogger = instance\n }\n return this.#stdoutLogger\n }\n\n /**\n * Get the root logger (for accessing shared indentation state).\n * @private\n */\n #getRoot(): Logger {\n return this.#parent || this\n }\n\n /**\n * Get indentation for a specific stream.\n * @private\n */\n #getIndent(stream: 'stderr' | 'stdout'): string {\n const root = this.#getRoot()\n return stream === 'stderr' ? root.#stderrIndention : root.#stdoutIndention\n }\n\n /**\n * Set indentation for a specific stream.\n * @private\n */\n #setIndent(stream: 'stderr' | 'stdout', value: string): void {\n const root = this.#getRoot()\n if (stream === 'stderr') {\n root.#stderrIndention = value\n } else {\n root.#stdoutIndention = value\n }\n }\n\n /**\n * Get the target stream for this logger instance.\n * @private\n */\n #getTargetStream(): 'stderr' | 'stdout' {\n return this.#boundStream || 'stderr'\n }\n\n /**\n * Apply a console method with indentation.\n * @private\n */\n #apply(\n methodName: string,\n args: unknown[],\n stream?: 'stderr' | 'stdout',\n ): this {\n const con = privateConsole.get(this) as typeof console &\n Record<string, unknown>\n const text = args.at(0)\n const hasText = typeof text === 'string'\n // Determine which stream this method writes to\n const targetStream = stream || (methodName === 'log' ? 'stdout' : 'stderr')\n const indent = this.#getIndent(targetStream)\n const logArgs = hasText\n ? [applyLinePrefix(text, { prefix: indent }), ...args.slice(1)]\n : args\n ReflectApply(\n con[methodName] as (...args: unknown[]) => unknown,\n con,\n logArgs,\n )\n this[lastWasBlankSymbol](hasText && isBlankString(logArgs[0]))\n ;(this as any)[incLogCallCountSymbol]()\n return this\n }\n\n /**\n * Strip log symbols from the start of text.\n * @private\n */\n #stripSymbols(text: string): string {\n // Strip both unicode and emoji forms of log symbols from the start.\n // Matches: \u2716, \u2717, \u00D7, \u2716\uFE0F, \u26A0, \u203C, \u26A0\uFE0F, \u2714, \u2713, \u221A, \u2714\uFE0F, \u2713\uFE0F, \u2139, \u2139\uFE0F\n // Also handles variation selectors (U+FE0F) and whitespace after symbol.\n // Note: We don't strip standalone 'i' to avoid breaking words like 'info'.\n return text.replace(/^[\u2716\u2717\u00D7\u26A0\u203C\u2714\u2713\u221A\u2139]\\uFE0F?\\s*/u, '')\n }\n\n /**\n * Apply a method with a symbol prefix.\n * @private\n */\n #symbolApply(symbolType: string, args: unknown[]): this {\n const con = privateConsole.get(this)\n let text = args.at(0)\n // biome-ignore lint/suspicious/noImplicitAnyLet: Flexible argument handling.\n let extras\n if (typeof text === 'string') {\n text = this.#stripSymbols(text)\n extras = args.slice(1)\n } else {\n extras = args\n text = ''\n }\n // Note: Meta status messages (info/fail/etc) always go to stderr.\n const indent = this.#getIndent('stderr')\n con.error(\n applyLinePrefix(`${LOG_SYMBOLS[symbolType]} ${text}`, {\n prefix: indent,\n }),\n ...extras,\n )\n this.#lastWasBlank = false\n ;(this as any)[incLogCallCountSymbol]()\n return this\n }\n\n /**\n * Gets the total number of log calls made on this logger instance.\n *\n * Tracks all logging method calls including `log()`, `error()`, `warn()`,\n * `success()`, `fail()`, etc. Useful for testing and monitoring logging activity.\n *\n * @returns The number of times logging methods have been called\n *\n * @example\n * ```typescript\n * logger.log('Message 1')\n * logger.error('Message 2')\n * console.log(logger.logCallCount) // 2\n * ```\n */\n get logCallCount() {\n return this.#logCallCount\n }\n\n /**\n * Increments the internal log call counter.\n *\n * This is called automatically by logging methods and should not\n * be called directly in normal usage.\n *\n * @returns The logger instance for chaining\n */\n [incLogCallCountSymbol]() {\n this.#logCallCount += 1\n return this\n }\n\n /**\n * Sets whether the last logged line was blank.\n *\n * Used internally to track blank lines and prevent duplicate spacing.\n * This is called automatically by logging methods.\n *\n * @param value - Whether the last line was blank\n * @returns The logger instance for chaining\n */\n [lastWasBlankSymbol](value: unknown): this {\n this.#lastWasBlank = !!value\n return this\n }\n\n /**\n * Logs an assertion failure message if the value is falsy.\n *\n * Works like `console.assert()` but returns the logger for chaining.\n * If the value is truthy, nothing is logged. If falsy, logs an error\n * message with an assertion failure.\n *\n * @param value - The value to test\n * @param message - Optional message and additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.assert(true, 'This will not log')\n * logger.assert(false, 'Assertion failed: value is false')\n * logger.assert(items.length > 0, 'No items found')\n * ```\n */\n assert(value: unknown, ...message: unknown[]): this {\n const con = privateConsole.get(this)\n con.assert(value, ...message)\n this[lastWasBlankSymbol](false)\n return value ? this : this[incLogCallCountSymbol]()\n }\n\n /**\n * Clears the visible terminal screen.\n *\n * Only available on the main logger instance, not on stream-bound instances\n * (`.stderr` or `.stdout`). Resets the log call count and blank line tracking\n * if the output is a TTY.\n *\n * @returns The logger instance for chaining\n * @throws {Error} If called on a stream-bound logger instance\n *\n * @example\n * ```typescript\n * logger.log('Some output')\n * logger.clearVisible() // Screen is now clear\n *\n * // Error: Can't call on stream-bound instance\n * logger.stderr.clearVisible() // throws\n * ```\n */\n clearVisible() {\n if (this.#boundStream) {\n throw new Error(\n 'clearVisible() is only available on the main logger instance, not on stream-bound instances',\n )\n }\n const con = privateConsole.get(this)\n con.clear()\n if ((con as any)._stdout.isTTY) {\n ;(this as any)[lastWasBlankSymbol](true)\n this.#logCallCount = 0\n }\n return this\n }\n\n /**\n * Increments and logs a counter for the given label.\n *\n * Each unique label maintains its own counter. Works like `console.count()`.\n *\n * @param label - Optional label for the counter\n * @default 'default'\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.count('requests') // requests: 1\n * logger.count('requests') // requests: 2\n * logger.count('errors') // errors: 1\n * logger.count() // default: 1\n * ```\n */\n count(label?: string | undefined): this {\n const con = privateConsole.get(this)\n con.count(label)\n this[lastWasBlankSymbol](false)\n return this[incLogCallCountSymbol]()\n }\n\n /**\n * Creates a task that logs start and completion messages automatically.\n *\n * Returns a task object with a `run()` method that executes the provided\n * function and logs \"Starting task: {name}\" before execution and\n * \"Completed task: {name}\" after completion.\n *\n * @param name - The name of the task\n * @returns A task object with a `run()` method\n *\n * @example\n * ```typescript\n * const task = logger.createTask('Database Migration')\n * const result = task.run(() => {\n * // Logs: \"Starting task: Database Migration\"\n * migrateDatabase()\n * return 'success'\n * // Logs: \"Completed task: Database Migration\"\n * })\n * console.log(result) // 'success'\n * ```\n */\n createTask(name: string): Task {\n return {\n run: <T>(f: () => T): T => {\n this.log(`Starting task: ${name}`)\n const result = f()\n this.log(`Completed task: ${name}`)\n return result\n },\n }\n }\n\n /**\n * Decreases the indentation level by removing spaces from the prefix.\n *\n * When called on the main logger, affects both stderr and stdout indentation.\n * When called on a stream-bound logger (`.stderr` or `.stdout`), affects\n * only that stream's indentation.\n *\n * @param spaces - Number of spaces to remove from indentation\n * @default 2\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.indent()\n * logger.log('Indented')\n * logger.dedent()\n * logger.log('Back to normal')\n *\n * // Remove custom amount\n * logger.indent(4)\n * logger.log('Four spaces')\n * logger.dedent(4)\n *\n * // Stream-specific dedent\n * logger.stdout.indent()\n * logger.stdout.log('Indented stdout')\n * logger.stdout.dedent()\n * ```\n */\n dedent(spaces = 2) {\n if (this.#boundStream) {\n // Only affect bound stream\n const current = this.#getIndent(this.#boundStream)\n this.#setIndent(this.#boundStream, current.slice(0, -spaces))\n } else {\n // Affect both streams\n const stderrCurrent = this.#getIndent('stderr')\n const stdoutCurrent = this.#getIndent('stdout')\n this.#setIndent('stderr', stderrCurrent.slice(0, -spaces))\n this.#setIndent('stdout', stdoutCurrent.slice(0, -spaces))\n }\n return this\n }\n\n /**\n * Displays an object's properties in a formatted way.\n *\n * Works like `console.dir()` with customizable options for depth,\n * colors, etc. Useful for inspecting complex objects.\n *\n * @param obj - The object to display\n * @param options - Optional formatting options (Node.js inspect options)\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * const obj = { a: 1, b: { c: 2, d: { e: 3 } } }\n * logger.dir(obj)\n * logger.dir(obj, { depth: 1 }) // Limit nesting depth\n * logger.dir(obj, { colors: true }) // Enable colors\n * ```\n */\n dir(obj: unknown, options?: unknown | undefined): this {\n const con = privateConsole.get(this)\n con.dir(obj, options)\n this[lastWasBlankSymbol](false)\n return this[incLogCallCountSymbol]()\n }\n\n /**\n * Displays data as XML/HTML in a formatted way.\n *\n * Works like `console.dirxml()`. In Node.js, behaves the same as `dir()`.\n *\n * @param data - The data to display\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.dirxml(document.body) // In browser environments\n * logger.dirxml(xmlObject) // In Node.js\n * ```\n */\n dirxml(...data: unknown[]): this {\n const con = privateConsole.get(this)\n con.dirxml(data)\n this[lastWasBlankSymbol](false)\n return this[incLogCallCountSymbol]()\n }\n\n /**\n * Logs an error message to stderr.\n *\n * Automatically applies current indentation. All arguments are formatted\n * and logged like `console.error()`.\n *\n * @param args - Message and additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.error('Build failed')\n * logger.error('Error code:', 500)\n * logger.error('Details:', { message: 'Not found' })\n * ```\n */\n error(...args: unknown[]): this {\n return this.#apply('error', args)\n }\n\n /**\n * Logs a newline to stderr only if the last line wasn't already blank.\n *\n * Prevents multiple consecutive blank lines. Useful for adding spacing\n * between sections without creating excessive whitespace.\n *\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.error('Error message')\n * logger.errorNewline() // Adds blank line\n * logger.errorNewline() // Does nothing (already blank)\n * logger.error('Next section')\n * ```\n */\n errorNewline() {\n return this.#lastWasBlank ? this : this.error('')\n }\n\n /**\n * Logs a failure message with a red colored fail symbol.\n *\n * Automatically prefixes the message with `LOG_SYMBOLS.fail` (red \u2716).\n * Always outputs to stderr. If the message starts with an existing\n * symbol, it will be stripped and replaced.\n *\n * @param args - Message and additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.fail('Build failed')\n * logger.fail('Test suite failed:', { passed: 5, failed: 3 })\n * ```\n */\n fail(...args: unknown[]): this {\n return this.#symbolApply('fail', args)\n }\n\n /**\n * Starts a new indented log group.\n *\n * If a label is provided, it's logged before increasing indentation.\n * Groups can be nested. Each group increases indentation by the\n * `kGroupIndentWidth` (default 2 spaces). Call `groupEnd()` to close.\n *\n * @param label - Optional label to display before the group\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.group('Processing files:')\n * logger.log('file1.js')\n * logger.log('file2.js')\n * logger.groupEnd()\n *\n * // Nested groups\n * logger.group('Outer')\n * logger.log('Outer content')\n * logger.group('Inner')\n * logger.log('Inner content')\n * logger.groupEnd()\n * logger.groupEnd()\n * ```\n */\n group(...label: unknown[]): this {\n const { length } = label\n if (length) {\n ReflectApply(this.log, this, label)\n }\n this.indent((this as any)[kGroupIndentationWidthSymbol])\n if (length) {\n ;(this as any)[lastWasBlankSymbol](false)\n ;(this as any)[incLogCallCountSymbol]()\n }\n return this\n }\n\n /**\n * Starts a new collapsed log group (alias for `group()`).\n *\n * In browser consoles, this creates a collapsed group. In Node.js,\n * it behaves identically to `group()`.\n *\n * @param label - Optional label to display before the group\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.groupCollapsed('Details')\n * logger.log('Hidden by default in browsers')\n * logger.groupEnd()\n * ```\n */\n // groupCollapsed is an alias of group.\n // https://nodejs.org/api/console.html#consolegroupcollapsed\n groupCollapsed(...label: unknown[]): this {\n return ReflectApply(this.group, this, label)\n }\n\n /**\n * Ends the current log group and decreases indentation.\n *\n * Must be called once for each `group()` or `groupCollapsed()` call\n * to properly close the group and restore indentation.\n *\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.group('Group 1')\n * logger.log('Content')\n * logger.groupEnd() // Closes 'Group 1'\n * ```\n */\n groupEnd() {\n this.dedent((this as any)[kGroupIndentationWidthSymbol])\n return this\n }\n\n /**\n * Increases the indentation level by adding spaces to the prefix.\n *\n * When called on the main logger, affects both stderr and stdout indentation.\n * When called on a stream-bound logger (`.stderr` or `.stdout`), affects\n * only that stream's indentation. Maximum indentation is 1000 spaces.\n *\n * @param spaces - Number of spaces to add to indentation\n * @default 2\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.log('Level 0')\n * logger.indent()\n * logger.log('Level 1')\n * logger.indent()\n * logger.log('Level 2')\n * logger.dedent()\n * logger.dedent()\n *\n * // Custom indent amount\n * logger.indent(4)\n * logger.log('Indented 4 spaces')\n * logger.dedent(4)\n *\n * // Stream-specific indent\n * logger.stdout.indent()\n * logger.stdout.log('Only stdout is indented')\n * ```\n */\n indent(spaces = 2) {\n const spacesToAdd = ' '.repeat(Math.min(spaces, maxIndentation))\n if (this.#boundStream) {\n // Only affect bound stream\n const current = this.#getIndent(this.#boundStream)\n this.#setIndent(this.#boundStream, current + spacesToAdd)\n } else {\n // Affect both streams\n const stderrCurrent = this.#getIndent('stderr')\n const stdoutCurrent = this.#getIndent('stdout')\n this.#setIndent('stderr', stderrCurrent + spacesToAdd)\n this.#setIndent('stdout', stdoutCurrent + spacesToAdd)\n }\n return this\n }\n\n /**\n * Logs an informational message with a blue colored info symbol.\n *\n * Automatically prefixes the message with `LOG_SYMBOLS.info` (blue \u2139).\n * Always outputs to stderr. If the message starts with an existing\n * symbol, it will be stripped and replaced.\n *\n * @param args - Message and additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.info('Starting build process')\n * logger.info('Configuration loaded:', config)\n * logger.info('Using cache directory:', cacheDir)\n * ```\n */\n info(...args: unknown[]): this {\n return this.#symbolApply('info', args)\n }\n\n /**\n * Logs a message to stdout.\n *\n * Automatically applies current indentation. All arguments are formatted\n * and logged like `console.log()`. This is the primary method for\n * standard output.\n *\n * @param args - Message and additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.log('Processing complete')\n * logger.log('Items processed:', 42)\n * logger.log('Results:', { success: true, count: 10 })\n *\n * // Method chaining\n * logger.log('Step 1').log('Step 2').log('Step 3')\n * ```\n */\n log(...args: unknown[]): this {\n return this.#apply('log', args)\n }\n\n /**\n * Logs a newline to stdout only if the last line wasn't already blank.\n *\n * Prevents multiple consecutive blank lines. Useful for adding spacing\n * between sections without creating excessive whitespace.\n *\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.log('Section 1')\n * logger.logNewline() // Adds blank line\n * logger.logNewline() // Does nothing (already blank)\n * logger.log('Section 2')\n * ```\n */\n logNewline() {\n return this.#lastWasBlank ? this : this.log('')\n }\n\n /**\n * Resets all indentation to zero.\n *\n * When called on the main logger, resets both stderr and stdout indentation.\n * When called on a stream-bound logger (`.stderr` or `.stdout`), resets\n * only that stream's indentation.\n *\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.indent().indent().indent()\n * logger.log('Very indented')\n * logger.resetIndent()\n * logger.log('Back to zero indentation')\n *\n * // Reset only stdout\n * logger.stdout.resetIndent()\n * ```\n */\n resetIndent() {\n if (this.#boundStream) {\n // Only reset bound stream\n this.#setIndent(this.#boundStream, '')\n } else {\n // Reset both streams\n this.#setIndent('stderr', '')\n this.#setIndent('stdout', '')\n }\n return this\n }\n\n /**\n * Logs a main step message with a blank line before it (stateless).\n *\n * Automatically adds a blank line before the message unless the last\n * line was already blank. Useful for marking major steps in a process\n * with clear visual separation.\n *\n * @param msg - The step message to log\n * @param extras - Additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.step('Building project')\n * logger.log('Compiling TypeScript...')\n * logger.step('Running tests')\n * logger.log('Running test suite...')\n * // Output:\n * // [blank line]\n * // Building project\n * // Compiling TypeScript...\n * // [blank line]\n * // Running tests\n * // Running test suite...\n * ```\n */\n step(msg: string, ...extras: unknown[]): this {\n // Add blank line before the step message.\n if (!this.#lastWasBlank) {\n // Use this.log() to properly track the blank line.\n this.log('')\n }\n // Let log() handle all tracking.\n return this.log(msg, ...extras)\n }\n\n /**\n * Logs an indented substep message (stateless).\n *\n * Adds a 2-space indent to the message without affecting the logger's\n * indentation state. Useful for showing sub-items under a main step.\n *\n * @param msg - The substep message to log\n * @param extras - Additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.log('Installing dependencies:')\n * logger.substep('Installing react')\n * logger.substep('Installing typescript')\n * logger.substep('Installing eslint')\n * // Output:\n * // Installing dependencies:\n * // Installing react\n * // Installing typescript\n * // Installing eslint\n * ```\n */\n substep(msg: string, ...extras: unknown[]): this {\n // Add 2-space indent to the message.\n const indentedMsg = ` ${msg}`\n // Let log() handle all tracking.\n return this.log(indentedMsg, ...extras)\n }\n\n /**\n * Logs a success message with a green colored success symbol.\n *\n * Automatically prefixes the message with `LOG_SYMBOLS.success` (green \u2714).\n * Always outputs to stderr. If the message starts with an existing\n * symbol, it will be stripped and replaced.\n *\n * @param args - Message and additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.success('Build completed')\n * logger.success('Tests passed:', { total: 42, passed: 42 })\n * logger.success('Deployment successful')\n * ```\n */\n success(...args: unknown[]): this {\n return this.#symbolApply('success', args)\n }\n\n /**\n * Logs a completion message with a success symbol (alias for `success()`).\n *\n * Provides semantic clarity when marking something as \"done\". Does NOT\n * automatically clear the current line - call `clearLine()` first if\n * needed after using `progress()`.\n *\n * @param args - Message and additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.done('Task completed')\n *\n * // After progress indicator\n * logger.progress('Processing...')\n * // ... do work ...\n * logger.clearLine()\n * logger.done('Processing complete')\n * ```\n */\n done(...args: unknown[]): this {\n return this.#symbolApply('success', args)\n }\n\n /**\n * Displays data in a table format.\n *\n * Works like `console.table()`. Accepts arrays of objects or\n * objects with nested objects. Optionally specify which properties\n * to include in the table.\n *\n * @param tabularData - The data to display as a table\n * @param properties - Optional array of property names to include\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * // Array of objects\n * logger.table([\n * { name: 'Alice', age: 30 },\n * { name: 'Bob', age: 25 }\n * ])\n *\n * // Specify properties to show\n * logger.table(users, ['name', 'email'])\n *\n * // Object with nested objects\n * logger.table({\n * user1: { name: 'Alice', age: 30 },\n * user2: { name: 'Bob', age: 25 }\n * })\n * ```\n */\n table(\n tabularData: unknown,\n properties?: readonly string[] | undefined,\n ): this {\n const con = privateConsole.get(this)\n con.table(tabularData, properties)\n this[lastWasBlankSymbol](false)\n return this[incLogCallCountSymbol]()\n }\n\n /**\n * Ends a timer and logs the elapsed time.\n *\n * Logs the duration since `console.time()` was called with the same\n * label. The timer is stopped and removed.\n *\n * @param label - Optional label for the timer\n * @default 'default'\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * console.time('operation')\n * // ... do work ...\n * logger.timeEnd('operation')\n * // Logs: \"operation: 123.456ms\"\n *\n * console.time()\n * // ... do work ...\n * logger.timeEnd()\n * // Logs: \"default: 123.456ms\"\n * ```\n */\n timeEnd(label?: string | undefined): this {\n const con = privateConsole.get(this)\n con.timeEnd(label)\n this[lastWasBlankSymbol](false)\n return this[incLogCallCountSymbol]()\n }\n\n /**\n * Logs the current value of a timer without stopping it.\n *\n * Logs the duration since `console.time()` was called with the same\n * label, but keeps the timer running. Can include additional data\n * to log alongside the time.\n *\n * @param label - Optional label for the timer\n * @param data - Additional data to log with the time\n * @default 'default'\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * console.time('process')\n * // ... partial work ...\n * logger.timeLog('process', 'Checkpoint 1')\n * // Logs: \"process: 123.456ms Checkpoint 1\"\n * // ... more work ...\n * logger.timeLog('process', 'Checkpoint 2')\n * // Logs: \"process: 234.567ms Checkpoint 2\"\n * console.timeEnd('process')\n * ```\n */\n timeLog(label?: string | undefined, ...data: unknown[]): this {\n const con = privateConsole.get(this)\n con.timeLog(label, ...data)\n this[lastWasBlankSymbol](false)\n return this[incLogCallCountSymbol]()\n }\n\n /**\n * Logs a stack trace to the console.\n *\n * Works like `console.trace()`. Shows the call stack leading to\n * where this method was called. Useful for debugging.\n *\n * @param message - Optional message to display with the trace\n * @param args - Additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * function debugFunction() {\n * logger.trace('Debug point reached')\n * }\n *\n * logger.trace('Trace from here')\n * logger.trace('Error context:', { userId: 123 })\n * ```\n */\n trace(message?: unknown | undefined, ...args: unknown[]): this {\n const con = privateConsole.get(this)\n con.trace(message, ...args)\n this[lastWasBlankSymbol](false)\n return this[incLogCallCountSymbol]()\n }\n\n /**\n * Logs a warning message with a yellow colored warning symbol.\n *\n * Automatically prefixes the message with `LOG_SYMBOLS.warn` (yellow \u26A0).\n * Always outputs to stderr. If the message starts with an existing\n * symbol, it will be stripped and replaced.\n *\n * @param args - Message and additional arguments to log\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.warn('Deprecated API used')\n * logger.warn('Low memory:', { available: '100MB' })\n * logger.warn('Missing optional configuration')\n * ```\n */\n warn(...args: unknown[]): this {\n return this.#symbolApply('warn', args)\n }\n\n /**\n * Writes text directly to stdout without a newline or indentation.\n *\n * Useful for progress indicators or custom formatting where you need\n * low-level control. Does not apply any indentation or formatting.\n *\n * @param text - The text to write\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.write('Processing... ')\n * // ... do work ...\n * logger.write('done\\n')\n *\n * // Build a line incrementally\n * logger.write('Step 1')\n * logger.write('... Step 2')\n * logger.write('... Step 3\\n')\n * ```\n */\n write(text: string): this {\n const con = privateConsole.get(this)\n con._stdout.write(text)\n this[lastWasBlankSymbol](false)\n return this\n }\n\n /**\n * Shows a progress indicator that can be cleared with `clearLine()`.\n *\n * Displays a simple status message with a '\u2234' prefix. Does not include\n * animation or spinner. Intended to be cleared once the operation completes.\n * The output stream (stderr or stdout) depends on whether the logger is\n * stream-bound.\n *\n * @param text - The progress message to display\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.progress('Processing files...')\n * // ... do work ...\n * logger.clearLine()\n * logger.success('Files processed')\n *\n * // Stream-specific progress\n * logger.stdout.progress('Loading...')\n * // ... do work ...\n * logger.stdout.clearLine()\n * logger.stdout.log('Done')\n * ```\n */\n progress(text: string): this {\n const con = privateConsole.get(this)\n const stream = this.#getTargetStream()\n const streamObj = stream === 'stderr' ? con._stderr : con._stdout\n streamObj.write(`\u2234 ${text}`)\n this[lastWasBlankSymbol](false)\n return this\n }\n\n /**\n * Clears the current line in the terminal.\n *\n * Moves the cursor to the beginning of the line and clears all content.\n * Works in both TTY and non-TTY environments. Useful for clearing\n * progress indicators created with `progress()`.\n *\n * The stream to clear (stderr or stdout) depends on whether the logger\n * is stream-bound.\n *\n * @returns The logger instance for chaining\n *\n * @example\n * ```typescript\n * logger.progress('Loading...')\n * // ... do work ...\n * logger.clearLine()\n * logger.success('Loaded')\n *\n * // Clear multiple progress updates\n * for (const file of files) {\n * logger.progress(`Processing ${file}`)\n * processFile(file)\n * logger.clearLine()\n * }\n * logger.success('All files processed')\n * ```\n */\n clearLine(): this {\n const con = privateConsole.get(this)\n const stream = this.#getTargetStream()\n const streamObj = stream === 'stderr' ? con._stderr : con._stdout\n if (streamObj.isTTY) {\n streamObj.cursorTo(0)\n streamObj.clearLine(0)\n } else {\n streamObj.write('\\r\\x1b[K')\n }\n return this\n }\n}\n\nObject.defineProperties(\n Logger.prototype,\n Object.fromEntries(\n (() => {\n const entries: Array<[string | symbol, PropertyDescriptor]> = [\n [\n kGroupIndentationWidthSymbol,\n {\n ...consolePropAttributes,\n value: 2,\n },\n ],\n [\n Symbol.toStringTag,\n {\n __proto__: null,\n configurable: true,\n value: 'logger',\n } as PropertyDescriptor,\n ],\n ]\n for (const { 0: key, 1: value } of Object.entries(globalConsole)) {\n if (!(Logger.prototype as any)[key] && typeof value === 'function') {\n // Dynamically name the log method without using Object.defineProperty.\n const { [key]: func } = {\n [key](...args: unknown[]) {\n const con = privateConsole.get(this)\n const result = (con as any)[key](...args)\n return result === undefined || result === con ? this : result\n },\n }\n entries.push([\n key,\n {\n ...consolePropAttributes,\n value: func,\n },\n ])\n }\n }\n return entries\n })(),\n ),\n)\n\n/**\n * Default logger instance for the application.\n *\n * A pre-configured `Logger` instance that uses the standard `process.stdout`\n * and `process.stderr` streams. This is the recommended logger to import\n * and use throughout your application.\n *\n * @example\n * ```typescript\n * import { logger } from '@socketsecurity/lib'\n *\n * logger.log('Application started')\n * logger.success('Configuration loaded')\n * logger.indent()\n * logger.log('Using port 3000')\n * logger.dedent()\n * ```\n */\nexport const logger = new Logger()\n"],
5
- "mappings": "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",
6
- "names": ["yoctocolorsCjs", "isUnicodeSupported"]
5
+ "mappings": "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",
6
+ "names": ["logger_exports", "__export", "LOG_SYMBOLS", "Logger", "incLogCallCountSymbol", "lastWasBlankSymbol", "logger", "__toCommonJS", "import_is_unicode_supported", "import_yoctocolors_cjs", "import_objects", "import_strings", "globalConsole", "ReflectApply", "ReflectConstruct", "_Console", "constructConsole", "args", "getYoctocolors", "yoctocolorsCjs", "target", "handler", "init", "supported", "isUnicodeSupported", "colors", "trapName", "fn", "boundConsoleEntries", "n", "consolePropAttributes", "maxIndentation", "privateConsole", "consoleSymbols", "kGroupIndentationWidthSymbol", "s", "#parent", "#boundStream", "#stderrLogger", "#stdoutLogger", "#stderrIndention", "#stdoutIndention", "#lastWasBlank", "#logCallCount", "#constructorArgs", "#options", "options", "con", "key", "method", "instance", "#getRoot", "#getIndent", "stream", "root", "#setIndent", "value", "#getTargetStream", "#apply", "methodName", "text", "hasText", "targetStream", "indent", "logArgs", "#stripSymbols", "#symbolApply", "symbolType", "extras", "message", "label", "name", "f", "result", "spaces", "current", "stderrCurrent", "stdoutCurrent", "obj", "data", "length", "spacesToAdd", "msg", "indentedMsg", "tabularData", "properties", "streamObj", "entries", "func"]
7
7
  }
@@ -1,37 +1,3 @@
1
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 maintained_node_versions_exports = {};
20
- __export(maintained_node_versions_exports, {
21
- default: () => maintained_node_versions_default
22
- });
23
- module.exports = __toCommonJS(maintained_node_versions_exports);
24
- const ObjectFreeze = Object.freeze;
25
- const next = "25.0.0";
26
- const current = "22.20.0";
27
- const previous = "20.19.5";
28
- const last = "18.20.8";
29
- var maintained_node_versions_default = ObjectFreeze(
30
- Object.assign([last, previous, current, next], {
31
- current,
32
- last,
33
- next,
34
- previous
35
- })
36
- );
2
+ var r=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var j=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},p=(e,t,n,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of l(t))!b.call(e,s)&&s!==n&&r(e,s,{get:()=>t[s],enumerable:!(c=u(t,s))||c.enumerable});return e};var x=e=>p(r({},"__esModule",{value:!0}),e);var f={};j(f,{default:()=>d});module.exports=x(f);const O=Object.freeze,o="25.0.0",i="22.20.0",a="20.19.5",g="18.20.8";var d=O(Object.assign([g,a,i,o],{current:i,last:g,next:o,previous:a}));
37
3
  //# sourceMappingURL=maintained-node-versions.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/maintained-node-versions.ts"],
4
4
  "sourcesContent": ["/**\n * @fileoverview Maintained Node.js versions without external dependencies.\n */\n\n// IMPORTANT: Do not use destructuring here - use direct assignment instead.\n// tsgo has a bug that incorrectly transpiles destructured exports, resulting in\n// `exports.SomeName = void 0;` which causes runtime errors.\n// See: https://github.com/SocketDev/socket-packageurl-js/issues/3\nconst ObjectFreeze = Object.freeze\n\n// Manually maintained Node.js version list.\n// https://nodejs.org/en/about/previous-releases#looking-for-latest-release-of-a-version-branch\n//\n// Updated October 16th, 2025.\n// - v25: 25.0.0 (Current)\n// - v24: 24.10.0 (Current)\n// - v22: 22.20.0 (Active LTS)\n// - v20: 20.19.5 (Maintenance LTS)\n// - v18: 18.20.8 (End-of-life)\nconst next = '25.0.0'\nconst current = '22.20.0'\nconst previous = '20.19.5'\nconst last = '18.20.8'\n\nexport default ObjectFreeze(\n Object.assign([last, previous, current, next], {\n current,\n last,\n next,\n previous,\n }),\n) as readonly string[] & {\n current: string\n last: string\n next: string\n previous: string\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,MAAM,eAAe,OAAO;AAW5B,MAAM,OAAO;AACb,MAAM,UAAU;AAChB,MAAM,WAAW;AACjB,MAAM,OAAO;AAEb,IAAO,mCAAQ;AAAA,EACb,OAAO,OAAO,CAAC,MAAM,UAAU,SAAS,IAAI,GAAG;AAAA,IAC7C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;",
6
- "names": []
5
+ "mappings": ";4ZAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,IAAA,eAAAC,EAAAH,GAQA,MAAMI,EAAe,OAAO,OAWtBC,EAAO,SACPC,EAAU,UACVC,EAAW,UACXC,EAAO,UAEb,IAAON,EAAQE,EACb,OAAO,OAAO,CAACI,EAAMD,EAAUD,EAASD,CAAI,EAAG,CAC7C,QAAAC,EACA,KAAAE,EACA,KAAAH,EACA,SAAAE,CACF,CAAC,CACH",
6
+ "names": ["maintained_node_versions_exports", "__export", "maintained_node_versions_default", "__toCommonJS", "ObjectFreeze", "next", "current", "previous", "last"]
7
7
  }
@@ -1,212 +1,3 @@
1
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 memoization_exports = {};
20
- __export(memoization_exports, {
21
- Memoize: () => Memoize,
22
- clearAllMemoizationCaches: () => clearAllMemoizationCaches,
23
- memoize: () => memoize,
24
- memoizeAsync: () => memoizeAsync,
25
- memoizeDebounced: () => memoizeDebounced,
26
- memoizeWeak: () => memoizeWeak,
27
- once: () => once
28
- });
29
- module.exports = __toCommonJS(memoization_exports);
30
- var import_debug = require("./debug");
31
- function memoize(fn, options = {}) {
32
- const {
33
- keyGen = (...args) => JSON.stringify(args),
34
- maxSize = Number.POSITIVE_INFINITY,
35
- name = fn.name || "anonymous",
36
- ttl = Number.POSITIVE_INFINITY
37
- } = options;
38
- const cache = /* @__PURE__ */ new Map();
39
- const accessOrder = [];
40
- function evictLRU() {
41
- if (cache.size >= maxSize && accessOrder.length > 0) {
42
- const oldest = accessOrder.shift();
43
- if (oldest) {
44
- cache.delete(oldest);
45
- (0, import_debug.debugLog)(`[memoize:${name}] clear`, {
46
- key: oldest,
47
- reason: "LRU"
48
- });
49
- }
50
- }
51
- }
52
- function isExpired(entry) {
53
- if (ttl === Number.POSITIVE_INFINITY) {
54
- return false;
55
- }
56
- return Date.now() - entry.timestamp > ttl;
57
- }
58
- return function memoized(...args) {
59
- const key = keyGen(...args);
60
- const cached = cache.get(key);
61
- if (cached && !isExpired(cached)) {
62
- cached.hits++;
63
- const index = accessOrder.indexOf(key);
64
- if (index !== -1) {
65
- accessOrder.splice(index, 1);
66
- }
67
- accessOrder.push(key);
68
- (0, import_debug.debugLog)(`[memoize:${name}] hit`, { key, hits: cached.hits });
69
- return cached.value;
70
- }
71
- (0, import_debug.debugLog)(`[memoize:${name}] miss`, { key });
72
- const value = fn(...args);
73
- evictLRU();
74
- cache.set(key, {
75
- value,
76
- timestamp: Date.now(),
77
- hits: 0
78
- });
79
- accessOrder.push(key);
80
- (0, import_debug.debugLog)(`[memoize:${name}] set`, { key, cacheSize: cache.size });
81
- return value;
82
- };
83
- }
84
- function memoizeAsync(fn, options = {}) {
85
- const {
86
- keyGen = (...args) => JSON.stringify(args),
87
- maxSize = Number.POSITIVE_INFINITY,
88
- name = fn.name || "anonymous",
89
- ttl = Number.POSITIVE_INFINITY
90
- } = options;
91
- const cache = /* @__PURE__ */ new Map();
92
- const accessOrder = [];
93
- function evictLRU() {
94
- if (cache.size >= maxSize && accessOrder.length > 0) {
95
- const oldest = accessOrder.shift();
96
- if (oldest) {
97
- cache.delete(oldest);
98
- (0, import_debug.debugLog)(`[memoizeAsync:${name}] clear`, {
99
- key: oldest,
100
- reason: "LRU"
101
- });
102
- }
103
- }
104
- }
105
- function isExpired(entry) {
106
- if (ttl === Number.POSITIVE_INFINITY) {
107
- return false;
108
- }
109
- return Date.now() - entry.timestamp > ttl;
110
- }
111
- return async function memoized(...args) {
112
- const key = keyGen(...args);
113
- const cached = cache.get(key);
114
- if (cached && !isExpired(cached)) {
115
- cached.hits++;
116
- const index = accessOrder.indexOf(key);
117
- if (index !== -1) {
118
- accessOrder.splice(index, 1);
119
- }
120
- accessOrder.push(key);
121
- (0, import_debug.debugLog)(`[memoizeAsync:${name}] hit`, { key, hits: cached.hits });
122
- return await cached.value;
123
- }
124
- (0, import_debug.debugLog)(`[memoizeAsync:${name}] miss`, { key });
125
- const promise = fn(...args);
126
- evictLRU();
127
- cache.set(key, {
128
- value: promise,
129
- timestamp: Date.now(),
130
- hits: 0
131
- });
132
- accessOrder.push(key);
133
- (0, import_debug.debugLog)(`[memoizeAsync:${name}] set`, { key, cacheSize: cache.size });
134
- try {
135
- const result = await promise;
136
- return result;
137
- } catch (e) {
138
- cache.delete(key);
139
- const orderIndex = accessOrder.indexOf(key);
140
- if (orderIndex !== -1) {
141
- accessOrder.splice(orderIndex, 1);
142
- }
143
- (0, import_debug.debugLog)(`[memoizeAsync:${name}] clear`, { key, reason: "error" });
144
- throw e;
145
- }
146
- };
147
- }
148
- function Memoize(options = {}) {
149
- return (_target, propertyKey, descriptor) => {
150
- const originalMethod = descriptor.value;
151
- descriptor.value = memoize(originalMethod, {
152
- ...options,
153
- name: options.name || propertyKey
154
- });
155
- return descriptor;
156
- };
157
- }
158
- function clearAllMemoizationCaches() {
159
- (0, import_debug.debugLog)("[memoize:all] clear", { action: "clear-all-caches" });
160
- }
161
- function memoizeWeak(fn) {
162
- const cache = /* @__PURE__ */ new WeakMap();
163
- return function memoized(key) {
164
- const cached = cache.get(key);
165
- if (cached !== void 0) {
166
- (0, import_debug.debugLog)(`[memoizeWeak:${fn.name}] hit`);
167
- return cached;
168
- }
169
- (0, import_debug.debugLog)(`[memoizeWeak:${fn.name}] miss`);
170
- const result = fn(key);
171
- cache.set(key, result);
172
- return result;
173
- };
174
- }
175
- function once(fn) {
176
- let called = false;
177
- let result;
178
- return function memoized() {
179
- if (!called) {
180
- result = fn();
181
- called = true;
182
- (0, import_debug.debugLog)(`[once:${fn.name}] set`);
183
- } else {
184
- (0, import_debug.debugLog)(`[once:${fn.name}] hit`);
185
- }
186
- return result;
187
- };
188
- }
189
- function memoizeDebounced(fn, wait, options = {}) {
190
- const memoized = memoize(fn, options);
191
- let timeoutId;
192
- return function debounced(...args) {
193
- if (timeoutId) {
194
- clearTimeout(timeoutId);
195
- }
196
- timeoutId = setTimeout(() => {
197
- memoized(...args);
198
- }, wait);
199
- return memoized(...args);
200
- };
201
- }
202
- // Annotate the CommonJS export names for ESM import in node:
203
- 0 && (module.exports = {
204
- Memoize,
205
- clearAllMemoizationCaches,
206
- memoize,
207
- memoizeAsync,
208
- memoizeDebounced,
209
- memoizeWeak,
210
- once
211
- });
2
+ var p=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var k=(e,n)=>{for(var r in n)p(e,r,{get:n[r],enumerable:!0})},w=(e,n,r,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of A(n))!x.call(e,t)&&t!==r&&p(e,t,{get:()=>n[t],enumerable:!(i=y(n,t))||i.enumerable});return e};var N=e=>w(p({},"__esModule",{value:!0}),e);var $={};k($,{Memoize:()=>O,clearAllMemoizationCaches:()=>T,memoize:()=>R,memoizeAsync:()=>b,memoizeDebounced:()=>P,memoizeWeak:()=>S,once:()=>E});module.exports=N($);var c=require("./debug");function R(e,n={}){const{keyGen:r=(...o)=>JSON.stringify(o),maxSize:i=Number.POSITIVE_INFINITY,name:t=e.name||"anonymous",ttl:l=Number.POSITIVE_INFINITY}=n,u=new Map,m=[];function f(){if(u.size>=i&&m.length>0){const o=m.shift();o&&(u.delete(o),(0,c.debugLog)(`[memoize:${t}] clear`,{key:o,reason:"LRU"}))}}function z(o){return l===Number.POSITIVE_INFINITY?!1:Date.now()-o.timestamp>l}return function(...g){const s=r(...g),a=u.get(s);if(a&&!z(a)){a.hits++;const d=m.indexOf(s);return d!==-1&&m.splice(d,1),m.push(s),(0,c.debugLog)(`[memoize:${t}] hit`,{key:s,hits:a.hits}),a.value}(0,c.debugLog)(`[memoize:${t}] miss`,{key:s});const h=e(...g);return f(),u.set(s,{value:h,timestamp:Date.now(),hits:0}),m.push(s),(0,c.debugLog)(`[memoize:${t}] set`,{key:s,cacheSize:u.size}),h}}function b(e,n={}){const{keyGen:r=(...o)=>JSON.stringify(o),maxSize:i=Number.POSITIVE_INFINITY,name:t=e.name||"anonymous",ttl:l=Number.POSITIVE_INFINITY}=n,u=new Map,m=[];function f(){if(u.size>=i&&m.length>0){const o=m.shift();o&&(u.delete(o),(0,c.debugLog)(`[memoizeAsync:${t}] clear`,{key:o,reason:"LRU"}))}}function z(o){return l===Number.POSITIVE_INFINITY?!1:Date.now()-o.timestamp>l}return async function(...g){const s=r(...g),a=u.get(s);if(a&&!z(a)){a.hits++;const d=m.indexOf(s);return d!==-1&&m.splice(d,1),m.push(s),(0,c.debugLog)(`[memoizeAsync:${t}] hit`,{key:s,hits:a.hits}),await a.value}(0,c.debugLog)(`[memoizeAsync:${t}] miss`,{key:s});const h=e(...g);f(),u.set(s,{value:h,timestamp:Date.now(),hits:0}),m.push(s),(0,c.debugLog)(`[memoizeAsync:${t}] set`,{key:s,cacheSize:u.size});try{return await h}catch(d){u.delete(s);const I=m.indexOf(s);throw I!==-1&&m.splice(I,1),(0,c.debugLog)(`[memoizeAsync:${t}] clear`,{key:s,reason:"error"}),d}}}function O(e={}){return(n,r,i)=>{const t=i.value;return i.value=R(t,{...e,name:e.name||r}),i}}function T(){(0,c.debugLog)("[memoize:all] clear",{action:"clear-all-caches"})}function S(e){const n=new WeakMap;return function(i){const t=n.get(i);if(t!==void 0)return(0,c.debugLog)(`[memoizeWeak:${e.name}] hit`),t;(0,c.debugLog)(`[memoizeWeak:${e.name}] miss`);const l=e(i);return n.set(i,l),l}}function E(e){let n=!1,r;return function(){return n?(0,c.debugLog)(`[once:${e.name}] hit`):(r=e(),n=!0,(0,c.debugLog)(`[once:${e.name}] set`)),r}}function P(e,n,r={}){const i=R(e,r);let t;return function(...u){return t&&clearTimeout(t),t=setTimeout(()=>{i(...u)},n),i(...u)}}0&&(module.exports={Memoize,clearAllMemoizationCaches,memoize,memoizeAsync,memoizeDebounced,memoizeWeak,once});
212
3
  //# sourceMappingURL=memoization.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/memoization.ts"],
4
4
  "sourcesContent": ["/**\n * @fileoverview Memoization utilities for caching function results.\n * Provides function result caching to optimize repeated computations and expensive operations.\n */\n\nimport { debugLog } from './debug'\n\n/**\n * Options for memoization behavior.\n */\ntype MemoizeOptions<Args extends unknown[], _Result = unknown> = {\n /** Custom cache key generator (defaults to JSON.stringify) */\n keyGen?: (...args: Args) => string\n /** Maximum cache size (LRU eviction when exceeded) */\n maxSize?: number\n /** TTL in milliseconds (cache entries expire after this time) */\n ttl?: number\n /** Cache name for debugging */\n name?: string\n /** Weak cache for object keys (enables GC) */\n weak?: boolean\n /** Custom equality check for cache hits */\n equals?: (a: Args, b: Args) => boolean\n}\n\n/**\n * Cache entry with metadata.\n */\ntype CacheEntry<T> = {\n value: T\n timestamp: number\n hits: number\n}\n\n/**\n * Memoize a function with configurable caching behavior.\n * Caches function results to avoid repeated computation.\n *\n * @param fn - Function to memoize\n * @param options - Memoization options\n * @returns Memoized version of the function\n *\n * @example\n * import { memoize } from '@socketsecurity/registry/lib/memoization'\n *\n * const expensiveOperation = memoize((n: number) => {\n * // Heavy computation\n * return Array(n).fill(0).reduce((a, _, i) => a + i, 0)\n * }, { maxSize: 100, ttl: 60000, name: 'sum' })\n *\n * expensiveOperation(1000) // Computed\n * expensiveOperation(1000) // Cached\n */\nexport function memoize<Args extends unknown[], Result>(\n fn: (...args: Args) => Result,\n options: MemoizeOptions<Args, Result> = {},\n): (...args: Args) => Result {\n const {\n keyGen = (...args) => JSON.stringify(args),\n maxSize = Number.POSITIVE_INFINITY,\n name = fn.name || 'anonymous',\n ttl = Number.POSITIVE_INFINITY,\n } = options\n\n const cache = new Map<string, CacheEntry<Result>>()\n const accessOrder: string[] = []\n\n function evictLRU(): void {\n if (cache.size >= maxSize && accessOrder.length > 0) {\n const oldest = accessOrder.shift()\n if (oldest) {\n cache.delete(oldest)\n debugLog(`[memoize:${name}] clear`, {\n key: oldest,\n reason: 'LRU',\n })\n }\n }\n }\n\n function isExpired(entry: CacheEntry<Result>): boolean {\n if (ttl === Number.POSITIVE_INFINITY) {\n return false\n }\n return Date.now() - entry.timestamp > ttl\n }\n\n return function memoized(...args: Args): Result {\n const key = keyGen(...args)\n\n // Check cache\n const cached = cache.get(key)\n if (cached && !isExpired(cached)) {\n cached.hits++\n // Move to end of access order (LRU)\n const index = accessOrder.indexOf(key)\n if (index !== -1) {\n accessOrder.splice(index, 1)\n }\n accessOrder.push(key)\n\n debugLog(`[memoize:${name}] hit`, { key, hits: cached.hits })\n return cached.value\n }\n\n // Cache miss - compute value\n debugLog(`[memoize:${name}] miss`, { key })\n const value = fn(...args)\n\n // Store in cache\n evictLRU()\n cache.set(key, {\n value,\n timestamp: Date.now(),\n hits: 0,\n })\n accessOrder.push(key)\n\n debugLog(`[memoize:${name}] set`, { key, cacheSize: cache.size })\n return value\n }\n}\n\n/**\n * Memoize an async function.\n * Similar to memoize() but handles promises properly.\n *\n * @param fn - Async function to memoize\n * @param options - Memoization options\n * @returns Memoized version of the async function\n *\n * @example\n * import { memoizeAsync } from '@socketsecurity/registry/lib/memoization'\n *\n * const fetchUser = memoizeAsync(async (id: string) => {\n * const response = await fetch(`/api/users/${id}`)\n * return response.json()\n * }, { ttl: 300000, name: 'fetchUser' })\n *\n * await fetchUser('123') // Fetches from API\n * await fetchUser('123') // Returns cached result\n */\nexport function memoizeAsync<Args extends unknown[], Result>(\n fn: (...args: Args) => Promise<Result>,\n options: MemoizeOptions<Args, Result> = {},\n): (...args: Args) => Promise<Result> {\n const {\n keyGen = (...args) => JSON.stringify(args),\n maxSize = Number.POSITIVE_INFINITY,\n name = fn.name || 'anonymous',\n ttl = Number.POSITIVE_INFINITY,\n } = options\n\n const cache = new Map<string, CacheEntry<Promise<Result>>>()\n const accessOrder: string[] = []\n\n function evictLRU(): void {\n if (cache.size >= maxSize && accessOrder.length > 0) {\n const oldest = accessOrder.shift()\n if (oldest) {\n cache.delete(oldest)\n debugLog(`[memoizeAsync:${name}] clear`, {\n key: oldest,\n reason: 'LRU',\n })\n }\n }\n }\n\n function isExpired(entry: CacheEntry<Promise<Result>>): boolean {\n if (ttl === Number.POSITIVE_INFINITY) {\n return false\n }\n return Date.now() - entry.timestamp > ttl\n }\n\n return async function memoized(...args: Args): Promise<Result> {\n const key = keyGen(...args)\n\n // Check cache\n const cached = cache.get(key)\n if (cached && !isExpired(cached)) {\n cached.hits++\n // Move to end of access order (LRU)\n const index = accessOrder.indexOf(key)\n if (index !== -1) {\n accessOrder.splice(index, 1)\n }\n accessOrder.push(key)\n\n debugLog(`[memoizeAsync:${name}] hit`, { key, hits: cached.hits })\n return await cached.value\n }\n\n // Cache miss - compute value\n debugLog(`[memoizeAsync:${name}] miss`, { key })\n const promise = fn(...args)\n\n // Store promise in cache (handles concurrent calls)\n evictLRU()\n cache.set(key, {\n value: promise,\n timestamp: Date.now(),\n hits: 0,\n })\n accessOrder.push(key)\n\n debugLog(`[memoizeAsync:${name}] set`, { key, cacheSize: cache.size })\n\n try {\n const result = await promise\n return result\n } catch (e) {\n // Remove failed promise from cache\n cache.delete(key)\n const orderIndex = accessOrder.indexOf(key)\n if (orderIndex !== -1) {\n accessOrder.splice(orderIndex, 1)\n }\n debugLog(`[memoizeAsync:${name}] clear`, { key, reason: 'error' })\n throw e\n }\n }\n}\n\n/**\n * Create a memoized version of a method.\n * Preserves 'this' context for class methods.\n *\n * @param target - Object containing the method\n * @param propertyKey - Method name\n * @param descriptor - Property descriptor\n * @returns Modified descriptor with memoized method\n *\n * @example\n * import { Memoize } from '@socketsecurity/registry/lib/memoization'\n *\n * class Calculator {\n * @Memoize()\n * fibonacci(n: number): number {\n * if (n <= 1) return n\n * return this.fibonacci(n - 1) + this.fibonacci(n - 2)\n * }\n * }\n */\nexport function Memoize(options: MemoizeOptions<unknown[], unknown> = {}) {\n return (\n _target: unknown,\n propertyKey: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor => {\n const originalMethod = descriptor.value as (...args: unknown[]) => unknown\n\n descriptor.value = memoize(originalMethod, {\n ...options,\n name: options.name || propertyKey,\n })\n\n return descriptor\n }\n}\n\n/**\n * Clear all memoization caches.\n * Useful for testing or when you need to force recomputation.\n */\nexport function clearAllMemoizationCaches(): void {\n // Note: This requires the memoized functions to be tracked globally.\n // For now, this is a placeholder that logs the intent.\n debugLog('[memoize:all] clear', { action: 'clear-all-caches' })\n}\n\n/**\n * Memoize with WeakMap for object keys.\n * Allows garbage collection when objects are no longer referenced.\n * Only works when first argument is an object.\n *\n * @param fn - Function to memoize\n * @returns Memoized version using WeakMap\n *\n * @example\n * import { memoizeWeak } from '@socketsecurity/registry/lib/memoization'\n *\n * const processConfig = memoizeWeak((config: Config) => {\n * return expensiveTransform(config)\n * })\n *\n * processConfig(config1) // Computed\n * processConfig(config1) // Cached\n * // When config1 is no longer referenced, cache entry is GC'd\n */\nexport function memoizeWeak<K extends object, Result>(\n fn: (key: K) => Result,\n): (key: K) => Result {\n const cache = new WeakMap<K, Result>()\n\n return function memoized(key: K): Result {\n const cached = cache.get(key)\n if (cached !== undefined) {\n debugLog(`[memoizeWeak:${fn.name}] hit`)\n return cached\n }\n\n debugLog(`[memoizeWeak:${fn.name}] miss`)\n const result = fn(key)\n cache.set(key, result)\n return result\n }\n}\n\n/**\n * Simple once() implementation - caches single result forever.\n * Useful for initialization functions that should only run once.\n *\n * @param fn - Function to run once\n * @returns Memoized version that only executes once\n *\n * @example\n * import { once } from '@socketsecurity/registry/lib/memoization'\n *\n * const initialize = once(() => {\n * console.log('Initializing\u2026')\n * return loadConfig()\n * })\n *\n * initialize() // Logs \"Initializing\u2026\" and returns config\n * initialize() // Returns cached config (no log)\n */\nexport function once<Result>(fn: () => Result): () => Result {\n let called = false\n let result: Result\n\n return function memoized(): Result {\n if (!called) {\n result = fn()\n called = true\n debugLog(`[once:${fn.name}] set`)\n } else {\n debugLog(`[once:${fn.name}] hit`)\n }\n return result\n }\n}\n\n/**\n * Create a debounced memoized function.\n * Combines memoization with debouncing for expensive operations.\n *\n * @param fn - Function to memoize and debounce\n * @param wait - Debounce wait time in milliseconds\n * @param options - Memoization options\n * @returns Debounced memoized function\n *\n * @example\n * import { memoizeDebounced } from '@socketsecurity/registry/lib/memoization'\n *\n * const search = memoizeDebounced(\n * (query: string) => performSearch(query),\n * 300,\n * { name: 'search' }\n * )\n */\nexport function memoizeDebounced<Args extends unknown[], Result>(\n fn: (...args: Args) => Result,\n wait: number,\n options: MemoizeOptions<Args, Result> = {},\n): (...args: Args) => Result {\n const memoized = memoize(fn, options)\n let timeoutId: NodeJS.Timeout | undefined\n\n return function debounced(...args: Args): Result {\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n\n timeoutId = setTimeout(() => {\n memoized(...args)\n }, wait)\n\n // For immediate return, try cached value or compute synchronously\n return memoized(...args)\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
5
+ "mappings": "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",
6
+ "names": ["memoization_exports", "__export", "Memoize", "clearAllMemoizationCaches", "memoize", "memoizeAsync", "memoizeDebounced", "memoizeWeak", "once", "__toCommonJS", "import_debug", "fn", "options", "keyGen", "args", "maxSize", "name", "ttl", "cache", "accessOrder", "evictLRU", "oldest", "isExpired", "entry", "key", "cached", "index", "value", "promise", "e", "orderIndex", "_target", "propertyKey", "descriptor", "originalMethod", "result", "called", "wait", "memoized", "timeoutId"]
7
7
  }
package/dist/objects.d.ts CHANGED
@@ -140,7 +140,6 @@ export declare function createConstantsObject(props: object, options_?: Constant
140
140
  * console.log(Object.keys(obj)) // [] (non-enumerable)
141
141
  * ```
142
142
  */
143
- /*@__NO_SIDE_EFFECTS__*/
144
143
  export declare function defineGetter<T>(object: object, propKey: PropertyKey, getter: () => T): object;
145
144
  /**
146
145
  * Define a lazy getter property on an object.
@@ -165,7 +164,6 @@ export declare function defineGetter<T>(object: object, propKey: PropertyKey, ge
165
164
  * console.log(obj.data) // Returns same data without logging
166
165
  * ```
167
166
  */
168
- /*@__NO_SIDE_EFFECTS__*/
169
167
  export declare function defineLazyGetter<T>(object: object, propKey: PropertyKey, getter: () => T, stats?: LazyGetterStats | undefined): object;
170
168
  /**
171
169
  * Define multiple lazy getter properties on an object.
@@ -194,7 +192,6 @@ export declare function defineLazyGetter<T>(object: object, propKey: PropertyKey
194
192
  * console.log(stats.initialized) // Set(['user', 'config'])
195
193
  * ```
196
194
  */
197
- /*@__NO_SIDE_EFFECTS__*/
198
195
  export declare function defineLazyGetters(object: object, getterDefObj: GetterDefObj | undefined, stats?: LazyGetterStats | undefined): object;
199
196
  /**
200
197
  * Compare two entry arrays by their keys for sorting.