
Security News
NIST Officially Stops Enriching Most CVEs as Vulnerability Volume Skyrockets
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.
advanced-js-kit
Advanced tools
Modern TypeScript utility library with tree-shaking support - Array, String, Number, Network, Sleep, and JWT utilities for JavaScript and TypeScript projects
Modern TypeScript utility library with tree-shaking support - Comprehensive collection of array, string, number, network, sleep, and JWT utilities for JavaScript and TypeScript projects.
A collection of advanced JavaScript/TypeScript utility functions for modern development.
This library is designed to work across multiple JavaScript environments with platform-specific exports:
advanced-js-kit - Universal utilities that work in Node.js, Browser, and Web Workersadvanced-js-kit/node - Node.js-only utilities + all universal utilitiesadvanced-js-kit/browser - Browser-optimized utilities + all universal utilitiesadvanced-js-kit/module/function for maximum tree-shakingBreaking Change (v1.1.0): Node.js-only modules (
network,jwt) are no longer exported from the main package. Useadvanced-js-kit/nodeinstead.
npm install advanced-js-kit
Alternative package managers:
# Yarn
yarn add advanced-js-kit
# pnpm
pnpm add advanced-js-kit
# Bun
bun add advanced-js-kit
For maximum compatibility, import universal modules that work in Node.js, Browser, and Web Workers:
import { chunk, capitalize, clamp, sleep, convertToSeconds } from 'advanced-js-kit';
// Array utilities
const chunkedArray = chunk([1, 2, 3, 4, 5], 2);
// Result: [[1, 2], [3, 4], [5]]
// String utilities
const capitalizedString = capitalize('hello world');
// Result: "Hello world"
// Number utilities
const clampedNumber = clamp(15, 0, 10);
// Result: 10
// Sleep utilities
await sleep({ seconds: 2, milliseconds: 500 }); // Sleep for 2.5 seconds
// Time utilities
const seconds = convertToSeconds({ minutes: 5, seconds: 30 });
// Result: 330 (seconds)
For Node.js-specific functionality (network operations, JWT handling):
import { isPortInUse, findAvailablePort, jwtSign, jwtVerify } from 'advanced-js-kit/node';
// Network utilities (Node.js only)
const portInUse = await isPortInUse(3000);
const availablePort = await findAvailablePort({ startPort: 8000 });
// JWT utilities (Node.js only)
const token = jwtSign({ userId: '123' }, 'your-secret-key');
const payload = jwtVerify(token, 'your-secret-key');
// Note: Universal utilities are also available from /node for convenience
import { chunk, capitalize } from 'advanced-js-kit/node';
For browser-specific optimizations (currently same as universal, but future-proof):
import { chunk, capitalize, clamp, sleep, convertToSeconds } from 'advanced-js-kit/browser';
// Currently includes all universal utilities
// Future browser-specific features will be added here
import {
isNodeEnvironment,
EnvironmentError
} from 'advanced-js-kit';
// Check environment before using Node.js-only features
if (isNodeEnvironment()) {
// Use Node.js-specific imports
const { isPortInUse } = await import('advanced-js-kit/node');
const { jwtSign } = await import('advanced-js-kit/node');
const portInUse = await isPortInUse(3000);
const token = jwtSign({ userId: '123' }, 'secret');
} else {
console.log('Using browser-compatible features only');
// Use browser/universal imports
const { chunk, capitalize } = await import('advanced-js-kit/browser');
}
import { jwtVerify, EnvironmentError } from 'advanced-js-kit/node';
try {
const payload = jwtVerify(token, secret);
} catch (error) {
if (error instanceof EnvironmentError) {
console.log(`Feature not available: ${error.message}`);
console.log(`Required: ${error.requiredEnvironment}, Current: ${error.currentEnvironment}`);
}
}
You can also import individual functions for optimal tree-shaking:
// Universal utilities - individual imports
import { chunk } from 'advanced-js-kit/array/chunk';
import { capitalize } from 'advanced-js-kit/string/capitalize';
import { clamp } from 'advanced-js-kit/number/clamp';
import { sleep } from 'advanced-js-kit/sleep/sleep';
import { convertToSeconds } from 'advanced-js-kit/time/time';
// Node.js-only utilities - individual imports
import { isPortInUse, findAvailablePort } from 'advanced-js-kit/network/port';
import { jwtSign, jwtVerify } from 'advanced-js-kit/jwt/jwt';
// Platform-specific bundles (recommended)
import { chunk, capitalize, clamp } from 'advanced-js-kit'; // Universal only
import { isPortInUse, jwtSign, chunk } from 'advanced-js-kit/node'; // Node.js + Universal
import { chunk, capitalize, sleep } from 'advanced-js-kit/browser'; // Browser + Universal
| Module | Functions | Description |
|---|---|---|
array/chunk | chunk | Split arrays into chunks of specified size |
string/capitalize | capitalize, capitalizeWords | String capitalization utilities |
number/clamp | clamp, inRange | Number range utilities |
sleep/sleep | sleep | Promise-based sleep with multiple time units |
time/time | convertToSeconds | Time conversion utilities |
utils/environment | isNodeEnvironment, isBrowserEnvironment, getEnvironment | Environment detection |
| Module | Functions | Description |
|---|---|---|
network/port | isPortInUse, isPortAvailable, findAvailablePort | Port checking and management |
jwt/jwt | jwtSign, jwtVerify | JSON Web Token operations |
Note: Node.js-only modules will throw
EnvironmentErrorwhen used in non-Node.js environments.
For optimal compatibility with this package, ensure your tsconfig.json uses modern module resolution:
{
"compilerOptions": {
"moduleResolution": "bundler", // or "node16"/"nodenext"
"module": "ESNext", // or "Node16"
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"skipLibCheck": true
}
}
If you encounter module resolution errors like:
Cannot find module 'advanced-js-kit/string/capitalize' or its corresponding type declarations
Try these solutions:
example-tsconfig-for-consumers.json in this packageimport { capitalize } from "advanced-js-kit/dist/string/capitalize.js";
This package provides excellent IDE support with:
For comprehensive documentation with examples, advanced usage patterns, and best practices, see the individual package documentation:
chunk<T>(array: T[], size: number): T[][] - Splits an array into chunks of a specified sizecapitalize(str: string): string - Capitalizes the first letter of a stringcapitalizeWords(str: string): string - Capitalizes the first letter of each wordclamp(number: number, lower: number, upper: number): number - Clamps a number within boundsinRange(number: number, lower: number, upper: number): boolean - Checks if number is in rangesleep(params: TSleepParams): Promise<void> - Advanced sleep with flexible optionssleepMs(ms: number): Promise<void> - Sleep for millisecondssleepSeconds(seconds: number): Promise<void> - Sleep for secondssleepMinutes(minutes: number): Promise<void> - Sleep for minutessleepUntil(unixTimestamp: number): Promise<void> - Sleep until timestampisPortInUse(port: number, options?): Promise<boolean> - Check if port is in useisPortAvailable(port: number, options?): Promise<boolean> - Check if port is availablefindAvailablePort(options?): Promise<number> - Find an available portcheckMultiplePorts(ports: number[], options?): Promise<Map<number, boolean>> - Check multiple portswaitForPort(port: number, state: string, options?): Promise<void> - Wait for port statejwtSign<T>(payload: T, secret: string, options?): Promise<string> - Sign JWT tokenjwtVerify<T>(token: string, secret: string, options?): Promise<T | null> - Verify JWT tokenjwtDecode<T>(token: string, options?): T | null - Decode JWT without verificationjwtIsExpired(token: string): boolean | null - Check if token is expiredjwtTimeUntilExpiry(token: string): number | null - Get time until expiration# Install dependencies
npm install
# Build the project
npm run build
# Watch mode for development
npm run dev
# Type checking
npm run type-check
# Run tests
npm run test
MIT
FAQs
Modern TypeScript utility library with tree-shaking support - Array, String, Number, Network, Sleep, and JWT utilities for JavaScript and TypeScript projects
The npm package advanced-js-kit receives a total of 30 weekly downloads. As such, advanced-js-kit popularity was classified as not popular.
We found that advanced-js-kit demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.