mcpField
D
dx-migrate-js-to-ts-sdk

dx-migrate-js-to-ts-sdk

github.com/contentstack开发583 次安装2 周前更新
代码仓库

关于 dx-migrate-js-to-ts-sdk

dx-migrate-js-to-ts-sdk 是帮助开发者将 Contentstack Delivery SDK 代码从 JavaScript 迁移到 TypeScript 的技能。它映射 API、改写代码,并指出依赖包变更与不支持的用法。

主要功能

  1. 01映射 JavaScript 与 TypeScript API
  2. 02将 SDK 代码改写为 TypeScript
  3. 03涵盖 Stack、Entries、Assets 和 Query
  4. 04说明依赖包与初始化变更
  5. 05指出限制和不支持的用法
  6. 06提供对照说明与迁移示例

适用场景

  1. 01转换现有 Delivery SDK 代码片段
  2. 02比较 JavaScript 与 TypeScript 查询 API
  3. 03规划缓存或 utils 的迁移变更
  4. 04改写前核对功能限制

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/contentstack/contentstack-agent-skills --skill dx-migrate-js-to-ts-sdk

安装后在 Claude Code 中输入/dx-migrate-js-to-ts-sdk确认已加载。

详细介绍

dx-migrate-js-to-ts-sdk

描述

将 Contentstack Delivery SDK 代码从 JavaScript 迁移到 TypeScript。改写设置、初始化、Stack、Entries、Assets、Query、分页、缓存、utils、taxonomy 和图像转换的用法,同时保留原有行为,并指出 TypeScript 特有的差异。

适用场景

当用户想要将 Contentstack Delivery SDK 代码从 JavaScript 迁移到 TypeScript 时使用。 当用户需要比较 JavaScript 和 TypeScript SDK 在 Stack、Entries、Assets、Query、分页、缓存、utils、taxonomy 或图像转换方面的 API 时使用。 当用户需要可直接用于迁移的改写、并列对比,或简明的重大变更和限制列表时使用。

用户问题

用户需要将现有的 Contentstack Delivery SDK 代码从 JavaScript 迁移到 TypeScript,同时不丢失功能。他们需要清晰地了解 API 差异、必需的软件包、TypeScript 特有的模式,以及需要转换为可运行代码的 JavaScript 不支持行为。

成功标准

识别正确的 JavaScript 到 TypeScript SDK 对应项。 提供源代码时,将代码改写为有效的 TypeScript SDK 用法。 指出必需的安装、初始化变更和 TypeScript 特有的辅助工具用法。 突出可能需要重新设计的限制和不支持的模式。 提供可直接用于代码的迁移指南和示例。

预期输入

  • 现有的 JavaScript SDK 代码或代码片段
  • 目标运行时环境,例如 Node.js 或 React Native
  • 涉及的具体 SDK 部分,例如 Stack、Entries、Assets、Query、缓存、utils、taxonomy 或图像转换
  • 用户需要的是说明、迁移步骤,还是改写后的 TypeScript 代码

预期输出

  • 迁移摘要
  • API 映射说明
  • 改写后的 TypeScript 代码示例
  • 关于限制或不支持功能的警告
  • 可选的 JavaScript 和 TypeScript 并列对比

用户请求示例

  • 将这段 Contentstack JavaScript SDK 代码迁移到 TypeScript。
  • 将这段 Stack、Entry 和 Query 用法改写为 TypeScript Delivery SDK 代码。
  • 告诉我这段 Contentstack JavaScript 代码对应的 TypeScript 写法。
  • 从 contentstack 迁移到 @contentstack/delivery-sdk 需要做哪些更改?
  • 迁移到 TypeScript Delivery SDK 时有哪些限制?
  • 如何改写 TypeScript Delivery SDK 的缓存策略用法?
  • 如何将基于 utils 的 HTML 渲染从 JavaScript 迁移到 TypeScript?
  • 将这个 taxonomy 查询转换为 TypeScript。

工作流摘要

识别 SDK 部分和当前的 JavaScript 用法。 将 JavaScript API 映射到对应的 TypeScript API。 调整软件包安装、导入和初始化。 使用 TypeScript 类型和 SDK 方法改写代码。 指出限制、缓存要求、utils 变更和不支持的查询模式。 提供简明的迁移摘要和示例。

指南

范围

帮助用户将 Contentstack Delivery SDK 代码从 JavaScript 迁移到 TypeScript。在用户提出要求或提供源代码时改写代码。重点关注准确的 API 映射、安装步骤、初始化、类型和功能差异。

迁移规则

优先使用 @contentstack/delivery-sdk 中对应的 TypeScript SDK 用法。尽可能保留原有行为。标明不受支持的 JavaScript 模式、TypeScript 独有的新增内容和必需的软件包变更。不得编造参考文档中不存在的 SDK 方法。

关键映射

使用 contentstack.stack(...),而不是 contentstack.Stack(...)。根据需要使用 stack.contentType(...)、entry(...)、asset(...)、query()、fetch()、find()、paginate()、next()、previous()、locale()、includeReference()、includeEmbeddedItems()、includeContentType()、includeCount() 和 taxonomy 方法。请注意,缓存支持需要 @contentstack/persistance-plugin,utils 则需要 @contentstack/utils。

限制

请指出 URL 长度上限为 8KB、单个查询中无法引用多个内容类型,以及无法直接查询 Global Field 架构。相关时,建议使用 include_global_field_schema 获取内容类型详情。请说明 assetFields 支持仅限北美地区。

