
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
@hyperdrive.bot/serverless-utils
Advanced tools
Common utilities for DevSquad serverless plugins and tools
Common utilities for DevSquad Serverless Framework plugins and tools. This package extracts shared functionality from composer, module-registry, artifact-manager, and arn-prefixer to eliminate code duplication and provide consistent behavior.
npm install @hyperdrive.bot/serverless-utils
Create consistent, colorful logs across all serverless plugins:
import { createLogger } from '@hyperdrive.bot/serverless-utils'
const logger = createLogger(serverless, 'my-plugin')
logger.info('Processing started')
logger.success('Operation completed successfully')
logger.warning('Configuration missing')
logger.error('Deployment failed')
logger.step('Processing next phase')
// Structured sections
logger.section('Deployment Summary')
logger.sectionItem('Service', serviceName, 'cyan')
logger.sectionItem('Functions', functionCount.toString(), 'green')
logger.sectionEnd()
Handle Serverless Framework variables across all versions:
import { resolveVarsSafely, detectServerlessVersion } from '@hyperdrive.bot/serverless-utils'
const version = detectServerlessVersion(serverless)
const resolved = await resolveVarsSafely(serverless, {
tableName: '${arn:prefix}-users',
bucketName: '${env:BUCKET_NAME}'
})
Merge and manipulate objects safely:
import { deepMerge, isPlainObject, chunkArray } from '@hyperdrive.bot/serverless-utils'
const merged = deepMerge(target, source)
const batches = chunkArray(largeArray, 25) // For DynamoDB batch operations
const resourceName = sanitizeResourceName('my-resource-name!')
Parse YAML with CloudFormation intrinsic functions:
import { loadCloudFormationYaml, cloudFormationSchema } from '@hyperdrive.bot/serverless-utils'
const config = loadCloudFormationYaml('./serverless.yml')
// Handles !Ref, !GetAtt, !Sub, !Join, etc.
Use standardized build configurations:
// tsup.config.ts
import { createTSUpConfig } from '@hyperdrive.bot/serverless-utils/config'
export default createTSUpConfig({
nodeTarget: 'node16',
externalDeps: ['serverless', 'custom-dep']
})
// tsconfig.json
{
"extends": "@hyperdrive.bot/serverless-utils/src/config/tsconfig.base.json"
}
// .eslintrc.json
{
"extends": ["@hyperdrive.bot/serverless-utils/src/config/eslint.base.json"]
}
Before:
import { EnhancedLogger } from './logger'
import { resolveVarsSafely, deepMerge } from './utils'
const logger = new EnhancedLogger(serverless)
After:
import { createLogger, resolveVarsSafely, deepMerge } from '@hyperdrive.bot/serverless-utils'
const logger = createLogger(serverless, 'composer')
Before:
// Custom logger implementation
const logger = createModuleRegistryLogger('my-handler')
After:
import { createLogger } from '@hyperdrive.bot/serverless-utils'
const logger = createLogger({ cli: { log: console.log } }, 'module-registry')
info(message, color?) - Info message with optional colorsuccess(message) - Green success message with checkmarkwarning(message) - Yellow warning message with warning iconerror(message) - Red error message with X iconstep(message) - Blue step message with arrowsection(title) - Formatted section headersectionItem(key, value, color?) - Indented section itemsectionEnd() - Section footerprogress(category, fileCount) - Processing progressvariableResolution(category, variableCount) - Variable resolution progressdeepMerge(target, source) - Deep merge objectsisPlainObject(obj) - Check if object is plainchunkArray(array, size) - Split array into chunkssanitizeResourceName(name) - CloudFormation-safe namesdeepClone(obj) - Deep clone objectsisEmpty(obj) - Check if object/array is emptyresolveVarsSafely(serverless, payload) - Cross-version variable resolutiondetectServerlessVersion(serverless) - Detect v2 vs v3+resolveVariablesManually(payload, sources, serverless) - Manual resolutionMIT License - see the LICENSE file for details.
FAQs
Common utilities for DevSquad serverless plugins and tools
We found that @hyperdrive.bot/serverless-utils 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
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.