@brooswit/sundry

中文文档
0.2.2发布于 2026/08/27MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2854

A toolbox of small, well-tested TypeScript utilities

原始使用文档

@brooswit/sundry

A toolbox of small, well-tested TypeScript utilities. Each one is independent; add more as you go.

watch(fn, onChange, intervalMs, options?)

Polls fn on an interval and calls onChange(next, prev) whenever the value changes. Returns a stop().

import { watch } from "@brooswit/sundry";

const stop = watch(
  () => fs.statSync("config.json").mtimeMs,   // sync or async
  (next, prev) => console.log("changed", prev, "→", next),
  1000,
);
// ...later
stop();   // idempotent
  • The first call is a baseline — it captures the initial value and does not fire onChange.
  • Change is detected by a stable, order-independent hash, so {a:1,b:2} → {b:2,a:1} is not a change.
  • Adaptive cadence. Each tick runs the interval timer and fn at once; the next tick begins when both finish — max(interval, fn-duration). A fast fn keeps a steady interval; a slow fn runs back-to-back with no gap and no dropped ticks. A tick never overlaps the next.
  • fn may be sync or async.
  • A throw/reject skips that tick (no change, baseline unchanged). Pass options.onError to observe it.
  • options: onError?, hash? (override the hash), setTimeout?/clearTimeout? (inject timers, e.g. for tests).

Also exported: hashValue, stableStringify, fnv1a.

Development

bun run check       # generate + typecheck + tests + coverage ≥90%   (what CI runs)
bun test

Every change to src/ needs a CHANGELOG.md entry and a version bump (CI enforces it); merges to main publish to npm with provenance.

版本与发布记录

@brooswit/sundry 共发布 2 个版本,首次发布于 2026/08/25;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.2latest2026/08/272 个月前
0.2.12026/08/252 个月前

关于 @brooswit/sundry 的常见问题

@brooswit/sundry 是什么?

A toolbox of small, well-tested TypeScript utilities

如何安装 @brooswit/sundry?

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

@brooswit/sundry 支持 TypeScript 吗?

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

@brooswit/sundry 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@brooswit/sundry 可以商用吗?

@brooswit/sundry 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@brooswit/sundry 的下载量有多少?

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

@brooswit/sundry 还在维护吗?

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