@adobe/spacecat-shared-utils

中文文档
1.128.0发布于 2026/10/02Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 1.5万

Spacecat 服务的共享模块- utils

中文使用文档
文档目录14 节
  1. 安装
  2. 使用量
  3. 职能
  4. 日志折叠器
  5. 特征
  6. 使用量
  7. SQS 事件适应器
  8. AWS X-射线集成
  9. 获取 TraceId ()
  10. 测试
  11. 子路径导出
  12. 类型脚本
  13. 维修
  14. 许可证

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/localecheerio, (中文(简体) ), world-countries, (中文(简体) ), franc-min, (中文(简体) ), iso-639-3, (中文(简体) ), @adobe/fetch ⚠ 边效果 : 在导入时初始化 HTTP 连接池 —— 需要外出上网
@adobe/spacecat-shared-utils/calendardate-fns
@adobe/spacecat-shared-utils/schemaszod
@adobe/spacecat-shared-utils/constants无——纯数据

类型脚本

亚路径出口需要 "moduleResolution": "node16", (中文(简体) ), "nodenext",或 "bundler" 内 tsconfig.json. 遗产 "moduleResolution": "node" 无法解决子路径输出.

维修

任何新的 src/ 包含顶级必备代码的文件( 超出 import编号 :export 发言) sideEffects 阵列 package.json。 。 。 .

许可证

这个项目根据Apache许可证2.0获得许可——见 自由主义 详细文件.

版本与发布记录

@adobe/spacecat-shared-utils 共发布 318 个版本,首次发布于 2023/11/28;过去 12 个月发布了 106 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.128.0latest2026/10/021 个月前
1.127.02026/09/301 个月前
1.126.02026/08/172 个月前
1.125.22026/08/122 个月前
1.125.12026/08/043 个月前
1.125.02026/07/173 个月前

关于 @adobe/spacecat-shared-utils 的常见问题

@adobe/spacecat-shared-utils 是什么?

Spacecat 服务的共享模块- utils

如何安装 @adobe/spacecat-shared-utils?

在项目目录运行 npm install @adobe/spacecat-shared-utils,或使用 pnpm add / yarn add / bun add。

@adobe/spacecat-shared-utils 支持 TypeScript 吗?

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

@adobe/spacecat-shared-utils 支持 ESM 还是 CommonJS?

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

@adobe/spacecat-shared-utils 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.0.0 <25.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@adobe/spacecat-shared-utils 可以商用吗?

@adobe/spacecat-shared-utils 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@adobe/spacecat-shared-utils 的下载量有多少?

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

@adobe/spacecat-shared-utils 还在维护吗?

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