@fayz-ai/shop

中文文档
0.95.1发布于 2026/11/12MITTypeScriptES Module近 30 天下载 1.3万

Fayz SDK ecommerce layer — products, orders, customers, discounts, shipping

原始使用文档
文档目录5 节
  1. What's inside
  2. Install
  3. Usage
  4. Part of the Fayz SDK
  5. Roadmap & contributing

@fayz-ai/shop

The commerce layer behind every Fayz storefront — products, orders, customers, discounts, shipping.

npm license

Status: beta — published to npm and used across Fayz dogfood apps. Pre-1.0: minor APIs may change before 1.0.

@fayz-ai/shop is the headless ecommerce engine: a ShopProvider contract plus the domain types for products, carts, orders, customers, discounts, and shipping. It owns what commerce means so the storefront (@fayz-ai/storefront) and admin surfaces only have to render it.

It's provider-first by design. Ship a demo on createMockShopProvider, then drop in createSupabaseShopProvider (or your own ShopProvider) for real data — the UI doesn't change. Tenancy is resolved through a pluggable resolver, so the same engine serves one store or a marketplace of thousands.

What's inside

  • ShopProvider contract — the one interface every backend implements
  • Providers — createMockShopProvider (demo/offline) and createSupabaseShopProvider (real)
  • Runtime — getShopProvider / setShopProvider singleton wiring
  • Tenancy — setShopTenantResolver / getShopTenantId for multi-store isolation
  • Public domain types — products, orders, customers, discounts, shipping
  • StockStore contract (@fayz-ai/shop/inventory) — stock as an append-only ledger rather than a scalar, with a Supabase and an in-memory implementation held to one shared contract suite

Install

npm install @fayz-ai/shop

Peer deps: @fayz-ai/core, @fayz-ai/ui, @fayz-ai/auth (+ react, react-dom).

Usage

import { setShopProvider, createSupabaseShopProvider } from '@fayz-ai/shop'

setShopProvider(createSupabaseShopProvider({ /* supabase + storeId */ }))

Stock is a ledger: movements are appended, balances are derived from them, and available = on_hand − reserved. The same code runs against either implementation.

import { createSupabaseStockStore } from '@fayz-ai/shop/inventory'

const stock = createSupabaseStockStore()
await stock.recordMovement({
  variantId,
  kind: 'receipt',            // vocabulary rows, not a hardcoded enum
  reasonCode: 'purchase',
  quantity: 12,               // signed; the kind's direction decides the sign
  idempotencyKey: `po-1180:${variantId}`, // a retry returns the same movement
})
await stock.getAvailable(variantId)

Part of the Fayz SDK

The commerce engine @fayz-ai/storefront renders and @fayz-ai/plugin-shop administers. Pair with @fayz-ai/sdk's shop client for generated storefronts.

Roadmap & contributing

Built and evolving in the open. See the Fayz SDK roadmap.

版本与发布记录

@fayz-ai/shop 共发布 106 个版本,首次发布于 2026/06/20;过去 12 个月发布了 106 个版本。

版本发布日期距今
0.95.1latest2026/11/122 天前
0.94.02026/11/112 天前
0.92.32026/11/113 天前
0.92.22026/11/113 天前
0.92.12026/11/113 天前
0.92.02026/11/113 天前

其他发布通道:next → 0.9.0-next.1,canary → 0.76.0-canary.20261028153856。

关于 @fayz-ai/shop 的常见问题

@fayz-ai/shop 是什么?

Fayz SDK ecommerce layer — products, orders, customers, discounts, shipping

如何安装 @fayz-ai/shop?

在项目目录运行 npm install @fayz-ai/shop,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.0.0 || ^19.0.0)、zustand(^4.5.0 || ^5.0.0)、react-dom(^18.0.0 || ^19.0.0)、lucide-react(>=0.400.0 <1.0.0)、@supabase/supabase-js(^2.45.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@fayz-ai/shop 支持 TypeScript 吗?

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

@fayz-ai/shop 支持 ESM 还是 CommonJS?

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

@fayz-ai/shop 可以商用吗?

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

@fayz-ai/shop 的下载量有多少?

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

@fayz-ai/shop 还在维护吗?

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