@socketsecurity/lib 2.10.4 → 3.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.
- package/CHANGELOG.md +29 -24
- package/README.md +231 -40
- package/dist/constants/platform.js +1 -1
- package/dist/constants/platform.js.map +3 -3
- package/dist/cover/code.js +1 -1
- package/dist/cover/code.js.map +3 -3
- package/dist/debug.js +2 -2
- package/dist/debug.js.map +3 -3
- package/dist/dlx-binary.d.ts +29 -6
- package/dist/dlx-binary.js +6 -6
- package/dist/dlx-binary.js.map +3 -3
- package/dist/dlx-package.d.ts +16 -1
- package/dist/dlx-package.js +6 -6
- package/dist/dlx-package.js.map +3 -3
- package/dist/dlx.js +1 -1
- package/dist/dlx.js.map +3 -3
- package/dist/env/rewire.js +1 -1
- package/dist/env/rewire.js.map +3 -3
- package/dist/external/yoctocolors-cjs.d.ts +14 -0
- package/dist/fs.d.ts +2 -2
- package/dist/fs.js.map +1 -1
- package/dist/git.js +1 -1
- package/dist/git.js.map +3 -3
- package/dist/http-request.js +1 -1
- package/dist/http-request.js.map +3 -3
- package/dist/ipc.js +1 -1
- package/dist/ipc.js.map +3 -3
- package/dist/links/index.d.ts +65 -0
- package/dist/links/index.js +3 -0
- package/dist/links/index.js.map +7 -0
- package/dist/logger.d.ts +21 -18
- package/dist/logger.js +1 -1
- package/dist/logger.js.map +3 -3
- package/dist/packages/isolation.js +1 -1
- package/dist/packages/isolation.js.map +3 -3
- package/dist/paths.js +1 -1
- package/dist/paths.js.map +2 -2
- package/dist/process-lock.js +2 -2
- package/dist/process-lock.js.map +3 -3
- package/dist/promises.d.ts +6 -21
- package/dist/promises.js +1 -1
- package/dist/promises.js.map +2 -2
- package/dist/prompts/index.d.ts +115 -0
- package/dist/prompts/index.js +3 -0
- package/dist/prompts/index.js.map +7 -0
- package/dist/spinner.d.ts +33 -23
- package/dist/spinner.js +1 -1
- package/dist/spinner.js.map +3 -3
- package/dist/stdio/mask.d.ts +2 -2
- package/dist/stdio/mask.js +4 -4
- package/dist/stdio/mask.js.map +3 -3
- package/dist/stdio/stdout.js +1 -1
- package/dist/stdio/stdout.js.map +3 -3
- package/dist/themes/context.d.ts +80 -0
- package/dist/themes/context.js +3 -0
- package/dist/themes/context.js.map +7 -0
- package/dist/themes/index.d.ts +53 -0
- package/dist/themes/index.js +3 -0
- package/dist/themes/index.js.map +7 -0
- package/dist/themes/themes.d.ts +49 -0
- package/dist/themes/themes.js +3 -0
- package/dist/themes/themes.js.map +7 -0
- package/dist/themes/types.d.ts +92 -0
- package/dist/themes/types.js +3 -0
- package/dist/themes/types.js.map +7 -0
- package/dist/themes/utils.d.ts +78 -0
- package/dist/themes/utils.js +3 -0
- package/dist/themes/utils.js.map +7 -0
- package/package.json +39 -7
- package/dist/download-lock.d.ts +0 -49
- package/dist/download-lock.js +0 -10
- package/dist/download-lock.js.map +0 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@socketsecurity/lib",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Core utilities and infrastructure for Socket.dev security tools",
|
|
6
6
|
"keywords": [
|
|
@@ -152,10 +152,6 @@
|
|
|
152
152
|
"types": "./dist/dlx-package.d.ts",
|
|
153
153
|
"default": "./dist/dlx-package.js"
|
|
154
154
|
},
|
|
155
|
-
"./download-lock": {
|
|
156
|
-
"types": "./dist/download-lock.d.ts",
|
|
157
|
-
"default": "./dist/download-lock.js"
|
|
158
|
-
},
|
|
159
155
|
"./effects/pulse-frames": {
|
|
160
156
|
"types": "./dist/effects/pulse-frames.d.ts",
|
|
161
157
|
"default": "./dist/effects/pulse-frames.js"
|
|
@@ -296,6 +292,14 @@
|
|
|
296
292
|
"types": "./dist/json.d.ts",
|
|
297
293
|
"default": "./dist/json.js"
|
|
298
294
|
},
|
|
295
|
+
"./links": {
|
|
296
|
+
"types": "./dist/links/index.d.ts",
|
|
297
|
+
"default": "./dist/links/index.js"
|
|
298
|
+
},
|
|
299
|
+
"./links/index": {
|
|
300
|
+
"types": "./dist/links/index.d.ts",
|
|
301
|
+
"default": "./dist/links/index.js"
|
|
302
|
+
},
|
|
299
303
|
"./logger": {
|
|
300
304
|
"types": "./dist/logger.d.ts",
|
|
301
305
|
"default": "./dist/logger.js"
|
|
@@ -397,8 +401,12 @@
|
|
|
397
401
|
"default": "./dist/promises.js"
|
|
398
402
|
},
|
|
399
403
|
"./prompts": {
|
|
400
|
-
"types": "./dist/prompts.d.ts",
|
|
401
|
-
"default": "./dist/prompts.js"
|
|
404
|
+
"types": "./dist/prompts/index.d.ts",
|
|
405
|
+
"default": "./dist/prompts/index.js"
|
|
406
|
+
},
|
|
407
|
+
"./prompts/index": {
|
|
408
|
+
"types": "./dist/prompts/index.d.ts",
|
|
409
|
+
"default": "./dist/prompts/index.js"
|
|
402
410
|
},
|
|
403
411
|
"./regexps": {
|
|
404
412
|
"types": "./dist/regexps.d.ts",
|
|
@@ -488,6 +496,30 @@
|
|
|
488
496
|
"types": "./dist/temporary-executor.d.ts",
|
|
489
497
|
"default": "./dist/temporary-executor.js"
|
|
490
498
|
},
|
|
499
|
+
"./themes": {
|
|
500
|
+
"types": "./dist/themes/index.d.ts",
|
|
501
|
+
"default": "./dist/themes/index.js"
|
|
502
|
+
},
|
|
503
|
+
"./themes/context": {
|
|
504
|
+
"types": "./dist/themes/context.d.ts",
|
|
505
|
+
"default": "./dist/themes/context.js"
|
|
506
|
+
},
|
|
507
|
+
"./themes/index": {
|
|
508
|
+
"types": "./dist/themes/index.d.ts",
|
|
509
|
+
"default": "./dist/themes/index.js"
|
|
510
|
+
},
|
|
511
|
+
"./themes/themes": {
|
|
512
|
+
"types": "./dist/themes/themes.d.ts",
|
|
513
|
+
"default": "./dist/themes/themes.js"
|
|
514
|
+
},
|
|
515
|
+
"./themes/types": {
|
|
516
|
+
"types": "./dist/themes/types.d.ts",
|
|
517
|
+
"default": "./dist/themes/types.js"
|
|
518
|
+
},
|
|
519
|
+
"./themes/utils": {
|
|
520
|
+
"types": "./dist/themes/utils.d.ts",
|
|
521
|
+
"default": "./dist/themes/utils.js"
|
|
522
|
+
},
|
|
491
523
|
"./types": {
|
|
492
524
|
"types": "./dist/types.d.ts",
|
|
493
525
|
"default": "./dist/types.js"
|
package/dist/download-lock.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { HttpDownloadOptions, HttpDownloadResult } from './http-request';
|
|
2
|
-
export interface DownloadLockInfo {
|
|
3
|
-
pid: number;
|
|
4
|
-
startTime: number;
|
|
5
|
-
url: string;
|
|
6
|
-
}
|
|
7
|
-
export interface DownloadWithLockOptions extends HttpDownloadOptions {
|
|
8
|
-
/**
|
|
9
|
-
* Maximum time to wait for lock acquisition in milliseconds.
|
|
10
|
-
* @default 60000 (1 minute)
|
|
11
|
-
*/
|
|
12
|
-
lockTimeout?: number | undefined;
|
|
13
|
-
/**
|
|
14
|
-
* Directory where lock files are stored.
|
|
15
|
-
* @default '<destPath>.locks'
|
|
16
|
-
*/
|
|
17
|
-
locksDir?: string | undefined;
|
|
18
|
-
/**
|
|
19
|
-
* Interval for checking stale locks in milliseconds.
|
|
20
|
-
* @default 1000 (1 second)
|
|
21
|
-
*/
|
|
22
|
-
pollInterval?: number | undefined;
|
|
23
|
-
/**
|
|
24
|
-
* Maximum age of a lock before it's considered stale in milliseconds.
|
|
25
|
-
* Aligned with npm's npx locking strategy (5-10 seconds).
|
|
26
|
-
* @default 10000 (10 seconds)
|
|
27
|
-
*/
|
|
28
|
-
staleTimeout?: number | undefined;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Download a file with locking to prevent concurrent downloads of the same resource.
|
|
32
|
-
* If another process is already downloading to the same destination, this will wait
|
|
33
|
-
* for the download to complete (up to lockTimeout) before proceeding.
|
|
34
|
-
*
|
|
35
|
-
* @throws {Error} When download fails or lock cannot be acquired.
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* const result = await downloadWithLock(
|
|
40
|
-
* 'https://example.com/file.tar.gz',
|
|
41
|
-
* '/tmp/downloads/file.tar.gz',
|
|
42
|
-
* {
|
|
43
|
-
* retries: 3,
|
|
44
|
-
* lockTimeout: 60000, // Wait up to 1 minute for other downloads
|
|
45
|
-
* }
|
|
46
|
-
* )
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
export declare function downloadWithLock(url: string, destPath: string, options?: DownloadWithLockOptions | undefined): Promise<HttpDownloadResult>;
|
package/dist/download-lock.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/* Socket Lib - Built with esbuild */
|
|
2
|
-
var D=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var y=(o,t)=>{for(var n in t)D(o,n,{get:t[n],enumerable:!0})},I=(o,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of h(t))!L.call(o,r)&&r!==n&&D(o,r,{get:()=>t[r],enumerable:!(i=T(t,r))||i.enumerable});return o};var b=o=>I(D({},"__esModule",{value:!0}),o);var z={};y(z,{downloadWithLock:()=>x});module.exports=b(z);var f=require("node:fs"),e=require("node:fs/promises"),u=require("node:path"),g=require("./http-request");function O(o,t){const n=o.replace(/[^\w.-]/g,"_"),i=t||(0,u.join)((0,u.dirname)(o),".locks",n);return(0,u.join)(i,"concurrency.lock")}function S(o,t){if(Date.now()-o.startTime>t)return!0;try{return process.kill(o.pid,0),!1}catch{return!0}}async function $(o,t,n){const{lockTimeout:i,locksDir:r,pollInterval:m,staleTimeout:p}=n,s=O(o,r),w=(0,u.dirname)(s);await(0,e.mkdir)(w,{recursive:!0});const c=Date.now();for(;;)try{if((0,f.existsSync)(s)){const d=await(0,e.readFile)(s,"utf8"),l=JSON.parse(d);if(S(l,p))await(0,e.rm)(s,{force:!0});else{if(Date.now()-c>i){const k=Date.now()-l.startTime;throw new Error(`Download lock timed out after ${i}ms
|
|
3
|
-
Lock held by process ${l.pid} for ${k}ms
|
|
4
|
-
Resource: ${l.url}
|
|
5
|
-
Started: ${new Date(l.startTime).toISOString()}
|
|
6
|
-
To resolve:
|
|
7
|
-
1. Check if process ${l.pid} is still running: ps -p ${l.pid}
|
|
8
|
-
2. If stale, remove lock file: rm "${s}"
|
|
9
|
-
3. Or increase lockTimeout option`)}await new Promise(k=>setTimeout(k,m));continue}}const a={pid:process.pid,startTime:Date.now(),url:t};return await(0,e.writeFile)(s,JSON.stringify(a,null,2),{flag:"wx"}),s}catch(a){if(a.code==="EEXIST"){if(Date.now()-c>i)throw new Error(`Lock acquisition timed out after ${i}ms`);await new Promise(d=>setTimeout(d,m));continue}throw a}}async function v(o){try{await(0,e.rm)(o,{force:!0})}catch{}}async function x(o,t,n){const{lockTimeout:i=6e4,locksDir:r,pollInterval:m=1e3,staleTimeout:p=1e4,...s}={__proto__:null,...n};if((0,f.existsSync)(t)){const c=await(0,e.stat)(t).catch(()=>null);if(c&&c.size>0)return{path:t,size:c.size}}const w=await $(t,o,{lockTimeout:i,locksDir:r,pollInterval:m,staleTimeout:p});try{if((0,f.existsSync)(t)){const a=await(0,e.stat)(t).catch(()=>null);if(a&&a.size>0)return{path:t,size:a.size}}return await(0,g.httpDownload)(o,t,s)}finally{await v(w)}}0&&(module.exports={downloadWithLock});
|
|
10
|
-
//# sourceMappingURL=download-lock.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/download-lock.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Download locking utilities to prevent concurrent downloads of the same resource. Uses file-based locking for cross-process synchronization.\n * @deprecated This module is deprecated in favor of `process-lock.ts` which uses\n * directory-based locking (via `mkdir()`) that's more reliable across all filesystems\n * including NFS. See process-lock.ts for detailed explanation of why directory-based\n * locking is superior to file-based locking.\n *\n * Migration: Use `processLock.withLock()` from `./process-lock` instead of\n * `downloadWithLock()` from this module.\n */\n\nimport { existsSync } from 'node:fs'\n\nimport { mkdir, readFile, rm, stat, writeFile } from 'node:fs/promises'\n\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 * Aligned with npm's npx locking strategy (5-10 seconds).\n * @default 10000 (10 seconds)\n */\n staleTimeout?: number | undefined\n}\n\n/**\n * Get the path to the lock file for a destination path.\n * Uses npm npx's concurrency.lock naming convention.\n * For downloads, we use a subdirectory per destination to isolate locks.\n */\nfunction getLockFilePath(destPath: string, locksDir?: string): string {\n // Create a unique subdirectory for each destination using sanitized path.\n const sanitized = destPath.replace(/[^\\w.-]/g, '_')\n const dir = locksDir || join(dirname(destPath), '.locks', sanitized)\n return join(dir, 'concurrency.lock')\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 const lockAge = Date.now() - lockInfo.startTime\n throw new Error(\n `Download lock timed out after ${lockTimeout}ms\\n` +\n `Lock held by process ${lockInfo.pid} for ${lockAge}ms\\n` +\n `Resource: ${lockInfo.url}\\n` +\n `Started: ${new Date(lockInfo.startTime).toISOString()}\\n` +\n 'To resolve:\\n' +\n ` 1. Check if process ${lockInfo.pid} is still running: ps -p ${lockInfo.pid}\\n` +\n ` 2. If stale, remove lock file: rm \"${lockPath}\"\\n` +\n ' 3. Or increase lockTimeout option',\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 // Aligned with npm's npx locking (5-10s range).\n staleTimeout = 10_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": ["download_lock_exports", "__export", "downloadWithLock", "__toCommonJS", "import_node_fs", "import_promises", "import_node_path", "import_http_request", "getLockFilePath", "destPath", "locksDir", "sanitized", "dir", "isLockStale", "lockInfo", "staleTimeout", "acquireLock", "url", "options", "lockTimeout", "pollInterval", "lockPath", "lockDir", "startTime", "lockContent", "lockAge", "resolve", "e", "releaseLock", "downloadOptions", "statResult"]
|
|
7
|
-
}
|