# @webiny/stdlib

> Standard library for Webiny — platform-agnostic, Node.js, and browser utilities

Latest version **0.0.19** (published 2026-09-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install @webiny/stdlib
pnpm add @webiny/stdlib
yarn add @webiny/stdlib
bun add @webiny/stdlib
```

Provides the command `stdlib-mcp`.

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads; pre 1.0.

## Facts

| | |
|---|---|
| Version | 0.0.19 |
| Published | 2026-09-24 |
| First published | 2026-05-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 12 |
| Unpacked size | 433.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | webiny |

## Links

- npm: https://www.npmjs.com/package/@webiny/stdlib
- npm.io page: https://npm.io/package/@webiny/stdlib

## Dependencies (12)

- [zod](https://npm.io/package/zod.md) ^4.6.5
- [pino](https://npm.io/package/pino.md) ^10.3.1
- [nanoid](https://npm.io/package/nanoid.md) ^6.0.1
- [dot-prop](https://npm.io/package/dot-prop.md) ^10.2.0
- [type-fest](https://npm.io/package/type-fest.md) ^5.10.0
- [@webiny/di](https://npm.io/package/@webiny/di.md) ^1.1.0
- [tinyglobby](https://npm.io/package/tinyglobby.md) ^0.2.17
- [pino-pretty](https://npm.io/package/pino-pretty.md) ^13.1.3
- [bson-objectid](https://npm.io/package/bson-objectid.md) ^2.0.4
- [@11ty/gray-matter](https://npm.io/package/@11ty/gray-matter.md) ^3.0.0
- [nanoid-dictionary](https://npm.io/package/nanoid-dictionary.md) ^5.0.0
- [@modelcontextprotocol/sdk](https://npm.io/package/@modelcontextprotocol/sdk.md) ^1.30.0

## Recent versions

- 0.0.19 (latest) — 2026-09-24
- 0.0.18 — 2026-09-09
- 0.0.17 — 2026-08-06
- 0.0.16 — 2026-08-06
- 0.0.15 — 2026-07-31
- 0.0.14 — 2026-07-31
- 0.0.13 — 2026-07-28
- 0.0.12 — 2026-07-22
- 0.0.11 — 2026-07-22
- 0.0.10 — 2026-07-16
- 0.0.9 — 2026-07-15
- 0.0.8 — 2026-06-25
- 0.0.7 — 2026-06-08
- 0.0.6 — 2026-06-08
- 0.0.5 — 2026-06-07
- … 4 more at https://npm.io/package/@webiny/stdlib/versions

## README

# @webiny/stdlib

Opinionated standard library for [Webiny](https://www.webiny.com). 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/mcp`     | Node.js     | MCP server + agent config   |

---

## `@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](src/common/features/Logger/README.md)            |
| `Cache` / `MemoryCacheFeature`                                                       | Synchronous key-value cache — [docs](src/common/features/Cache/README.md)                              |
| `AsyncCache` / `AsyncMemoryCacheFeature`                                             | Async key-value cache — [docs](src/common/features/Cache/README.md)                                    |
| `immutableGet` / `immutableSet` / `immutableDelete` / `mutableSet` / `mutableDelete` | Dot-notation get/set/delete on nested objects — [docs](src/common/utils/dotProp/README.md)             |
| `toBoolean` / `isTruthy` / `isFalsy`                                                 | Semantic boolean coercion — [docs](src/common/utils/boolean/README.md)                                 |
| `uuid`                                                                               | RFC 4122 v4 UUID generator (native + fallback) — [docs](src/common/utils/uuid/README.md)               |
| `mdbid`                                                                              | MongoDB-compatible ObjectId generator — [docs](src/common/utils/mdbid/README.md)                       |
| `generateId` / `generateAlphaNumericId` / `generateAlphaLowerCaseId` / ...           | Nanoid-based ID generators with configurable alphabets — [docs](src/common/utils/generateId/README.md) |
| `Env`                                                                                | Typed environment variable access (abstraction) — [docs](src/common/features/Env/README.md)            |

---

## `@webiny/stdlib/node` — Node.js

| Feature                                              | Description                                                                                                                         |
| ---------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `FileTool` / `FileToolFeature`                       | Read, write, copy, remove files — [docs](src/node/features/FileTool/README.md)                                                      |
| `DirectoryTool` / `DirectoryToolFeature`             | Create, read, remove, copy, glob directories — [docs](src/node/features/DirectoryTool/README.md)                                    |
| `JsonFileTool` / `JsonFileToolFeature`               | Read and write JSON files with optional schema validation — [docs](src/node/features/JsonFileTool/README.md)                        |
| `PathTool` / `PathToolFeature`                       | `node:path` wrapper + `resolvePackageFile` for package-relative paths — [docs](src/node/features/PathTool/README.md)                |
| `PinoLogger` / `PinoLoggerFeature`                   | pino-based `Logger` implementation — [docs](src/node/features/PinoLogger/README.md)                                                 |
| `NdJsonReaderTool` / `NdJsonReaderToolFeature`       | Parse NDJSON from files, streams, or in-memory lines with checkpoint support — [docs](src/node/features/NdJsonReaderTool/README.md) |
| `ReadStreamFactory` / `ReadStreamFactoryFeature`     | `node:fs` read streams with explicit `destroy()` cleanup — [docs](src/node/features/ReadStreamFactory/README.md)                    |
| `PackageJsonFileTool` / `PackageJsonFileToolFeature` | Read, validate, mutate, and write `package.json` files — [docs](src/node/features/PackageJsonFileTool/README.md)                    |
| `HashFolderTool` / `HashFolderToolFeature`           | Deterministic SHA-256 hash of a folder's contents — [docs](src/node/features/HashFolderTool/README.md)                              |
| `ProcessEnvFeature`                                  | `Env` implementation backed by `process.env` — [docs](src/node/features/ProcessEnv/README.md)                                       |
| `WorkspaceTool` / `WorkspaceToolFeature`             | Discover workspaces from root `package.json` (replaces `get-yarn-workspaces`) — [docs](src/node/features/WorkspaceTool/README.md)   |
| `GlobTool` / `GlobToolFeature`                       | Find files and directories by glob pattern — [docs](src/node/features/GlobTool/README.md)                                           |

---

## `@webiny/stdlib/browser` — Browser

| Feature                    | Description                                                                                                                            |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `BrowserWindowFeature`     | Abstraction over the browser `window` object with real and null implementations — [docs](src/browser/features/BrowserWindow/README.md) |
| `LocalStorageCacheFeature` | `Cache` implementation backed by `window.localStorage` — [docs](src/browser/features/LocalStorageCache/README.md)                      |
| `BrowserEnvFeature`        | `Env` implementation backed by an injected variables object — [docs](src/browser/features/BrowserEnv/README.md)                        |

---

## `@webiny/stdlib/mcp` — MCP Server

An [MCP](https://modelcontextprotocol.io) server that exposes `@webiny/stdlib` feature documentation as tools for AI agent discovery. Ships a CLI binary (`stdlib-mcp`) with two commands:

```sh
# Start the MCP server (stdio transport)
npx -y @webiny/stdlib stdlib-mcp serve

# Configure an AI agent (Claude Code, Cursor, Cline, Copilot, Windsurf, Kiro, OpenCode)
npx -y @webiny/stdlib stdlib-mcp configure
```

The server provides two MCP tools: `list_stdlib_skills` (grouped catalog of all features) and `get_stdlib_skill` (full documentation for a specific skill). By default it scans `skills/` and `src/` (or `dist/`) for README.md and SKILL.md files with YAML front-matter.

| Feature                                          | Description                                                                                     |
| ------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
| `McpServer` / `McpServerFeature`                 | MCP server with stdio transport — [docs](src/mcp/features/Server/README.md)                     |
| `SkillDiscovery` / `SkillDiscoveryConfig`        | Scans directories for skill files with front-matter — [docs](src/mcp/features/Server/README.md) |
| `AgentConfigurator` / `AgentConfiguratorFeature` | Interactive CLI to configure AI agents — [docs](src/mcp/features/Configure/README.md)           |

---

## Versioning

Versioning and publishing are managed by [Changesets](https://github.com/changesets/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.

---
_Source: https://npm.io/package/@webiny/stdlib · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
