@beweco/ utils (英语)
用于电话号码验证和Tolgee本地化管理的用户库.
安装
npm install @beweco/utils-js
使用量
电话验证
import { validatePhone } from '@beweco/utils-js';
// Validate a Chilean mobile number
const { isValid, formattedNumber, error } = validatePhone('912345678');
if (isValid) {
console.log(formattedNumber); // '+56912345678'
} else {
console.log(error);
}
// Validate with different country code
const result = validatePhone('912345678', '+1');
托尔吉本地化
import {
getAllKeysTolgee,
downloadTranslations,
uploadOnlyNewKeysToTolgee,
uploadToTolgee,
getAvailableLanguages
} from '@beweco/utils-js';
// Configuration
const config = {
apiKey: 'your-tolgee-api-key',
projectId: 'your-project-id',
baseUrl: 'https://app.tolgee.io' // optional, defaults to this value
};
// Get all available languages
const languages = await getAvailableLanguages(config);
// Get all keys from project
const keys = await getAllKeysTolgee(config);
// Download all translations
const translations = await downloadTranslations(config);
// Upload new keys only
const uploadResult = await uploadOnlyNewKeysToTolgee({
...config,
language: 'es-AR',
namespace: 'common',
data: {
'welcome': 'Bienvenido',
'hello': 'Hola'
}
});
// Upload all keys (including duplicates)
const uploadAllResult = await uploadToTolgee({
...config,
language: 'es-AR',
namespace: 'common',
data: {
'welcome': 'Bienvenido',
'hello': 'Hola'
}
});
API 参考
电话验证
验证 Phone( 电话: 字符串, countryCode? : 字符串): PhoneValidation Result
验证和格式化一个电话号码.
参数:
phone- 需要验证的电话号码countryCode- 可选国家代码(智利默认为“+56”)
回返情况: 电话校正结果
interface PhoneValidationResult {
isValid: boolean;
formattedNumber?: string;
error?: string;
}
审定规则:
- 必须是手机号码(从9开始)
- 必须是9位数长 (不包括国家代码)
- 有无国家代码可提供
- 自动格式化为国际格式(例如“ +56912345678”)
托尔吉本地化
类型
interface TolgeeConfig {
apiKey: string;
projectId: string;
baseUrl?: string;
}
interface Language {
tag: string;
name: string;
originalName: string;
}
interface TranslationData {
[key: string]: string;
}
interface DownloadTranslationsResult {
languages: Language[];
translations: {
[language: string]: {
[namespace: string]: {
[key: string]: string;
};
};
};
}
interface UploadResult {
uploaded?: number;
[key: string]: unknown;
}
职能
获得AvailableLanguages(配置:TolgeeConfig):承诺<语言>
在Tolgee项目中获取所有可用的语言.
获取 AllKeysTolgee( 配置: TolgeeConfig ): 保证 < string >
从 Tolgee 工程中获取所有密钥, 并带有 pagination 支持 .
下载翻译( 配置: TolgeeConfig & {namespace? : string} ): 保证
下载按语言和命名空间排列的所有翻译.
参数:
config- 托尔吉配置namespace- 可选命名空间过滤器
仅上传NewKeys ToTolgee( 配置: tolgee Config & { 语言: 字符串; 命名空间: 字符串; 数据: 翻译数据 } : 答应
上传项目中不存在的新密钥 .
参数:
config- 托尔吉配置language- 目标语言(例如“s-AR”)namespace- 命名空间(例如“ 普通” )data- 翻译数据对象
上传到 Tolgee( 配置: TolgeeConfig & { 语言: 字符串; 命名空间: 字符串; 数据: 翻译数据 } : 答应
上传所有密钥而不检查重复.
参数:
config- 托尔吉配置language- 目标语言(例如“s-AR”)namespace- 命名空间(例如“ 普通” )data- 翻译数据对象
常数
const DEFAULT_BASE_URL = 'https://app.tolgee.io';
const DEFAULT_PAGE_SIZE = 1000;
HTTP 客户端
createHttpClient(baseURL, options) 返回一个未切换的轴实例 response.data。失败的请求不拒绝:它们解决 error.response.data (网关错误信封,或 undefined 当没有收到任何答复时,例如网络出错或超时).
401 处理:
- A 类
401触发符号刷新对refreshPath并用新的访问符重写原始请求。 同时401s 共享一个刷新. - A 类
401他的信封里装着error.code(或顶级)message等于access_denied是一个账户访问拒绝(例如过期的自由试验),而不是过期的符号:它被作为原样返回,没有刷新和重试. onAuthError只有在刷新端点拒绝证书(任何4xx)时才使用。 在网络出错,超时和5xx 反应刷新重试一次并保持会话.
语音录音核心@beweco/utils-js/voice(中文(简体) )
用于批量语音录制的框架不可知性( 无反应, 无 UI 框架) 核心 MediaRecorder它是一种单独的子路径导出,目的——只需记录音频的消费者不应拉入轴线、饼干或地产处理.
import { createVoiceRecorder, toTranscriptionFormData } from '@beweco/utils-js/voice';
const recorder = createVoiceRecorder();
const unsubscribe = recorder.subscribe(() => {
// re-read recorder.state / recorder.stream (e.g. from useSyncExternalStore)
});
const result = await recorder.start(); // "ok" | "denied" | "unavailable" | "unsupported" | "busy"
// ... later
const blob = await recorder.stop(); // Blob | null
if (blob) {
const formData = toTranscriptionFormData(blob); // File "audio.<ext>" under field "audio"
}
recorder.dispose(); // release the microphone for good (e.g. on unmount)
此模块只拥有录制原始: 它不转录、 上传、 解跳点击或失效 stale 起始于多个呼叫 start() 在屏幕上。 React switch,记录按钮和向一个抄录服务说话的HTTP适配器,每个消耗性应用中都会直播.
装饰波形的平面表 (Web Audio; 返回 0 没有它):
import { createAudioLevelMeter } from '@beweco/utils-js/voice';
const meter = createAudioLevelMeter(recorder.stream!); // after start() === "ok"
const level = meter.getLevel(); // RMS 0..1, read it from your own rAF loop
meter.dispose(); // disconnects and closes the AudioContext; idempotent
说明: 页:1
exports输入package.json限制进口到@beweco/utils-js财务报告和审定财务报表@beweco/utils-js/voice- 深道一样@beweco/utils-js/dist/...不再有决心了 目前没有消费者使用它们.
发展
先决条件
- 节点.js 24
- 无
重要内容: 这个项目需要Node.js版本24或更晚. 你用得着 .nvmrc 文件为 :
nvm use
可用的脚本
npm run clean- 删除 Dist 目录npm run build- 编译类型脚本代码npm test- 进行测试npm run lint- 运行 ESLintnpm run dev- 在监视模式下运行 TypeScript 编译器
出版
这个软件包通过GitHub Actions向国家预防机制自动发布.
手动发布
- 转到
Actions→Publish NPM以 GitHub 为单位 - 点击
Run workflow - 选择版本凸起类型 :
- 补丁: Bug 修正 (0.011 ~ 0.0.12)
- 小声: 新的特性(0.0.11 ~ 0.1.0)
- 主要: 打破变化(0.011 ~ 1.0.0)
工作流程将自动:
- 运行测试并构建
- 套件中的 Bump 版本. json
- 创建 git 标签并执行
- 向国家预防机制公布
- 将更改推回仓库
第一次设置
仓库管理员需要用 NPU TOKEN 配置“生产”环境。 见 .github/DEPLOYMENT.md 详细指示.
捐款
- 从
main - 做你的改变
- 必要时进行书面/更新测试
- 运行嵌入和测试 :
npm run lint && npm test - 创建拉动请求
- 合并后使用 GitHub 动作发布新版本
许可证
麻省理工学院