@coloop-ai/temporal-superjson-payload-converter

中文文档
0.2.0发布于 2026/08/12MITTypeScriptESM + CJS零依赖近 30 天下载 2.3万

Timoral工作流程的超级JSON有效载荷转换器。 将Date,Map,Set,和BigInt等复杂类型进行适当的序列化和去序列化.

中文使用文档
文档目录17 节
  1. 为什么?
  2. 支持类型
  3. 安装
  4. 快开始
  5. 工人设置
  6. 客户端设置
  7. 工作流程捆绑
  8. 测试环境
  9. 无害环境管理项目
  10. 示例
  11. 向后兼容
  12. API 密码
  13. payloadConverter
  14. SuperJsonPayloadConverter
  15. SUPERJSON_META_KEY
  16. 脚本
  17. 许可证

@ coloop-ai/ 时空- 超级json- 负载- 转换器

npm version npm downloads License: MIT TypeScript

A 类 超级JSON- 基于有效载荷转换器 时间 工作流程。 将标准JSON无法处理的复杂JavaScript类型正确序列化并去序列化.

为什么?

Temperal 默认 JSON 有效载荷转换器无法处理许多常见的 JavaScript 类型 :

  • Date 对象成为字符串
  • Map 财务报告和审定财务报表 Set 成为空对象 {}
  • BigInt 丢出错误
  • RegExp 变为空对象 {}

这个软件包通过使用"SuperJSON"来解决了这些问题,它存储了有效载荷元数据中的类型信息,并在去序列化过程中恢复了原始类型.

支持类型

  • Date
  • Map
  • Set
  • BigInt
  • RegExp
  • undefined
  • Error (和子类)
  • URL
  • 已打入数组( E)Int8Array, (中文(简体) ), Uint8Array页:1
  • 还有 更多

安装

npm install @coloop-ai/temporal-superjson-payload-converter

快开始

有效载荷转换器必须配置在 全部 这些地方:

  1. 创造工人
  2. 客户端创建
  3. 工作流程捆绑( 如果使用 bundleWorkflowCode(中文(简体) )
  4. 测试环境

工人设置

import { Worker } from '@temporalio/worker'

const worker = await Worker.create({
  // ... other options
  dataConverter: {
    payloadConverterPath:
      require.resolve('@coloop-ai/temporal-superjson-payload-converter'),
  },
})

客户端设置

import { Client } from '@temporalio/client'

const client = new Client({
  connection,
  namespace: 'your-namespace',
  dataConverter: {
    payloadConverterPath:
      require.resolve('@coloop-ai/temporal-superjson-payload-converter'),
  },
})

工作流程捆绑

import { bundleWorkflowCode } from '@temporalio/worker'

const workflowBundle = await bundleWorkflowCode({
  workflowsPath: require.resolve('./workflows'),
  payloadConverterPath:
    require.resolve('@coloop-ai/temporal-superjson-payload-converter'),
})

测试环境

import { TestWorkflowEnvironment } from '@temporalio/testing'

const env = await TestWorkflowEnvironment.createTimeSkipping({
  client: {
    dataConverter: {
      payloadConverterPath:
        require.resolve('@coloop-ai/temporal-superjson-payload-converter'),
    },
  },
})

无害环境管理项目

在无害环境管理项目中,使用 createRequire 访问 require.resolve数字 :

import { createRequire } from 'node:module'

const require = createRequire(import.meta.url)

const worker = await Worker.create({
  // ... other options
  dataConverter: {
    payloadConverterPath:
      require.resolve('@coloop-ai/temporal-superjson-payload-converter'),
  },
})

示例

一旦配置,复杂类型只是工作:

// workflow.ts
import { proxyActivities } from '@temporalio/workflow'

const activities = proxyActivities({
  startToCloseTimeout: '10 seconds',
})

export async function myWorkflow(input: {
  createdAt: Date
  tags: Set<string>
  metadata: Map<string, unknown>
}) {
  // input.createdAt is a Date instance
  // input.tags is a Set instance
  // input.metadata is a Map instance
  console.log(input.createdAt.toISOString())
  console.log(input.tags.has('important'))
  console.log(input.metadata.get('key'))
}
// client.ts
await client.workflow.start('myWorkflow', {
  taskQueue: 'my-queue',
  workflowId: 'my-workflow-id',
  args: [
    {
      createdAt: new Date(),
      tags: new Set(['important', 'urgent']),
      metadata: new Map([['key', 'value']]),
    },
  ],
})

向后兼容

这种转换器与默认JSON转换器所生成的有效载荷相倒相兼容. 它可以去除两个:

  • 没有超级JSON元数据的遗留有效载荷(作为普通JSON处理)
  • 带有超级JSON元数据的新有效载荷(完整类型恢复)

说明: 使用默认转换器的老工人仍然可以读取新的有效载荷,但复杂的类型将会被降解(例如:, Date 成为ISO 字符串, Map 成为一系列条目).

API 密码

payloadConverter

预配置的复合转换器,处理:

  • undefined 数值
  • 二进制数据( E)Uint8Array(中文(简体) )
  • 具有 SuperJSON 支持的所有其他值

这是默认导出, 当您指定时会使用 payloadConverterPath。 。 。 .

SuperJsonPayloadConverter

基础的超级JSON转换器类. 如果您需要自编转换器, 您可以直接使用 :

import {
  CompositePayloadConverter,
  UndefinedPayloadConverter,
} from '@temporalio/common'
import { SuperJsonPayloadConverter } from '@coloop-ai/temporal-superjson-payload-converter'

export const payloadConverter = new CompositePayloadConverter(
  new UndefinedPayloadConverter(),
  // Add your custom converters here
  new SuperJsonPayloadConverter(),
)

SUPERJSON_META_KEY

元数据键'superjson-meta')用于存储类型信息. 为高级用例而出出.

脚本

  • npm run build - 制作软件包
  • npm run tc - 类型检查,不排放
  • npm run lint - 运行ESLint
  • npm run test - 和维特一起测试
  • npm run format - 检查Pretier的格式

许可证

MIT许可证。 见 自由主义 详细情况.

版本与发布记录

@coloop-ai/temporal-superjson-payload-converter 共发布 2 个版本,首次发布于 2026/01/09;过去 12 个月发布了 2 个版本。

版本发布日期距今
0.2.0latest2026/08/122 个月前
0.1.02026/01/099 个月前

关于 @coloop-ai/temporal-superjson-payload-converter 的常见问题

@coloop-ai/temporal-superjson-payload-converter 是什么?

Timoral工作流程的超级JSON有效载荷转换器。 将Date,Map,Set,和BigInt等复杂类型进行适当的序列化和去序列化.

如何安装 @coloop-ai/temporal-superjson-payload-converter?

在项目目录运行 npm install @coloop-ai/temporal-superjson-payload-converter,或使用 pnpm add / yarn add / bun add。

@coloop-ai/temporal-superjson-payload-converter 支持 TypeScript 吗?

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

@coloop-ai/temporal-superjson-payload-converter 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@coloop-ai/temporal-superjson-payload-converter 需要什么版本的 Node.js?

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

@coloop-ai/temporal-superjson-payload-converter 可以商用吗?

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

@coloop-ai/temporal-superjson-payload-converter 的下载量有多少?

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

@coloop-ai/temporal-superjson-payload-converter 还在维护吗?

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