@chift/chift-nodejs

中文文档
1.0.35发布于 2026/09/01Apache License 2.0TypeScriptCommonJS近 30 天下载 9万

Chift NodeJS库从以NodeJS语言(Javascript/Typescript)所写的应用程序中为Chift API提供方便访问.

中文使用文档
文档目录12 节
  1. 文档
  2. 所需资源
  3. 安装
  4. 示例
  5. 特征
  6. 客户端申请身份证明是否充分
  7. 原始数据访问
  8. 发展
  9. 重新生成 OpenAPI 计划
  10. Schema 同步工作流程
  11. 模块布局
  12. 添加路径

Chift 节点js 图书馆

npm version Build Coverage Status code style: prettier

Chift 节点JS 库提供方便访问 Chift API 从 用节点JS语言(Javascript/Typescript)编写的应用程序.

文档

见 API 文件。 。 。 .

所需资源

节点18以上.

安装

以 :

npm install @chift/chift-nodejs
# or
yarn add @chift/chift-nodejs

示例

const chift = require('@chift/chift-nodejs');
const client = new chift.API({
    clientId: process.env.CHIFT_TESTING_CLIENTID,
    clientSecret: process.env.CHIFT_TESTING_CLIENTSECRET,
    accountId: process.env.CHIFT_TESTING_ACCOUNTID,
});
const consumers = await client.Consumers.getConsumers();
// my first consumer has a POS connection
const locations = await consumers[0].pos.getLocations();

特征

客户端申请身份证明是否充分

SDK 支持使用 : x-chift-client-requestid 头曰. 这有助于防止重复创造资源。 见 开发者指南

// Create a client with idempotency
const client = await consumer.accounting.createClient({ name: 'Acme Corp' }, undefined, {
    clientRequestId: 'unique-request-id-123',
});

// Update a client with idempotency
const updatedClient = await consumer.accounting.updateClient(
    'client-id',
    { name: 'Acme Corporation' },
    undefined,
    { clientRequestId: 'unique-update-id-456' }
);

原始数据访问

SDK 支持使用 rawData 参数 :

// Get raw data from invoices
const rawInvoices = await consumer.accounting.getInvoicesByType(
    'customer_invoice',
    {},
    { rawData: true }
);

// Get raw data from orders
const rawOrders = await consumer.ecommerce.getOrders({}, { rawData: true });

发展

重新生成 OpenAPI 计划

npx openapi-typescript https://api.chift.eu/openapi.json -o src/types/public-api/schema.d.ts
npx prettier --write src/types/public-api/schema.d.ts

将结果与已有文件相比较 。 如果没有变化,就停止.

Schema 同步工作流程

重新生成后 schema.d.ts,在编辑模块前对 diff 进行分类:

  • 需要更新模块 当添加了新的终点时, 现有的终点将被移除或重新命名, 或者在其中引用的策略类型 src/modules 编号 : test/ 变化.
  • 仅更新一个计划就够了 当修改仅限于类型、enums或没有模块引用的字段,或仅是文档/格式化.

npm run build 通过并不证明模块覆盖完成,但也并不意味着模块必须总是改变。 检查 diff 和 现有 模块 覆盖 以决定 .

在添加了新的公用端点后,在SDK中曝光. 当只有非破解的图案改进了土地和模块中没有任何内容引用已改变的符号时,跳过模块编辑.