示例

用户请求帮助时,至少提供一个迁移示例。适用时,优先使用并排代码片段或迁移前后对比。如果用户提供了源代码,请返回改写后的 TypeScript 版本,并附上简短的变更摘要。相关时,请提供缓存、utils、查询、分类法和分页示例。

输出格式

简洁明了,以迁移为导向。 代码示例使用代码块。 适用时,并排展示 JavaScript 和 TypeScript。 明确指出不支持或已变更的行为。 用户提供源代码时,请附上改写后的 TypeScript 版本。 不要虚构参考文档中未提供的 SDK 方法。

工具说明

默认情况下无需使用工具。 如果用户提供了代码,只需专注于转换和说明。 如果涉及缓存,请说明需要持久化插件。 如果涉及 utils,请说明需要单独安装 @contentstack/utils。 如果用户询问图像转换,请仅使用文档中列出的 ImageTransform 方法。

安全

默认规则
  • 切勿泄露部署令牌或环境机密。
  • 触发部署前,先验证部署目标。
  • 生产环境部署必须获得确认。
  • 未经审核,切勿自动部署到生产环境。
破坏性操作

不要执行破坏性操作。如果请求涉及删除、覆盖或发布内容,请先要求明确确认并说明影响。

机密信息

切勿索要、泄露或复述交付令牌、API 密钥或其他机密信息。如果代码示例中包含机密信息,请替换为占位符。

环境变量

需要使用环境变量时,请使用占位符名称并说明预期值。切勿打印真实值,也不要根据上下文推断机密信息。

产品背景

    • 产品:Developer Experience
    • 描述:开发者体验工具
    • 产品安全规则:- 切勿泄露部署令牌或环境机密。
  • 触发部署前,先验证部署目标。
  • 生产环境部署必须获得确认。
  • 未经审核,切勿自动部署到生产环境。

示例

基本 SDK 安装迁移(少样本示例 *)

用户: 如何从 JavaScript Contentstack Delivery SDK 迁移到 TypeScript?

助手: 安装 @contentstack/delivery-sdk@latest,将导入切换为 @contentstack/delivery-sdk,并将初始化方式从 contentstack.Stack(...) 更新为 contentstack.stack(...)。如果需要缓存,请安装 @contentstack/persistance-plugin@latest。如果需要 utils,请安装 @contentstack/utils@latest。

展示核心包和导入方式的变更。

Stack 同步迁移(少样本示例 *)

用户: 将这段同步代码转换为 TypeScript:Stack.sync({ init: true, locale: 'en-us' })

助手: 使用 TypeScript SDK 的 stack 实例,并调用 stack.sync({ locale: 'en-us' })。TypeScript 指南不会在初始同步时使用 init: true。

强调 sync API 的差异。

条目获取迁移(少样本示例 *)

用户: Stack.ContentType('blog').Entry('uid').only('title').toJSON().fetch() 对应的 TypeScript 写法是什么?

助手: 在 TypeScript SDK 中使用 stack.contentType('blog').entry('uid').only('title').fetch()。如果需要带类型的结果,可以添加泛型或接口,例如 fetch()。

展示条目 API 的映射方式和类型标注模式。

使用参考内容和排序进行查询重写(少样本)

用户: 将此 JavaScript 查询改写为 TypeScript:Stack.ContentType('blog').Query().where('title', 'welcome').includeCount().toJSON().find()

助手: 在 TypeScript SDK 中使用 stack.contentType('blog').entry().query().where('title', 'welcome').includeCount().find()。如果还需要引用的内容,请在 find() 之前添加 includeReference('field_uid')。

演示查询重写和 TypeScript 查询方法。

缓存策略迁移(少样本)

用户: 在 TypeScript SDK 中使用缓存还需要额外做些什么吗?

助手: 需要。安装 @contentstack/persistance-plugin@latest,并在使用 Policy.IGNORE_CACHE 以外的缓存策略时,通过 persistence store 传入 cacheOptions。

说明缓存插件的要求。

Utils 库迁移(少样本)

用户: 如何将 Contentstack Utils 的用法迁移到 TypeScript?

助手: 安装 @contentstack/utils@latest 并单独导入,例如:import * as Utils from '@contentstack/utils'。然后调用 Utils.jsonToHTML(...),而不是 contentstack.Utils.jsonToHTML(...)。

说明单独安装 utils 包的要求。

分类查询迁移(少样本)

用户: 将此分类筛选器转换为 TypeScript:Stack.ContentType('article').Query().where('taxonomies.topics', termUid).find()

助手: 使用 stack.contentType('article').entry().query(),并应用与筛选器匹配的分类辅助方法,例如 equalAndBelow('taxonomies.topics', termUid, level)。如果需要直接获取分类记录,请使用 stack.taxonomy('taxonomy_uid').find() 或 .term('term_uid').fetch()。

涵盖分类查询迁移。

检查限制(边缘情况)

用户: 在 TypeScript 中,查询多个内容类型和全局字段架构的方式是否与 JavaScript 相同?

助手: 不同。TypeScript Delivery SDK 不支持在单个查询中引用多个内容类型,也不直接支持查询 Global Field 架构。要获取内容类型详情,请使用 include_global_field_schema。另外请注意,URL 长度限制为 8KB。

说明文档中列出的限制。

评论

支持 Markdown