SpaceCat 共享设备
该寄存器包含在SpaceCat各项目中使用的共享实用功能的集合. 这些公用事业提供一系列的检查和验证,从基本数据类型验证到更复杂的检查,如ISO日期字符串和URL验证.
页:1: 添加了跟踪标识传播支持,用于在SpaceCat服务中分布追踪.
安装
要安装 SpaceCat 共享公用事业, 您可以使用 npm :
npm install spacecat-shared-utils
或者,如果你在使用纱线:
yarn add spacecat-shared-utils
使用量
以下是您如何在您的工程中使用不同的功能:
import { isBoolean, isValidUrl } from 'spacecat-shared-utils';
console.log(isBoolean('true')); // true
console.log(isValidUrl('https://www.example.com')); // true
职能
图书馆包括下列公用事业功能:
isBoolean(value): 确定给定值是布尔表示还是布尔表示的字符串表示.isInteger(value):检查给定值是否是一个整数.isValidDate(obj):检查给定对象是否为有效的JavaScript Date.isIsoDate(str):验证给定的字符串是否是Zulu(UTC)时区中的JavaScript ISO日期字符串.isIsoTimeOffsetsDate(str):验证给定的字符串是否为UTC时间抵消格式后的JavaScript ISO日期字符串.isNumber(value): 确定给定的值是否是一个数字.isObject(obj):检查给定参数是否是对象而不是数组或无效.isString(str):确定给定参数是否为字符串.toBoolean(value): 将给定值转换为布尔值。 如果值不是布尔值, 则丢出错误 .arrayEquals(a, b): 比较两个数组平等.isValidUrl(urlString): 验证给定的字符串是否与 https 协议是有效的 URL .hasText(str):检查给定的字符串是否为空 .dateAfterDays(number): 计算从当前日期起特定天数后的日期.
日志折叠器
这个 logWrapper 通过自动预览增强您的 Lambda 函数日志 jobId (留言)和 traceId (从AWS X-Ray)到所有日志语句. 这改善了分布式服务的日志可追踪性.
特征
- 自动提取 AWS X-Ray 痕量 ID
- 可用时包括消息中的工作编号
- 增强
context.log直接 - 无需更改代码 - 与已存在的日志级别( 信息、 错误、 调试、 警告、 跟踪等) 无缝工作
使用量
import { logWrapper, sqsEventAdapter } from '@adobe/spacecat-shared-utils';
async function run(message, context) {
const { log } = context;
// Use context.log as usual - trace IDs are added automatically
log.info('Processing started');
// Output: [jobId=xxx] [traceId=1-xxx-xxx] Processing started
}
export const main = wrap(run)
.with(sqsEventAdapter)
.with(logWrapper) // Add this line early in the wrapper chain
.with(dataAccess)
.with(sqs)
.with(secrets)
.with(helixStatus);
说明: 这个 logWrapper 增强 context.log 直接说 所有已存在的代码使用 context.log 将自动在日志中包含痕量ID和工作ID,而不修改代码.
SQS 事件适应器
库还包含一个SQS事件适配器来将一个SQS记录转换为函数参数. 这在与由 SQS 事件所触发的 AWS Lambda 函数合作时有用. 用法 :
import { sqsEventAdapter } from '@adobe/spacecat-shared-utils';
// ...
export const main = wrap(run)
.with(dataAccess)
.with(sqsEventAdapter) // Add this line
.with(sqs)
.with(secrets)
.with(helixStatus);
AWS X-射线集成
获取 TraceId ()
从段取出当前 AWS X-Ray 的痕量ID 。 回返 null 如果不在AWS Lambda中,或者没有线段.
import { getTraceId } from '@adobe/spacecat-shared-utils';
const traceId = getTraceId();
// Returns: '1-5e8e8e8e-5e8e8e8e5e8e8e8e5e8e8e8e' or null
此函数由 logWrapper 以在日志中包含痕量ID.
测试
该图书馆包括一个综合测试套件,以确保公用事业功能的可靠性。 要进行测试,请使用下列命令:
npm test
子路径导出
为了避免拉入完整依赖树(~110MB),从子路径导入:
| 导入 | 依赖关系 |
|---|---|
@adobe/spacecat-shared-utils | 全部(~110MB) |
@adobe/spacecat-shared-utils/core | 无——纯粹的联署材料 |
@adobe/spacecat-shared-utils/aws | @aws-sdk/*, (中文(简体) ), aws-xray-sdk, (中文(简体) ), @adobe/fetch ⚠ 边效果 : 在导入时初始化 HTTP 连接池 —— 需要外出上网 |
@adobe/spacecat-shared-utils/locale | cheerio, (中文(简体) ), world-countries, (中文(简体) ), franc-min, (中文(简体) ), iso-639-3, (中文(简体) ), @adobe/fetch ⚠ 边效果 : 在导入时初始化 HTTP 连接池 —— 需要外出上网 |
@adobe/spacecat-shared-utils/calendar | date-fns |
@adobe/spacecat-shared-utils/schemas | zod |
@adobe/spacecat-shared-utils/constants | 无——纯数据 |
类型脚本
亚路径出口需要 "moduleResolution": "node16", (中文(简体) ), "nodenext",或 "bundler" 内 tsconfig.json. 遗产 "moduleResolution": "node" 无法解决子路径输出.
维修
任何新的 src/ 包含顶级必备代码的文件( 超出 import编号 :export 发言) sideEffects 阵列 package.json。 。 。 .
许可证
这个项目根据Apache许可证2.0获得许可——见 自由主义 详细文件.