@socketsecurity/lib 1.0.4 → 1.1.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 +25 -0
- package/dist/abort.js.map +2 -2
- package/dist/argv/parse.js.map +2 -2
- package/dist/arrays.d.ts +143 -0
- package/dist/arrays.js.map +2 -2
- package/dist/bin.js +1 -4
- package/dist/bin.js.map +2 -2
- package/dist/cacache.d.ts +0 -2
- package/dist/cacache.js +0 -1
- package/dist/cacache.js.map +2 -2
- package/dist/cache-with-ttl.js.map +2 -2
- package/dist/dlx.js.map +2 -2
- package/dist/external/@yarnpkg/extensions.d.ts +0 -1
- package/dist/external/cacache.d.ts +0 -7
- package/dist/external/debug.d.ts +0 -3
- package/dist/external/fast-sort.d.ts +0 -1
- package/dist/external/libnpmpack.d.ts +0 -1
- package/dist/external/make-fetch-happen.d.ts +0 -1
- package/dist/external/pacote.d.ts +0 -5
- package/dist/external/semver.d.ts +0 -1
- package/dist/external/validate-npm-package-name.js +1 -1
- package/dist/external/yargs-parser.d.ts +0 -1
- package/dist/external/yoctocolors-cjs.js +1 -1
- package/dist/external/zod.js +9 -9
- package/dist/fs.d.ts +595 -23
- package/dist/fs.js.map +2 -2
- package/dist/git.d.ts +488 -41
- package/dist/git.js.map +2 -2
- package/dist/github.d.ts +361 -12
- package/dist/github.js.map +2 -2
- package/dist/http-request.d.ts +463 -4
- package/dist/http-request.js.map +2 -2
- package/dist/json.d.ts +177 -4
- package/dist/json.js.map +2 -2
- package/dist/logger.d.ts +823 -70
- package/dist/logger.js +654 -51
- package/dist/logger.js.map +2 -2
- package/dist/objects.d.ts +386 -10
- package/dist/objects.js.map +2 -2
- package/dist/path.d.ts +270 -6
- package/dist/path.js.map +2 -2
- package/dist/promises.d.ts +432 -27
- package/dist/promises.js +3 -0
- package/dist/promises.js.map +2 -2
- package/dist/signal-exit.js.map +2 -2
- package/dist/sorts.js.map +2 -2
- package/dist/spawn.d.ts +242 -33
- package/dist/spawn.js.map +2 -2
- package/dist/spinner.d.ts +260 -20
- package/dist/spinner.js +201 -63
- package/dist/spinner.js.map +2 -2
- package/dist/stdio/clear.d.ts +130 -9
- package/dist/stdio/clear.js.map +2 -2
- package/dist/stdio/divider.d.ts +106 -10
- package/dist/stdio/divider.js +10 -0
- package/dist/stdio/divider.js.map +2 -2
- package/dist/stdio/footer.d.ts +70 -3
- package/dist/stdio/footer.js.map +2 -2
- package/dist/stdio/header.d.ts +93 -12
- package/dist/stdio/header.js.map +2 -2
- package/dist/stdio/mask.d.ts +82 -14
- package/dist/stdio/mask.js +25 -4
- package/dist/stdio/mask.js.map +2 -2
- package/dist/stdio/progress.d.ts +112 -15
- package/dist/stdio/progress.js +43 -3
- package/dist/stdio/progress.js.map +2 -2
- package/dist/stdio/prompts.d.ts +95 -5
- package/dist/stdio/prompts.js.map +2 -2
- package/dist/stdio/stderr.d.ts +114 -11
- package/dist/stdio/stderr.js.map +2 -2
- package/dist/stdio/stdout.d.ts +107 -11
- package/dist/stdio/stdout.js.map +2 -2
- package/dist/strings.d.ts +357 -28
- package/dist/strings.js.map +2 -2
- package/dist/suppress-warnings.js.map +2 -2
- package/dist/validation/json-parser.d.ts +226 -7
- package/dist/validation/json-parser.js.map +2 -2
- package/dist/validation/types.d.ts +114 -12
- package/dist/validation/types.js.map +1 -1
- package/package.json +5 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cache-with-ttl.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @fileoverview Generic TTL-based caching utility using cacache.\n *\n * Provides a simple interface for caching data with time-to-live (TTL) expiration.\n * Uses cacache for persistent storage with metadata for TTL tracking.\n *\n * Features:\n * - Automatic expiration based on TTL\n * - In-memory memoization for hot data\n * - Persistent storage across process restarts\n * - Type-safe with generics\n *\n * Usage:\n * ```ts\n * const cache = createTtlCache({ ttl: 5 * 60 * 1000 }) // 5 minutes\n * const data = await cache.getOrFetch('key', async () => fetchData())\n * ```\n */\n\nimport * as cacache from './cacache'\n\nexport interface TtlCacheOptions {\n /**\n * Time-to-live in milliseconds.\n * @default 5 * 60 * 1000 (5 minutes)\n */\n ttl?: number | undefined\n /**\n * Enable in-memory memoization for hot data.\n * @default true\n */\n memoize?: boolean | undefined\n /**\n * Custom cache key prefix.\n * Must not contain wildcards (*).\n * Use clear({ prefix: \"pattern*\" }) for wildcard matching instead.\n *\n * @default 'ttl-cache'\n * @throws {TypeError} If prefix contains wildcards\n *\n * @example\n * // Valid\n * createTtlCache({ prefix: 'socket-sdk' })\n * createTtlCache({ prefix: 'my-app:cache' })\n *\n * @example\n * // Invalid - throws TypeError\n * createTtlCache({ prefix: 'socket-*' })\n */\n prefix?: string | undefined\n}\n\nexport interface TtlCacheEntry<T> {\n data: T\n expiresAt: number\n}\n\nexport interface ClearOptions {\n /**\n * Only clear in-memory memoization cache, not persistent cache.\n * Useful for forcing a refresh of cached data without removing it from disk.\n *\n * @default false\n */\n memoOnly?: boolean | undefined\n}\n\nexport interface TtlCache {\n /**\n * Get cached data without fetching.\n * Returns undefined if not found or expired.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n get<T>(key: string): Promise<T | undefined>\n /**\n * Get all cached entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n *\n * @param pattern - Key pattern (supports * wildcards, or use '*' for all entries)\n * @returns Map of matching entries (key -> value)\n *\n * @example\n * // Get all organization entries\n * const orgs = await cache.getAll<OrgData>('organizations:*')\n * for (const [key, org] of orgs) {\n * console.log(`${key}: ${org.name}`)\n * }\n *\n * @example\n * // Get all entries with this cache's prefix\n * const all = await cache.getAll<any>('*')\n */\n getAll<T>(pattern: string): Promise<Map<string, T>>\n /**\n * Get cached data or fetch and cache if missing/expired.\n *\n * @param key - Cache key (must not contain wildcards)\n */\n getOrFetch<T>(key: string, fetcher: () => Promise<T>): Promise<T>\n /**\n * Set cached data with TTL.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n set<T>(key: string, data: T): Promise<void>\n /**\n * Delete a specific cache entry.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n delete(key: string): Promise<void>\n /**\n * Delete all cache entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n *\n * @param pattern - Key pattern (supports * wildcards, or omit to delete all)\n * @returns Number of entries deleted\n *\n * @example\n * // Delete all entries with this cache's prefix\n * await cache.deleteAll()\n *\n * @example\n * // Delete entries matching prefix\n * await cache.deleteAll('organizations')\n *\n * @example\n * // Delete entries with wildcard pattern\n * await cache.deleteAll('scans:abc*')\n * await cache.deleteAll('npm/lodash/*')\n */\n deleteAll(pattern?: string | undefined): Promise<number>\n /**\n * Clear all cache entries (like Map.clear()).\n * Optionally clear only in-memory cache.\n *\n * @param options - Optional configuration\n * @param options.memoOnly - If true, only clears in-memory cache\n *\n * @example\n * // Clear everything (memory + disk)\n * await cache.clear()\n *\n * @example\n * // Clear only in-memory cache (force refresh)\n * await cache.clear({ memoOnly: true })\n */\n clear(options?: ClearOptions | undefined): Promise<void>\n}\n\n// 5 minutes\nconst DEFAULT_TTL_MS = 5 * 60 * 1000\nconst DEFAULT_PREFIX = 'ttl-cache'\n\n/**\n * Create a TTL-based cache instance.\n */\nexport function createTtlCache(options?: TtlCacheOptions): TtlCache {\n const opts = {\n __proto__: null,\n memoize: true,\n prefix: DEFAULT_PREFIX,\n ttl: DEFAULT_TTL_MS,\n ...options,\n } as Required<TtlCacheOptions>\n\n // Validate prefix does not contain wildcards.\n if (opts.prefix?.includes('*')) {\n throw new TypeError(\n 'Cache prefix cannot contain wildcards (*). Use clear({ prefix: \"pattern*\" }) for wildcard matching.',\n )\n }\n\n // In-memory cache for hot data\n // biome-ignore lint/suspicious/noExplicitAny: Generic cache for any value type.\n const memoCache = new Map<string, TtlCacheEntry<any>>()\n\n // Ensure ttl is defined\n const ttl = opts.ttl ?? DEFAULT_TTL_MS\n\n /**\n * Build full cache key with prefix.\n */\n function buildKey(key: string): string {\n return `${opts.prefix}:${key}`\n }\n\n /**\n * Check if entry is expired.\n */\n function isExpired(\n // biome-ignore lint/suspicious/noExplicitAny: Generic check for any entry type.\n entry: TtlCacheEntry<any>,\n ): boolean {\n return Date.now() > entry.expiresAt\n }\n\n /**\n * Create a matcher function for a pattern (with wildcard support).\n * Returns a function that tests if a key matches the pattern.\n */\n function createMatcher(pattern: string): (key: string) => boolean {\n const fullPattern = buildKey(pattern)\n const hasWildcard = pattern.includes('*')\n\n if (!hasWildcard) {\n // Simple prefix matching (fast path).\n return (key: string) => key.startsWith(fullPattern)\n }\n\n // Wildcard matching with regex.\n const escaped = fullPattern.replaceAll(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n const regexPattern = escaped.replaceAll('*', '.*')\n const regex = new RegExp(`^${regexPattern}`)\n return (key: string) => regex.test(key)\n }\n\n /**\n * Get cached data without fetching.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function get<T>(key: string): Promise<T | undefined> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use getAll(pattern) to retrieve multiple entries.',\n )\n }\n\n const fullKey = buildKey(key)\n\n // Check in-memory cache first.\n if (opts.memoize) {\n const memoEntry = memoCache.get(fullKey)\n if (memoEntry && !isExpired(memoEntry)) {\n return memoEntry.data as T\n }\n // Remove expired memo entry.\n if (memoEntry) {\n memoCache.delete(fullKey)\n }\n }\n\n // Check persistent cache.\n const cacheEntry = await cacache.safeGet(fullKey)\n if (cacheEntry) {\n const entry = JSON.parse(\n cacheEntry.data.toString('utf8'),\n ) as TtlCacheEntry<T>\n if (!isExpired(entry)) {\n // Update in-memory cache.\n if (opts.memoize) {\n memoCache.set(fullKey, entry)\n }\n return entry.data\n }\n // Remove expired entry.\n await cacache.remove(fullKey)\n }\n\n return undefined\n }\n\n /**\n * Get all cached entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n */\n async function getAll<T>(pattern: string): Promise<Map<string, T>> {\n const results = new Map<string, T>()\n const matches = createMatcher(pattern)\n\n // Check in-memory cache first.\n if (opts.memoize) {\n for (const [key, entry] of memoCache.entries()) {\n if (!matches(key)) {\n continue\n }\n\n // Skip if expired.\n if (isExpired(entry)) {\n memoCache.delete(key)\n continue\n }\n\n // Add to results (strip cache prefix from key).\n const originalKey = key.slice((opts.prefix?.length ?? 0) + 1)\n results.set(originalKey, entry.data as T)\n }\n }\n\n // Check persistent cache for entries not in memory.\n const cacheDir = (await import('./paths')).getSocketCacacheDir()\n // biome-ignore lint/suspicious/noExplicitAny: cacache types are incomplete.\n const cacacheModule = (await import('./cacache')) as any\n const stream = cacacheModule.getCacache().ls.stream(cacheDir)\n\n for await (const cacheEntry of stream) {\n // Skip if doesn't match our cache prefix.\n if (!cacheEntry.key.startsWith(`${opts.prefix}:`)) {\n continue\n }\n\n // Skip if doesn't match pattern.\n if (!matches(cacheEntry.key)) {\n continue\n }\n\n // Skip if already in results (from memory).\n const originalKey = cacheEntry.key.slice((opts.prefix?.length ?? 0) + 1)\n if (results.has(originalKey)) {\n continue\n }\n\n // Get entry from cache.\n try {\n const entry = await cacache.safeGet(cacheEntry.key)\n if (!entry) {\n continue\n }\n\n const parsed = JSON.parse(\n entry.data.toString('utf8'),\n ) as TtlCacheEntry<T>\n\n // Skip if expired.\n if (isExpired(parsed)) {\n await cacache.remove(cacheEntry.key)\n continue\n }\n\n // Add to results.\n results.set(originalKey, parsed.data)\n\n // Update in-memory cache.\n if (opts.memoize) {\n memoCache.set(cacheEntry.key, parsed)\n }\n } catch {\n // Ignore parse errors or other issues.\n }\n }\n\n return results\n }\n\n /**\n * Set cached data with TTL.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function set<T>(key: string, data: T): Promise<void> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n\n const fullKey = buildKey(key)\n const entry: TtlCacheEntry<T> = {\n data,\n expiresAt: Date.now() + ttl,\n }\n\n // Update in-memory cache.\n if (opts.memoize) {\n memoCache.set(fullKey, entry)\n }\n\n // Update persistent cache.\n await cacache.put(fullKey, JSON.stringify(entry), {\n metadata: { expiresAt: entry.expiresAt },\n })\n }\n\n /**\n * Get cached data or fetch and cache if missing/expired.\n */\n async function getOrFetch<T>(\n key: string,\n fetcher: () => Promise<T>,\n ): Promise<T> {\n const cached = await get<T>(key)\n if (cached !== undefined) {\n return cached\n }\n\n const data = await fetcher()\n await set(key, data)\n return data\n }\n\n /**\n * Delete a specific cache entry.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function deleteEntry(key: string): Promise<void> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use deleteAll(pattern) to remove multiple entries.',\n )\n }\n\n const fullKey = buildKey(key)\n memoCache.delete(fullKey)\n await cacache.remove(fullKey)\n }\n\n /**\n * Delete all cache entries matching a pattern.\n * Supports wildcards (*) in patterns.\n * Delegates to cacache.clear() which handles pattern matching efficiently.\n */\n async function deleteAll(pattern?: string | undefined): Promise<number> {\n // Build full prefix/pattern by combining cache prefix with optional pattern.\n const fullPrefix = pattern ? `${opts.prefix}:${pattern}` : opts.prefix\n\n // Delete matching in-memory entries.\n if (!pattern) {\n // Delete all in-memory entries for this cache.\n memoCache.clear()\n } else {\n // Delete matching in-memory entries using shared matcher logic.\n const matches = createMatcher(pattern)\n for (const key of memoCache.keys()) {\n if (matches(key)) {\n memoCache.delete(key)\n }\n }\n }\n\n // Delete matching persistent cache entries.\n // Delegate to cacache.clear() which handles wildcards efficiently.\n const removed = await cacache.clear({ prefix: fullPrefix })\n return (removed ?? 0) as number\n }\n\n /**\n * Clear all cache entries (like Map.clear()).\n * Optionally clear only in-memory cache.\n */\n async function clear(options?: ClearOptions | undefined): Promise<void> {\n const opts = { __proto__: null, ...options } as ClearOptions\n\n // Clear in-memory cache.\n memoCache.clear()\n\n // If memoOnly, stop here.\n if (opts.memoOnly) {\n return\n }\n\n // Clear persistent cache.\n await deleteAll()\n }\n\n return {\n clear,\n delete: deleteEntry,\n deleteAll,\n get,\n getAll,\n getOrFetch,\n set,\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,cAAyB;AAwIzB,MAAM,iBAAiB,IAAI,KAAK;AAChC,MAAM,iBAAiB;AAKhB,SAAS,eAAe,SAAqC;AAClE,QAAM,OAAO;AAAA,IACX,WAAW;AAAA,IACX,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,KAAK;AAAA,IACL,GAAG;AAAA,EACL;AAGA,MAAI,KAAK,QAAQ,SAAS,GAAG,GAAG;AAC9B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;
|
|
4
|
+
"sourcesContent": ["/**\n * @fileoverview Generic TTL-based caching utility using cacache.\n *\n * Provides a simple interface for caching data with time-to-live (TTL) expiration.\n * Uses cacache for persistent storage with metadata for TTL tracking.\n *\n * Features:\n * - Automatic expiration based on TTL\n * - In-memory memoization for hot data\n * - Persistent storage across process restarts\n * - Type-safe with generics\n *\n * Usage:\n * ```ts\n * const cache = createTtlCache({ ttl: 5 * 60 * 1000 }) // 5 minutes\n * const data = await cache.getOrFetch('key', async () => fetchData())\n * ```\n */\n\nimport * as cacache from './cacache'\n\nexport interface TtlCacheOptions {\n /**\n * Time-to-live in milliseconds.\n * @default 5 * 60 * 1000 (5 minutes)\n */\n ttl?: number | undefined\n /**\n * Enable in-memory memoization for hot data.\n * @default true\n */\n memoize?: boolean | undefined\n /**\n * Custom cache key prefix.\n * Must not contain wildcards (*).\n * Use clear({ prefix: \"pattern*\" }) for wildcard matching instead.\n *\n * @default 'ttl-cache'\n * @throws {TypeError} If prefix contains wildcards\n *\n * @example\n * // Valid\n * createTtlCache({ prefix: 'socket-sdk' })\n * createTtlCache({ prefix: 'my-app:cache' })\n *\n * @example\n * // Invalid - throws TypeError\n * createTtlCache({ prefix: 'socket-*' })\n */\n prefix?: string | undefined\n}\n\nexport interface TtlCacheEntry<T> {\n data: T\n expiresAt: number\n}\n\nexport interface ClearOptions {\n /**\n * Only clear in-memory memoization cache, not persistent cache.\n * Useful for forcing a refresh of cached data without removing it from disk.\n *\n * @default false\n */\n memoOnly?: boolean | undefined\n}\n\nexport interface TtlCache {\n /**\n * Get cached data without fetching.\n * Returns undefined if not found or expired.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n get<T>(key: string): Promise<T | undefined>\n /**\n * Get all cached entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n *\n * @param pattern - Key pattern (supports * wildcards, or use '*' for all entries)\n * @returns Map of matching entries (key -> value)\n *\n * @example\n * // Get all organization entries\n * const orgs = await cache.getAll<OrgData>('organizations:*')\n * for (const [key, org] of orgs) {\n * console.log(`${key}: ${org.name}`)\n * }\n *\n * @example\n * // Get all entries with this cache's prefix\n * const all = await cache.getAll<any>('*')\n */\n getAll<T>(pattern: string): Promise<Map<string, T>>\n /**\n * Get cached data or fetch and cache if missing/expired.\n *\n * @param key - Cache key (must not contain wildcards)\n */\n getOrFetch<T>(key: string, fetcher: () => Promise<T>): Promise<T>\n /**\n * Set cached data with TTL.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n set<T>(key: string, data: T): Promise<void>\n /**\n * Delete a specific cache entry.\n *\n * @param key - Cache key (must not contain wildcards)\n * @throws {TypeError} If key contains wildcards (*)\n */\n delete(key: string): Promise<void>\n /**\n * Delete all cache entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n *\n * @param pattern - Key pattern (supports * wildcards, or omit to delete all)\n * @returns Number of entries deleted\n *\n * @example\n * // Delete all entries with this cache's prefix\n * await cache.deleteAll()\n *\n * @example\n * // Delete entries matching prefix\n * await cache.deleteAll('organizations')\n *\n * @example\n * // Delete entries with wildcard pattern\n * await cache.deleteAll('scans:abc*')\n * await cache.deleteAll('npm/lodash/*')\n */\n deleteAll(pattern?: string | undefined): Promise<number>\n /**\n * Clear all cache entries (like Map.clear()).\n * Optionally clear only in-memory cache.\n *\n * @param options - Optional configuration\n * @param options.memoOnly - If true, only clears in-memory cache\n *\n * @example\n * // Clear everything (memory + disk)\n * await cache.clear()\n *\n * @example\n * // Clear only in-memory cache (force refresh)\n * await cache.clear({ memoOnly: true })\n */\n clear(options?: ClearOptions | undefined): Promise<void>\n}\n\n// 5 minutes\nconst DEFAULT_TTL_MS = 5 * 60 * 1000\nconst DEFAULT_PREFIX = 'ttl-cache'\n\n/**\n * Create a TTL-based cache instance.\n */\nexport function createTtlCache(options?: TtlCacheOptions): TtlCache {\n const opts = {\n __proto__: null,\n memoize: true,\n prefix: DEFAULT_PREFIX,\n ttl: DEFAULT_TTL_MS,\n ...options,\n } as Required<TtlCacheOptions>\n\n // Validate prefix does not contain wildcards.\n if (opts.prefix?.includes('*')) {\n throw new TypeError(\n 'Cache prefix cannot contain wildcards (*). Use clear({ prefix: \"pattern*\" }) for wildcard matching.',\n )\n }\n\n // In-memory cache for hot data\n const memoCache = new Map<string, TtlCacheEntry<any>>()\n\n // Ensure ttl is defined\n const ttl = opts.ttl ?? DEFAULT_TTL_MS\n\n /**\n * Build full cache key with prefix.\n */\n function buildKey(key: string): string {\n return `${opts.prefix}:${key}`\n }\n\n /**\n * Check if entry is expired.\n */\n function isExpired(entry: TtlCacheEntry<any>): boolean {\n return Date.now() > entry.expiresAt\n }\n\n /**\n * Create a matcher function for a pattern (with wildcard support).\n * Returns a function that tests if a key matches the pattern.\n */\n function createMatcher(pattern: string): (key: string) => boolean {\n const fullPattern = buildKey(pattern)\n const hasWildcard = pattern.includes('*')\n\n if (!hasWildcard) {\n // Simple prefix matching (fast path).\n return (key: string) => key.startsWith(fullPattern)\n }\n\n // Wildcard matching with regex.\n const escaped = fullPattern.replaceAll(/[.+?^${}()|[\\]\\\\]/g, '\\\\$&')\n const regexPattern = escaped.replaceAll('*', '.*')\n const regex = new RegExp(`^${regexPattern}`)\n return (key: string) => regex.test(key)\n }\n\n /**\n * Get cached data without fetching.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function get<T>(key: string): Promise<T | undefined> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use getAll(pattern) to retrieve multiple entries.',\n )\n }\n\n const fullKey = buildKey(key)\n\n // Check in-memory cache first.\n if (opts.memoize) {\n const memoEntry = memoCache.get(fullKey)\n if (memoEntry && !isExpired(memoEntry)) {\n return memoEntry.data as T\n }\n // Remove expired memo entry.\n if (memoEntry) {\n memoCache.delete(fullKey)\n }\n }\n\n // Check persistent cache.\n const cacheEntry = await cacache.safeGet(fullKey)\n if (cacheEntry) {\n const entry = JSON.parse(\n cacheEntry.data.toString('utf8'),\n ) as TtlCacheEntry<T>\n if (!isExpired(entry)) {\n // Update in-memory cache.\n if (opts.memoize) {\n memoCache.set(fullKey, entry)\n }\n return entry.data\n }\n // Remove expired entry.\n await cacache.remove(fullKey)\n }\n\n return undefined\n }\n\n /**\n * Get all cached entries matching a pattern.\n * Supports wildcards (*) for flexible matching.\n */\n async function getAll<T>(pattern: string): Promise<Map<string, T>> {\n const results = new Map<string, T>()\n const matches = createMatcher(pattern)\n\n // Check in-memory cache first.\n if (opts.memoize) {\n for (const [key, entry] of memoCache.entries()) {\n if (!matches(key)) {\n continue\n }\n\n // Skip if expired.\n if (isExpired(entry)) {\n memoCache.delete(key)\n continue\n }\n\n // Add to results (strip cache prefix from key).\n const originalKey = key.slice((opts.prefix?.length ?? 0) + 1)\n results.set(originalKey, entry.data as T)\n }\n }\n\n // Check persistent cache for entries not in memory.\n const cacheDir = (await import('./paths')).getSocketCacacheDir()\n const cacacheModule = (await import('./cacache')) as any\n const stream = cacacheModule.getCacache().ls.stream(cacheDir)\n\n for await (const cacheEntry of stream) {\n // Skip if doesn't match our cache prefix.\n if (!cacheEntry.key.startsWith(`${opts.prefix}:`)) {\n continue\n }\n\n // Skip if doesn't match pattern.\n if (!matches(cacheEntry.key)) {\n continue\n }\n\n // Skip if already in results (from memory).\n const originalKey = cacheEntry.key.slice((opts.prefix?.length ?? 0) + 1)\n if (results.has(originalKey)) {\n continue\n }\n\n // Get entry from cache.\n try {\n const entry = await cacache.safeGet(cacheEntry.key)\n if (!entry) {\n continue\n }\n\n const parsed = JSON.parse(\n entry.data.toString('utf8'),\n ) as TtlCacheEntry<T>\n\n // Skip if expired.\n if (isExpired(parsed)) {\n await cacache.remove(cacheEntry.key)\n continue\n }\n\n // Add to results.\n results.set(originalKey, parsed.data)\n\n // Update in-memory cache.\n if (opts.memoize) {\n memoCache.set(cacheEntry.key, parsed)\n }\n } catch {\n // Ignore parse errors or other issues.\n }\n }\n\n return results\n }\n\n /**\n * Set cached data with TTL.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function set<T>(key: string, data: T): Promise<void> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Wildcards are only supported in clear({ prefix: \"pattern*\" }).',\n )\n }\n\n const fullKey = buildKey(key)\n const entry: TtlCacheEntry<T> = {\n data,\n expiresAt: Date.now() + ttl,\n }\n\n // Update in-memory cache.\n if (opts.memoize) {\n memoCache.set(fullKey, entry)\n }\n\n // Update persistent cache.\n await cacache.put(fullKey, JSON.stringify(entry), {\n metadata: { expiresAt: entry.expiresAt },\n })\n }\n\n /**\n * Get cached data or fetch and cache if missing/expired.\n */\n async function getOrFetch<T>(\n key: string,\n fetcher: () => Promise<T>,\n ): Promise<T> {\n const cached = await get<T>(key)\n if (cached !== undefined) {\n return cached\n }\n\n const data = await fetcher()\n await set(key, data)\n return data\n }\n\n /**\n * Delete a specific cache entry.\n *\n * @throws {TypeError} If key contains wildcards (*)\n */\n async function deleteEntry(key: string): Promise<void> {\n if (key.includes('*')) {\n throw new TypeError(\n 'Cache key cannot contain wildcards (*). Use deleteAll(pattern) to remove multiple entries.',\n )\n }\n\n const fullKey = buildKey(key)\n memoCache.delete(fullKey)\n await cacache.remove(fullKey)\n }\n\n /**\n * Delete all cache entries matching a pattern.\n * Supports wildcards (*) in patterns.\n * Delegates to cacache.clear() which handles pattern matching efficiently.\n */\n async function deleteAll(pattern?: string | undefined): Promise<number> {\n // Build full prefix/pattern by combining cache prefix with optional pattern.\n const fullPrefix = pattern ? `${opts.prefix}:${pattern}` : opts.prefix\n\n // Delete matching in-memory entries.\n if (!pattern) {\n // Delete all in-memory entries for this cache.\n memoCache.clear()\n } else {\n // Delete matching in-memory entries using shared matcher logic.\n const matches = createMatcher(pattern)\n for (const key of memoCache.keys()) {\n if (matches(key)) {\n memoCache.delete(key)\n }\n }\n }\n\n // Delete matching persistent cache entries.\n // Delegate to cacache.clear() which handles wildcards efficiently.\n const removed = await cacache.clear({ prefix: fullPrefix })\n return (removed ?? 0) as number\n }\n\n /**\n * Clear all cache entries (like Map.clear()).\n * Optionally clear only in-memory cache.\n */\n async function clear(options?: ClearOptions | undefined): Promise<void> {\n const opts = { __proto__: null, ...options } as ClearOptions\n\n // Clear in-memory cache.\n memoCache.clear()\n\n // If memoOnly, stop here.\n if (opts.memoOnly) {\n return\n }\n\n // Clear persistent cache.\n await deleteAll()\n }\n\n return {\n clear,\n delete: deleteEntry,\n deleteAll,\n get,\n getAll,\n getOrFetch,\n set,\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["options", "opts"]
|
|
7
7
|
}
|
package/dist/dlx.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/dlx.ts"],
|
|
4
|
-
"sourcesContent": ["/** @fileoverview DLX (execute package) utilities for Socket ecosystem shared installations. */\n\nimport { existsSync, promises as fs } from 'node:fs'\n\nimport { readDirNamesSync, safeDelete } from './fs'\nimport { normalizePath } from './path'\nimport { getSocketDlxDir } from './paths'\nimport { pEach } from './promises'\n\nlet _path: typeof import('path') | undefined\n/**\n * Lazily load the path module to avoid Webpack errors.\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getPath() {\n if (_path === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _path = /*@__PURE__*/ require('node:path')\n }\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,qBAA2C;AAE3C,gBAA6C;AAC7C,kBAA8B;AAC9B,mBAAgC;AAChC,sBAAsB;AAEtB,IAAI;AAAA;AAMJ,SAAS,UAAU;AACjB,MAAI,UAAU,QAAW;AAGvB,YAAsB,QAAQ,WAAW;AAAA,EAC3C;
|
|
4
|
+
"sourcesContent": ["/** @fileoverview DLX (execute package) utilities for Socket ecosystem shared installations. */\n\nimport { existsSync, promises as fs } from 'node:fs'\n\nimport { readDirNamesSync, safeDelete } from './fs'\nimport { normalizePath } from './path'\nimport { getSocketDlxDir } from './paths'\nimport { pEach } from './promises'\n\nlet _path: typeof import('path') | undefined\n/**\n * Lazily load the path module to avoid Webpack errors.\n * @private\n */\n/*@__NO_SIDE_EFFECTS__*/\nfunction getPath() {\n if (_path === undefined) {\n // Use non-'node:' prefixed require to avoid Webpack errors.\n\n _path = /*@__PURE__*/ require('node:path')\n }\n return _path!\n}\n\n/**\n * Clear all DLX package installations.\n */\nexport async function clearDlx(): Promise<void> {\n const packages = await listDlxPackagesAsync()\n await pEach(packages, pkg => removeDlxPackage(pkg))\n}\n\n/**\n * Clear all DLX package installations synchronously.\n */\nexport function clearDlxSync(): void {\n const packages = listDlxPackages()\n for (const pkg of packages) {\n removeDlxPackageSync(pkg)\n }\n}\n\n/**\n * Check if the DLX directory exists.\n */\nexport function dlxDirExists(): boolean {\n return existsSync(getSocketDlxDir())\n}\n\n/**\n * Check if the DLX directory exists asynchronously.\n */\nexport async function dlxDirExistsAsync(): Promise<boolean> {\n try {\n await fs.access(getSocketDlxDir())\n return true\n } catch {\n return false\n }\n}\n\n/**\n * Ensure the DLX directory exists, creating it if necessary.\n */\nexport async function ensureDlxDir(): Promise<void> {\n await fs.mkdir(getSocketDlxDir(), { recursive: true })\n}\n\n/**\n * Ensure the DLX directory exists synchronously, creating it if necessary.\n */\nexport function ensureDlxDirSync(): void {\n const { mkdirSync } = require('node:fs')\n mkdirSync(getSocketDlxDir(), { recursive: true })\n}\n\n/**\n * Get the installed package directory within DLX node_modules.\n */\nexport function getDlxInstalledPackageDir(packageName: string): string {\n const path = getPath()\n return normalizePath(\n path.join(getDlxPackageNodeModulesDir(packageName), packageName),\n )\n}\n\n/**\n * Get the DLX installation directory for a specific package.\n */\nexport function getDlxPackageDir(packageName: string): string {\n const path = getPath()\n return normalizePath(path.join(getSocketDlxDir(), packageName))\n}\n\n/**\n * Get the package.json path for a DLX installed package.\n */\nexport function getDlxPackageJsonPath(packageName: string): string {\n const path = getPath()\n return normalizePath(\n path.join(getDlxInstalledPackageDir(packageName), 'package.json'),\n )\n}\n\n/**\n * Get the node_modules directory for a DLX package installation.\n */\nexport function getDlxPackageNodeModulesDir(packageName: string): string {\n const path = getPath()\n return normalizePath(path.join(getDlxPackageDir(packageName), 'node_modules'))\n}\n\n/**\n * Check if a package is installed in DLX.\n */\nexport function isDlxPackageInstalled(packageName: string): boolean {\n return existsSync(getDlxInstalledPackageDir(packageName))\n}\n\n/**\n * Check if a package is installed in DLX asynchronously.\n */\nexport async function isDlxPackageInstalledAsync(\n packageName: string,\n): Promise<boolean> {\n try {\n await fs.access(getDlxInstalledPackageDir(packageName))\n return true\n } catch {\n return false\n }\n}\n\n/**\n * List all packages installed in DLX.\n */\nexport function listDlxPackages(): string[] {\n try {\n return readDirNamesSync(getSocketDlxDir(), { sort: true })\n } catch {\n return []\n }\n}\n\n/**\n * List all packages installed in DLX asynchronously.\n */\nexport async function listDlxPackagesAsync(): Promise<string[]> {\n try {\n const entries = await fs.readdir(getSocketDlxDir(), {\n withFileTypes: true,\n })\n return entries\n .filter(e => e.isDirectory())\n .map(e => e.name)\n .sort()\n } catch {\n return []\n }\n}\n\n/**\n * Remove a DLX package installation.\n */\nexport async function removeDlxPackage(packageName: string): Promise<void> {\n const packageDir = getDlxPackageDir(packageName)\n try {\n await safeDelete(packageDir, { recursive: true, force: true })\n } catch (e) {\n throw new Error(`Failed to remove DLX package \"${packageName}\"`, {\n cause: e,\n })\n }\n}\n\n/**\n * Remove a DLX package installation synchronously.\n */\nexport function removeDlxPackageSync(packageName: string): void {\n const { rmSync } = require('node:fs')\n const packageDir = getDlxPackageDir(packageName)\n try {\n rmSync(packageDir, { recursive: true, force: true })\n } catch (e) {\n throw new Error(`Failed to remove DLX package \"${packageName}\"`, {\n cause: e,\n })\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["fs"]
|
|
7
7
|
}
|
|
@@ -8,7 +8,6 @@ declare namespace Cacache {
|
|
|
8
8
|
interface PutOptions {
|
|
9
9
|
integrity?: string | undefined
|
|
10
10
|
size?: number | undefined
|
|
11
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
12
11
|
metadata?: any | undefined
|
|
13
12
|
memoize?: boolean | undefined
|
|
14
13
|
}
|
|
@@ -17,7 +16,6 @@ declare namespace Cacache {
|
|
|
17
16
|
data: Buffer
|
|
18
17
|
integrity: string
|
|
19
18
|
key: string
|
|
20
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
21
19
|
metadata?: any | undefined
|
|
22
20
|
path: string
|
|
23
21
|
size: number
|
|
@@ -30,7 +28,6 @@ declare namespace Cacache {
|
|
|
30
28
|
path: string
|
|
31
29
|
time: number
|
|
32
30
|
size: number
|
|
33
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
34
31
|
metadata?: any | undefined
|
|
35
32
|
}
|
|
36
33
|
}
|
|
@@ -79,14 +76,10 @@ declare const cacache: {
|
|
|
79
76
|
tmp: {
|
|
80
77
|
withTmp: (
|
|
81
78
|
cache: string,
|
|
82
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
83
79
|
opts: any,
|
|
84
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
85
80
|
callback: (tmpDirPath: string) => Promise<any>,
|
|
86
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
87
81
|
) => Promise<any>
|
|
88
82
|
}
|
|
89
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
90
83
|
[key: string]: any
|
|
91
84
|
}
|
|
92
85
|
|
package/dist/external/debug.d.ts
CHANGED
|
@@ -7,16 +7,13 @@ interface Debug {
|
|
|
7
7
|
showHidden?: boolean | null
|
|
8
8
|
depth?: number | boolean | null
|
|
9
9
|
colors?: boolean
|
|
10
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
11
10
|
[key: string]: any
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
interface DebugInstance {
|
|
16
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
17
15
|
(...args: any[]): void
|
|
18
16
|
enabled: boolean
|
|
19
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
20
17
|
log: (...args: any[]) => void
|
|
21
18
|
namespace: string
|
|
22
19
|
}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
declare class RegistryFetcher {
|
|
2
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
3
2
|
constructor(spec: string, opts?: any)
|
|
4
3
|
cache: string
|
|
5
4
|
}
|
|
6
5
|
|
|
7
6
|
declare const pacote: {
|
|
8
7
|
RegistryFetcher: typeof RegistryFetcher
|
|
9
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
10
8
|
extract(spec: string, dest: string, opts?: any): Promise<any>
|
|
11
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
12
9
|
manifest(spec: string, opts?: any): Promise<any>
|
|
13
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
14
10
|
packument(spec: string, opts?: any): Promise<any>
|
|
15
|
-
// biome-ignore lint/suspicious/noExplicitAny: External third-party type definition
|
|
16
11
|
tarball(spec: string, opts?: any): Promise<Buffer>
|
|
17
12
|
}
|
|
18
13
|
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Bundled from validate-npm-package-name
|
|
3
3
|
* This is a zero-dependency bundle created by esbuild.
|
|
4
4
|
*/
|
|
5
|
-
var
|
|
5
|
+
"use strict";var l=Object.defineProperty;var o=(n,t)=>l(n,"name",{value:t,configurable:!0});var{builtinModules:u}=require("module"),h=new RegExp("^(?:@([^/]+?)[/])?([^/]+?)$"),f=["node_modules","favicon.ico"];function p(n){var t=[],e=[];if(n===null)return e.push("name cannot be null"),r(t,e);if(n===void 0)return e.push("name cannot be undefined"),r(t,e);if(typeof n!="string")return e.push("name must be a string"),r(t,e);if(n.length||e.push("name length must be greater than zero"),n.startsWith(".")&&e.push("name cannot start with a period"),n.match(/^_/)&&e.push("name cannot start with an underscore"),n.trim()!==n&&e.push("name cannot contain leading or trailing spaces"),f.forEach(function(c){n.toLowerCase()===c&&e.push(c+" is not a valid package name")}),u.includes(n.toLowerCase())&&t.push(n+" is a core module name"),n.length>214&&t.push("name can no longer contain more than 214 characters"),n.toLowerCase()!==n&&t.push("name can no longer contain capital letters"),/[~'!()*]/.test(n.split("/").slice(-1)[0])&&t.push(`name can no longer contain special characters ("~'!()*")`),encodeURIComponent(n)!==n){var a=n.match(h);if(a){var s=a[1],i=a[2];if(i.startsWith(".")&&e.push("name cannot start with a period"),encodeURIComponent(s)===s&&encodeURIComponent(i)===i)return r(t,e)}e.push("name can only contain URL-friendly characters")}return r(t,e)}o(p,"validate");var r=o(function(n,t){var e={validForNewPackages:t.length===0&&n.length===0,validForOldPackages:t.length===0,warnings:n,errors:t};return e.warnings.length||delete e.warnings,e.errors.length||delete e.errors,e},"done");module.exports=p;
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
* Bundled from yoctocolors-cjs
|
|
3
3
|
* This is a zero-dependency bundle created by esbuild.
|
|
4
4
|
*/
|
|
5
|
-
var
|
|
5
|
+
var c=Object.defineProperty;var b=(o,i)=>c(o,"name",{value:i,configurable:!0});var d=require("node:tty"),u=d?.WriteStream?.prototype?.hasColors?.()??!1,t=b((o,i)=>{if(!u)return h=>h;let s=`\x1B[${o}m`,r=`\x1B[${i}m`;return h=>{let n=h+"",g=n.indexOf(r);if(g===-1)return s+n+r;let a=s,l=0,B=(i===22?r:"")+s;for(;g!==-1;)a+=n.slice(l,g)+B,l=g+r.length,g=n.indexOf(r,l);return a+=n.slice(l)+r,a}},"format"),e={};e.reset=t(0,0);e.bold=t(1,22);e.dim=t(2,22);e.italic=t(3,23);e.underline=t(4,24);e.overline=t(53,55);e.inverse=t(7,27);e.hidden=t(8,28);e.strikethrough=t(9,29);e.black=t(30,39);e.red=t(31,39);e.green=t(32,39);e.yellow=t(33,39);e.blue=t(34,39);e.magenta=t(35,39);e.cyan=t(36,39);e.white=t(37,39);e.gray=t(90,39);e.bgBlack=t(40,49);e.bgRed=t(41,49);e.bgGreen=t(42,49);e.bgYellow=t(43,49);e.bgBlue=t(44,49);e.bgMagenta=t(45,49);e.bgCyan=t(46,49);e.bgWhite=t(47,49);e.bgGray=t(100,49);e.redBright=t(91,39);e.greenBright=t(92,39);e.yellowBright=t(93,39);e.blueBright=t(94,39);e.magentaBright=t(95,39);e.cyanBright=t(96,39);e.whiteBright=t(97,39);e.bgRedBright=t(101,49);e.bgGreenBright=t(102,49);e.bgYellowBright=t(103,49);e.bgBlueBright=t(104,49);e.bgMagentaBright=t(105,49);e.bgCyanBright=t(106,49);e.bgWhiteBright=t(107,49);module.exports=e;
|