@brillout/libassert

中文文档
0.5.8发布于 2022/05/21TypeScriptCommonJS零依赖近 30 天下载 15.8万

Assertions for library authors.

原始使用文档

@brillout/libassert

Tiny zero-dependency tool for library authors to create assertion functions with clean strack traces.

  • Complete stack traces. (Error.stackTraceLimit = Infinity; only for assertion errors.)
  • Cleaned stack traces. (Fist stack line points to the assertion breaking code, useless stack lines are stripped away.)
  • Error messages are guaranteed to not contain new lines.
import { newError } from "@brillout/libassert";

export { assert };

function assert(condition: unknown): asserts condition {
  if (condition) {
    return;
  }

  const err = newError(
    `[${libName}][Internal Error] Something unexpected happened, please open a GitHub issue.`;
  );

  throw err;
}

Calling newError(errorMessage) is the same than new Error(errorMessage) except that:

  • The stack trace is complete and cleaned as described above.
  • errorMessage is forbidden to contain new lines.

You can create all kinds of assertion functions, such as assertUsage or assertWarning:

import { newError } from "@brillout/libassert";

export { assert, assertUsage, assertWarning };

const libName = "My Awesome Library";

// Assertions that are expected to always be true (also known as "invariants")
function assert(condition: unknown): asserts condition {
  if (condition) {
    return;
  }

  const err = newError(
    `[${libName}][Internal Error] Something unexpected happened, please open a GitHub issue.`;
  );

  throw err;
}

// Wrong usage of your library
function assertUsage(
  condition: unknown,
  errorMessage: string
): asserts condition {
  if (condition) {
    return;
  }

  const err = newError(prefix: `[${libName}][Wrong Usage] ${errorMessage}`);

  throw err;
}

// Something unexpected happened but it is non-critical and doesn't
// warrant interrupting code execution.
function assertWarning(condition: unknown, errorMessage: string): void {
  if (condition) {
    return;
  }

  const err = newError(`[${libName}][Warning] ${errorMessage}`);

  console.warn(err);
}

版本与发布记录

@brillout/libassert 共发布 21 个版本,首次发布于 2020/11/26;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.5.8latest2022/05/214 年前
0.5.72022/05/204 年前
0.5.62022/05/204 年前
0.5.52022/05/034 年前
0.5.42022/02/054 年前
0.5.32022/02/054 年前

关于 @brillout/libassert 的常见问题

@brillout/libassert 是什么?

Assertions for library authors.

如何安装 @brillout/libassert?

在项目目录运行 npm install @brillout/libassert,或使用 pnpm add / yarn add / bun add。

@brillout/libassert 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@brillout/libassert 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@brillout/libassert 可以商用吗?

@brillout/libassert 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@brillout/libassert 的下载量有多少?

根据 npm 官方下载统计,@brillout/libassert 在 2026/10/09 – 2026/11/07 这 30 天内被下载 158,110 次,日均约 5,270 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@brillout/libassert 还在维护吗?

最新版本 0.5.8 发布于 2022/05/21(4 年前);至今共发布 21 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/11/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。