水泥
用于TypeScript/JavaScript和Go的不可知性平台抽象层,提供贯穿Node.js,Deno,Cloudflare Workers等运行时间的一致API.
概览
水泥为跨越不同 JavaScript/TypeScript 运行时间和 Go 的系统操作、记录和公用设备提供了统一的界面。 写出代码一次并运行到任何地方 — 无论是Node.js、Deno、浏览器还是Cloudflare Workers.
关键特性
系统抽象
通过统一接口进行跨平台系统操作:
interface SysAbstraction {
Time(): Time;
Stdout(): WritableStream<Uint8Array>;
Stderr(): WritableStream<Uint8Array>;
NextId(): string;
Random0ToValue(value: number): number;
System(): SystemService;
FileSystem(): FileService;
}
结构化日志
受到Go零log的启发,提供高效的结构化伐木:
logger
.Str("user", "john")
.Uint64("id", 123)
.Info()
.Log("User logged in");
额外水电费
- 结果选项类型( O): 由 Rust 启发的类型安全错误处理
- 未来: 以承诺为基础的同步公用事业
- URI 处理: 用于安全操作 URL 的可变 URL 工具
- 密码: 平台不可知密码操作
- 追踪器: 分布式跟踪支持
- LRU 缓存: 高效使用最少的缓存执行
- 路径操作: 跨平台路径操纵
- HTTP 信头: 类型安全 HTTP 信头公用事业
- 波尔勒: 间隔不定的投票设施
- 超时: ASync 操作的超时包装
安装
npm (节点.js)
npm install @adviser/cement
小时
pnpm add @adviser/cement
德诺
import { ... } from "jsr:@adviser/cement";
走开
go get github.com/mabels/cement
使用量
基本示例
import { BuildBasicSystemService } from "@adviser/cement/node";
const sys = BuildBasicSystemService();
const logger = sys.Logger();
logger
.Str("module", "app")
.Info()
.Log("Application started");
// Use file system operations
const fs = sys.FileSystem();
await fs.writeFile("output.txt", "Hello World");
平台特定导入
// Node.js
import { BuildBasicSystemService } from "@adviser/cement/node";
// Deno
import { BuildBasicSystemService } from "@adviser/cement/deno";
// Cloudflare Workers
import { BuildBasicSystemService } from "@adviser/cement/cf";
// Browser/Web
import { BuildBasicSystemService } from "@adviser/cement/web";
处理错误的结果类型
import { Result } from "@adviser/cement";
function divide(a: number, b: number): Result<number> {
if (b === 0) {
return Result.Err(new Error("Division by zero"));
}
return Result.Ok(a / b);
}
const result = divide(10, 2);
if (result.isOk()) {
console.log("Result:", result.unwrap());
} else {
console.error("Error:", result.unwrapErr());
}
文档
关于综合文件、API参考文献和先进的使用实例,访问:
支持的平台
- 节点.js 页:1
- 德诺
- 云花岗工人
- 网页浏览器
- 走开 (单位:千美元)
发展
# Install dependencies
pnpm install
# Run tests
pnpm test
# Run tests for specific platform
pnpm test:js # Node.js/JavaScript tests
pnpm test:deno # Deno tests
# Build
pnpm build
# Lint
pnpm lint
# Format code
pnpm format
捐款
欢迎捐款! 请随意提交拉力请求.
许可证
Apache 许可证 2.0 - 见 自由主义 详细情况.
仓库
- GitHub 图像数字 : https://github.com/mabels/水泥厂
- 问题数字 : https://github.com/mabels/水泥/问题
- 无数字 : @ adviser/ 水泥
- 日 尔数字 : @ adviser/ 水泥