@ farthershore/ 商业
SDK的功能 用于宣布路线、仪表、计划, 资源,以及普通类型脚本中的后端。 远岸 将这些宣言汇编成决定性宣言 明确IR 并应用边缘授权、限制、使用计量和计费.
状态 :
3.5.0。 。 。 . 此 SDK 版本独立于前端 后端的SDKs(英语:SDKs).
安装
pnpm add @farthershore/business
3.x API是一个功能值模型. 用一个 名称空间导入 :
fs.business() 返回一个不透明的控件,其编译清单保存在
非出口包单通. 原始对象和有计划有效 JSON 无法
冒充SDK出品的生意 由单独捆绑而成的生意
因此,SDK的物理副本被拒绝;在自己的进程中运行该副本
或将每个业务模块解析为同一已安装的软件包实例.
import * as fs from "@farthershore/business";
const requests = fs.requests();
const tokens = fs.meter("tokens", { unit: "token" });
const seats = fs.resource("seats", { cap: fs.scope.subscription });
// Routes need a backend; with exactly one, every route uses it implicitly.
fs.backend("api");
const chat = fs.route("/v1/chat", {
post: { costs: [requests.fixed(1)], reports: [tokens] },
});
const admin = fs.route("/v1/admin", {
post: { surfaces: [fs.surfaces.api] },
});
fs.plan("pro", {
kind: fs.plan.kind.flat,
price: fs.money.usd(49).monthly(),
grants: [chat, admin],
limits: [tokens.perMonth(1000000), seats.max(25)],
});
export default fs.business();
撰写模式
申报功能返回不可改变,品牌化的参考文献。 相互参照
所以打字机不能无声地 给缺失的仪表 后端 资源,
路径,或赠款组。 平台控制词汇按类型分类
命名空间, 如 fs.surfaces, (中文(简体) ), fs.scope,以及 fs.money; 建造者拥有
标记如计量器的单位仍然是字符串.
价格使用人的主要单位: fs.money.usd(49).monthly() 指每笔49美元
月并下至精确整数小单位. 每个计划都宣布 kind
(单位:千美元)fs.plan.kind.free | flat | usage | prepaid | hybrid | trial | custom; 计 数
此类物质的验证与计划的经济控制相对应(price, (中文(简体) ),
usagePricing, (中文(简体) ), funding, (中文(简体) ), lifecycle, (中文(简体) ), spendPolicy) 并且从未被推断
从形状。 使用费只存在于 fs.pricing() 目录和供资
水桶——一个计划没有每米的速率.
例如,测量器限制帮助使窗口清晰
tokens.perMinute(600) 或者说 tokens.perMonth(1000000)。 。 。 .
计划直接批准路线. fs.group() 可能会将路由参考器捆绑起来进行再利用.
特性、能力、特性门和字符串键授权不是
部分为 3.x 作者表面. 非洲区域局的启用由平台管理——a
业务上的仪表板/API旗,不是重写声明;前端
权限字符串仍然是独立的组件/成员授权
词汇.
订阅者群组也是平台拥有的发行状态. 构建者作者计划 参考和路线组; 核心指针用户不可改变编译计划组群 在申请和迁移期间。 不要将分组标识符或非洲区域局旗帜放入 Business SDK程序或手工Manification IR.
文件夹发现和隔离
传统方案以 business/; 管理启动器使用
business/business.ts,但发现文件名不可知:
business/
business.ts
routes.ts
plans.ts
编译器导入每个源模块 business/ 以条条序.
一个模块必须默认导出 fs.business()。在
重新设置在新工人领域的编译范围登记册
建造,因此无法单独建造和复制物理SDK装置
相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相.
普通类型Script是惰性的: 助手函数, 不相关的导入, 计算
常数、注释和额外出口不输入清单。 仅
SDK 创建的声明和密封默认 fs.business() 结果为
消费。 导入时丢入的模块生成文件位置构建
错误.
决定主义
业务单元必须具有决定性。 平台两次编译程序 且拒绝分道扬镳。 避免时间、随机性、网络呼叫、文件系统 以及以环境为依托的宣言.
主要声明
fs.requests()财务报告和审定财务报表fs.meter()宣布计量维度.fs.route(path, operations)声明路径首个 HTTP 操作 .fs.plan(key, options)宣布价格、直接路线赠款、限额、信贷、, 审判,花费界限和档案行为.fs.resource()宣布计算资源;resource.max(n)创建一个 按计划输入所有权限额.fs.backend()声明后端并返回可选择路由的参考文件 .fs.group()捆绑路线可重复使用.fs.business()封存注册,是唯一有效的默认导出.
重命名计数器
计数器 id 是它的稳定身份 和它的密钥的默认。 计划限制,
路由计量、定价、后端允许列表和使用历史均按键
根据身份,所以重命名一个表 通过改变它的键和钉住旧的
键为 id数字 :
// was: fs.meter("calls", { unit: "call" })
const apiCalls = fs.meter("api_calls", { id: "calls", unit: "call" });
// was: fs.requests()
const requests = fs.meter("billable_requests", { id: "requests" });
重命名 fs.requests() 保存默认值( 单位 ) request, (中文(简体) ), COUNT
汇总, estimated_then_settled 你所忽略的,
因此,重命名只改变名称。 (你宣称的普通计分器)
作为 fs.meter("requests", ...) 没有 fs.requests(): 当重新命名时, 拼写
任何你所依赖的选项
保持不变 id 在以后的每个重命名上。 重命名为已存在的无操作
用户(相同的计划版本、价格、限制和使用历史);默认
显示标签跟随新密钥,后端在其新密钥下报告公尺
键。 无需修改密钥 id 宣布新计数器( 现有用法不
结转). 计数器的键可能不等于
又一个计数器 id键或键 id。 。 。 .
前端页面和导航在可编辑区域中直播 frontend/ 应用.
路线 surfaces 声明某项操作是否可以从API证书中调用,
平台UI,或两者;它们不声明前端路线.
使用混凝土或 OpenAPI 样式的路由 {parameter} 路径和列表 HTTP
实际存在的操作。 结卡是非授予选择者
在单独申报的路线上附加共享计量:
const tokens = fs.meter("tokens", { unit: "token" });
const createChat = fs.route("/v1/chat", {
post: { surfaces: [fs.surfaces.api] },
});
const getChat = fs.route("/v1/chat/{id}", {
get: { surfaces: [fs.surfaces.api, fs.surfaces.ui] },
});
fs.meterRoutes("chat-tokens", "/v1/chat/**", {
reports: [tokens],
});
fs.plan("pro", {
kind: fs.plan.kind.flat,
price: fs.money.usd(49).monthly(),
grants: [createChat, getChat],
limits: [tokens.perMonth(1000000)],
});
meterRoutes(key, target, options) 总是带一个作者提供的稳定
键。 通配符字符串、赠款组或数组目标是一个结构计量
在匹配的路线上覆盖;一个单一的路线参考目标就是该路线的
商业计量约束(reports 已申报的公尺 measures附加时
入学限制)。 它从不创建或授权操作 和选择者
匹配未声明的路由失败 。 本地路线 reports 或者说 costs
装订替换该操作所继承的通配符;
没有操作 costs编号 :reports (而且没有重叠匹配)没有得到满足.
业务身份和列报元数据为平台所有,不是 写在这个SDK.