用补丁版本来完成 package.json,一个匹配 package-lock.json 更新(npm install --package-lock-only页:1 CHANGELOG.md 条目( 单独) 模块 财务报告和审定财务报表 司马 和成功的 npm run build。 。 。 .

模块布局

检查 src/modules/ 以学习当前结构。 总的来说:

  • 垂直 API( E)accounting, (中文(简体) ), banking, (中文(简体) ), ecommerce, (中文(简体) ), invoicing, (中文(简体) ), payment, (中文(简体) ), pms, (中文(简体) ), pos, (中文(简体) ), custom使用 a *Factory 模式并暴露在 consumer.<api>。 。 。 .
  • 消费者范围管理 API(连接、每个消费者同步、数据显示) consumer.ts。 。 。 .
  • 同步级别 API 已存在 syncs.ts。 。 。 .
  • 其他顶级 API 有匹配文件在 src/modules/。 。 。 .

新的顶级模块也必须接入 src/modules/api.ts (进口、财产和建筑商转让) client.<api>。 。 。 .

遵循目标模块中的现有方法. 从方案复制精确路径 paths 区域 —— 不要从操作名称中猜测 URL.

添加路径

图书馆处理活页. 如果图中的路由参数包含 page 财务报告和审定财务报表 size,使用时 AutoPaginatedParams<T> 用于模块中的路由参数.

如果 query 参数在策略中是可选的,声明 params 作为模块中的可选选项。 如果需要的话,请 params 所需经费.

例如,在 accounting.ts,则 parameters['query'] 页:1 operations['accounting_get_analytic_plans'] 应替换为 AutoPaginatedParams<operations['accounting_get_analytic_plans']['parameters']['query']>。 。 。 .

自兹 query 是可选的, getAnalyticPlans 应宣布为 getAnalyticPlans(params?: GetAnalyticPlansParams)。 。 。 .

返回类型

不要盲目复制 OpenAPI 响应类型 。 SDK运行时的形状取决于方法的接线方式:

  • 工厂方法 (单位:千美元)*Factory,打开 consumer.<api>(通过) createApiFor → makeRequest。用于标注 GET 列表终点, makeRequest 获取每页并返回 a 平面阵列 (b) 与项目有关的其他事项。 键入为 RequestData<Item[]> 使用页面图中的元素类型(例如). ContactItem[], (中文(简体) ), 没有 ChiftPage_ContactItem_。与同一模块中的兄弟姐妹列表方法相比,例如 getClients 或者说 getPayments。 。 。 .
  • 直接 InternalAPI 方法 (单位:千美元)consumer.ts, (中文(简体) ), syncs.ts,...) 打电话 _internalApi 直接返回原始 API 响应。 输入它们以匹配同一文件中的兄弟姐妹方法.

工厂方法返回 RequestData<...> 与 method, (中文(简体) ), url,可选择 params, (中文(简体) ), body, (中文(简体) ), rawData,或 clientRequestId。 。 。 .

当为新操作添加方法时, 在 src/types/public-api/mappings.ts。 。 。 .

综合测试 test/modules/ 取决于现场证书和测试环境数据。 在 schema 中断编译时将类型引用固定在那里,但不作为 schema 同步的一部分添加或运行集成测试——失败测试不是一个阻塞器.

对于之前的策略同步公关实例,请查看最近发生的触摸 schema.d.ts 财务报告和审定财务报表 src/modules/。 。 。 .

版本与发布记录

@chift/chift-nodejs 共发布 35 个版本,首次发布于 2023/09/14;过去 12 个月发布了 8 个版本。

版本发布日期距今
1.0.35latest2026/09/012 个月前
1.0.342026/05/135 个月前
1.0.322026/03/177 个月前
1.0.312026/03/137 个月前
1.0.302026/03/127 个月前
1.0.292026/02/168 个月前

关于 @chift/chift-nodejs 的常见问题

@chift/chift-nodejs 是什么?

Chift NodeJS库从以NodeJS语言(Javascript/Typescript)所写的应用程序中为Chift API提供方便访问.

如何安装 @chift/chift-nodejs?

在项目目录运行 npm install @chift/chift-nodejs,或使用 pnpm add / yarn add / bun add。

@chift/chift-nodejs 支持 TypeScript 吗?

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

@chift/chift-nodejs 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@chift/chift-nodejs 需要什么版本的 Node.js?

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

@chift/chift-nodejs 可以商用吗?

@chift/chift-nodejs 使用 Apache License 2.0 许可。声明的许可为 Apache License 2.0,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@chift/chift-nodejs 的下载量有多少?

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

@chift/chift-nodejs 还在维护吗?

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