UNPKG

@socketsecurity/lib

Version:

Core utilities and infrastructure for Socket.dev security tools

279 lines (208 loc) โ€ข 8.58 kB
# @socketsecurity/lib [![Socket Badge](https://socket.dev/api/badge/npm/package/@socketsecurity/lib)](https://socket.dev/npm/package/@socketsecurity/lib) [![CI](https://github.com/SocketDev/socket-lib/actions/workflows/ci.yml/badge.svg)](https://github.com/SocketDev/socket-lib/actions/workflows/ci.yml) [![Follow @SocketSecurity](https://img.shields.io/twitter/follow/SocketSecurity?style=social)](https://twitter.com/SocketSecurity) **Core infrastructure library for Socket.dev security tools** โ€” utilities, constants, and helpers with zero dependencies. ## Quick Start ```bash pnpm add @socketsecurity/lib ``` ```typescript // Import what you need - tree-shakeable exports import { Spinner } from '@socketsecurity/lib/spinner' import { readJsonFile } from '@socketsecurity/lib/fs' import { NODE_MODULES } from '@socketsecurity/lib/constants/packages' const spinner = Spinner({ text: 'Loading...' }) spinner.start() const pkg = await readJsonFile('./package.json') spinner.stop() ``` ## ๐Ÿ“ฆ What's Inside ``` @socketsecurity/lib โ”œโ”€โ”€ Visual Effects โ†’ Spinners, shimmer, themes, logger โ”œโ”€โ”€ File System โ†’ fs, paths, globs, temp files โ”œโ”€โ”€ Package Management โ†’ npm, pnpm, yarn utilities โ”œโ”€โ”€ Process & Spawn โ†’ Safe process spawning, IPC โ”œโ”€โ”€ Environment โ†’ 68 typed env getters (CI, paths, etc) โ”œโ”€โ”€ Constants โ†’ Node.js, npm, platform constants โ”œโ”€โ”€ Utilities โ†’ Arrays, objects, strings, promises โ””โ”€โ”€ Types โ†’ Full TypeScript definitions ``` ## ๐Ÿ’ก Key Features ### Visual Effects **Themed spinners and text effects:** ```typescript import { Spinner, setTheme } from '@socketsecurity/lib' setTheme('ultra') // ๐ŸŒˆ Rainbow mode! const spinner = Spinner({ text: 'Processing...' }) spinner.enableShimmer() spinner.start() ``` **5 Built-in Themes:** `socket` (purple) ยท `coana` ยท `socket-firewall` ยท `socket-cli-python` ยท `ultra` (rainbow) ๐Ÿ‘‰ [**Theme System Docs**](./docs/themes.md) ### File System **Safe, typed file operations:** ```typescript import { readJsonFile, writeJsonFile } from '@socketsecurity/lib/fs' const pkg = await readJsonFile<PackageJson>('./package.json') await writeJsonFile('./output.json', { data: pkg }) ``` ### Package Management **Parse and validate package specs:** ```typescript import { parsePackageSpec } from '@socketsecurity/lib/packages' const spec = parsePackageSpec('lodash@^4.17.0') // { name: 'lodash', version: '^4.17.0', type: 'range', ... } ``` ### Environment Variables **68 typed environment getters:** ```typescript import { getCI } from '@socketsecurity/lib/env/ci' import { getHome } from '@socketsecurity/lib/env/home' import { getNodeEnv } from '@socketsecurity/lib/env/node-env' if (getCI()) { console.log('Running in CI') } ``` ### Constants **Access platform and Node.js constants:** ```typescript import { NODE_MODULES, PACKAGE_JSON, NPM_REGISTRY_URL, } from '@socketsecurity/lib/constants/packages' import { DARWIN, WIN32 } from '@socketsecurity/lib/constants/platform' ``` ## Common Patterns ### Spinner with Progress ```typescript import { withSpinner, Spinner } from '@socketsecurity/lib/spinner' await withSpinner({ message: 'Installing packages...', spinner: Spinner({ color: [140, 82, 255] }), operation: async () => { await installPackages() } }) ``` ### Safe Process Spawning ```typescript import { spawn } from '@socketsecurity/lib/spawn' const result = await spawn('npm', ['install'], { cwd: '/path/to/project', timeout: 30000 }) ``` ### JSON File Operations ```typescript import { readJsonFile, writeJsonFile } from '@socketsecurity/lib/fs' const data = await readJsonFile('./config.json') data.version = '2.0.0' await writeJsonFile('./config.json', data) ``` ### Promise Utilities ```typescript import { timeout, retry } from '@socketsecurity/lib/promises' // Timeout after 5 seconds const result = await timeout(fetchData(), 5000) // Retry up to 3 times const data = await retry(() => fetchData(), { maxAttempts: 3 }) ``` ## Module Organization **120+ granular exports** organized by category: ``` /constants/ โ†’ Node.js, npm, platform constants โ”œโ”€ packages โ†’ PACKAGE_JSON, NODE_MODULES, etc. โ”œโ”€ platform โ†’ DARWIN, WIN32, S_IXUSR, etc. โ”œโ”€ node โ†’ NODE_VERSION, NODE_PATH, etc. โ”œโ”€ time โ†’ MILLISECONDS_PER_*, DLX_BINARY_CACHE_TTL โ””โ”€ encoding โ†’ UTF8, CHAR_* codes /env/ โ†’ 68 typed environment getters โ”œโ”€ ci โ†’ getCI() - Detect CI environment โ”œโ”€ home โ†’ getHome() - User home directory โ”œโ”€ node-env โ†’ getNodeEnv() - NODE_ENV value โ””โ”€ ... โ†’ And 65 more! /packages/ โ†’ Package management utilities โ”œโ”€ validation โ†’ Package name/version validation โ”œโ”€ operations โ†’ Install, extract, manifest โ”œโ”€ registry โ†’ npm registry utilities โ””โ”€ editable โ†’ Editable installs detection /effects/ โ†’ Visual effects for CLI โ”œโ”€ text-shimmer โ†’ Animated gradient text โ”œโ”€ pulse-frames โ†’ Pulsing text effect โ””โ”€ ultra โ†’ Rainbow gradients /stdio/ โ†’ Terminal I/O utilities โ”œโ”€ stdout โ†’ Safe stdout operations โ”œโ”€ stderr โ†’ Safe stderr operations โ”œโ”€ clear โ†’ Clear terminal โ””โ”€ footer โ†’ Terminal footers /themes/ โ†’ Theme system for consistent branding โ”œโ”€ types โ†’ Theme type definitions โ”œโ”€ themes โ†’ 5 built-in themes โ”œโ”€ context โ†’ Global theme management โ””โ”€ utils โ†’ Color resolution, theme creation ``` ## Documentation | Doc | Description | |-----|-------------| | [**Getting Started**](./docs/getting-started.md) | Development workflow, commands, architecture | | [**Theme System**](./docs/themes.md) | Themed spinners, colors, and effects | | [**Build Architecture**](./docs/build.md) | Vendored dependencies, build system | | [**CLAUDE.md**](./CLAUDE.md) | Coding standards and patterns | ## Architecture ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ @socketsecurity/lib โ”‚ โ”‚ Zero runtime dependencies โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ src/ โ”‚ โ”‚ โ”œโ”€โ”€ constants/ 14 modules โ”‚ โ”‚ โ”œโ”€โ”€ env/ 68 getters โ”‚ โ”‚ โ”œโ”€โ”€ packages/ 12 utilities โ”‚ โ”‚ โ”œโ”€โ”€ effects/ 4 visual effects โ”‚ โ”‚ โ”œโ”€โ”€ stdio/ 9 I/O utilities โ”‚ โ”‚ โ”œโ”€โ”€ themes/ Theme system โ”‚ โ”‚ โ”œโ”€โ”€ external/ 40+ vendored deps โ”‚ โ”‚ โ””โ”€โ”€ ... 60+ more modules โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ Build: esbuild โ†’ CommonJS (ES2022) โ”‚ โ”‚ Types: tsgo (TypeScript Native Preview) โ”‚ โ”‚ Tests: Vitest (4600+ tests, 100% coverage) โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ ``` ## Development ```bash # Setup git clone https://github.com/SocketDev/socket-lib.git cd socket-lib pnpm install # Build pnpm run build # Production build pnpm run dev # Watch mode # Test pnpm test # Run all tests pnpm run cover # With coverage # Quality pnpm run check # Type check pnpm run lint # Lint code pnpm run fix # Auto-fix issues ``` ## Stats - **183** TypeScript modules - **120+** granular exports - **68** typed environment getters - **14** constant modules - **4600+** tests passing - **Zero** runtime dependencies ## Contributing See [CLAUDE.md](./CLAUDE.md) for: - Code style and patterns - Path alias usage - Testing guidelines - Build system details ## License MIT --- **Built by Socket.dev** โ€” [socket.dev](https://socket.dev) | [@SocketSecurity](https://twitter.com/SocketSecurity)