@webiny/stdlib
v0.0.3
Published
Standard library for Webiny — platform-agnostic, Node.js, and browser utilities
Downloads
1,579
Readme
@webiny/stdlib
Opinionated standard library for Webiny. This is an internal package — we make breaking changes freely and do not follow semver for external consumers.
Design
Services are built on a lightweight dependency injection system. Each feature follows the same three-layer pattern: an abstraction (DI token + interface), an implementation (concrete class), and a feature (registers the implementation in the DI container). This keeps code testable and lets different environments (Node.js, browser) swap implementations behind the same interface.
Subpath exports
The package is ESM-only and ships three subpath exports. Because each is a separate entry point, Node.js-specific code is never bundled into a browser build and vice versa — unless you explicitly import the wrong subpath.
| Import | Environment | Description |
| ------------------------ | ----------- | --------------------------- |
| @webiny/stdlib | Any | Platform-agnostic utilities |
| @webiny/stdlib/node | Node.js | Node.js-specific tools |
| @webiny/stdlib/browser | Browser | Browser-specific tools |
@webiny/stdlib — Common
| Feature | Description |
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
| Result / ResultAsync | Typed success/failure values — synchronous and async |
| BaseError | Abstract base class for typed domain errors |
| Logger / ConsoleLogger / ConsoleLoggerFeature | Logging abstraction + console implementation — docs |
| Cache / MemoryCacheFeature | Synchronous key-value cache — docs |
| AsyncCache / AsyncMemoryCacheFeature | Async key-value cache — docs |
| immutableGet / immutableSet / immutableDelete / mutableSet / mutableDelete | Dot-notation get/set/delete on nested objects — docs |
| toBoolean / isTruthy / isFalsy | Semantic boolean coercion — docs |
@webiny/stdlib/node — Node.js
| Feature | Description |
| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| FileTool / FileToolFeature | Read, write, copy, remove files — docs |
| DirectoryTool / DirectoryToolFeature | Create, read, remove, copy, glob directories — docs |
| JsonFileTool / JsonFileToolFeature | Read and write JSON files with optional schema validation — docs |
| PathTool / PathToolFeature | node:path wrapper + resolvePackageFile for package-relative paths — docs |
| PinoLogger / PinoLoggerFeature | pino-based Logger implementation — docs |
| NdJsonReaderTool / NdJsonReaderToolFeature | Parse NDJSON from files, streams, or in-memory lines with checkpoint support — docs |
| ReadStreamFactory / ReadStreamFactoryFeature | Disposable node:fs read streams via AsyncDisposable — docs |
| PackageJsonFileTool / PackageJsonFileToolFeature | Read, validate, mutate, and write package.json files — docs |
@webiny/stdlib/browser — Browser
| Feature | Description |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| LocalStorageCacheFeature | Cache implementation backed by window.localStorage — docs |
Versioning
Versioning and publishing are managed by Changesets. The version in package.json is the real published version, bumped automatically when a version PR is merged. To record a version bump, run yarn changeset before opening a PR. There are no major version bumps — breaking changes may land on minor releases.
