@ funnelsgrove/ 运行时间
共享漏斗运行时间合同和助手.
在编辑共享漏斗力学前读取此文件. 更深的运行时间行为是
记录 docs/product-specs/funnel-template-runtime.md。 。 。 .
拥有漏斗力学
@funnelsgrove/runtime 拥有每个生成或发布的漏斗所依赖的可重复使用的力学:活性能,路由能,env分辨率,漏斗状态,预览/运行时间检测,以及通用运行时间UI. 漏斗带来自己的复制品,外观设计,计费目录,并步JSX.
使用此软件包
- 显示类型和验证
- 路由分辨率和出入口处理
- 运行时模式和公域/配置解析度
- 实验任务助手
- 预览桥解析和预览/运行时间检测
- 已发布的主题合同和 CSS 变量助手
- 漏斗上下文、流量控制器和通用运行时 UI 原始
- 漏斗瞄准镜状态/存储助手
- 浏览器安全 API 客户端帮助器
- 通过被动浏览器查询字符串访问
useBrowserLocationSearch - 订阅交接和订阅管理屏幕,其副本保留为漏斗-本地
- 用于漏斗预览工具的测试模式开发者信息表面
不使用此软件包
- 漏斗专用步骤
- 品牌/主题资产
- 计费目录数据
- 分析运输
- 条条检出 UI
- 漏斗专用开发者部件副本
- 直接提供者 SDK 电话
公众表面
config/*:可显示,主题,字体,env,以及构建者-审查合同.runtime/*:流出,路由,归属,特征旗,预览桥,URL属性,并显示验证.runtime/published-runtime-resolution: 运行中的实验正常化和从定价任务中选择不可改变的报价. 内容paymentProvidersByMode结果揭示了选定报价的明确测试/使用 提供者; 缺少配置null而非退职.services/*:API客户端,运行时模式,公共env,项目env,logger,和漏斗状态帮助器.components/*:通用运行时间上下文,订阅交接/管理,编辑面板,dev信息,和基础控制.content/*财务报告和审定财务报表steps/types:共享步骤内容和分类合同.
浏览器 SDK 结构
funnelSdkService 仍然是公共切入点,采用同样的十八种方法
和导出输入/响应类型。 它是自动同步函数的普通对象; 方法
也可以在不丢失的情况下进行结构调整 this 装订.
执行生活 services/funnel-sdk/组合 users, (中文(简体) ), uploads, (中文(简体) ),
checkout,以及 subscriptions。每种用途都有其终点和顺序.
除使用外保留请求映射器(例如,
checkout/requests.ts),而非在通用绘图层. 只有运行时间身份,
信头、 JSON 传输和 API 错误处理属于 shared/。 。 。 .
SDK HTTP请求为漏斗服务. 服务器对服务器集成客户端和直接 付款提供者的电话不属于这里。 不创建工作流程类或文件 这些短请求序列。 照片上传准备通过API上传, 然后将原始的blob直接发送到其已签名的目的地,没有SDK头.
从0.1.2.0起,付款和订阅方法总是使用付款V2,包括:
主机检出 。 继承的 paymentsApiVersion: 'v1' 不再选择 V1.
通过公布的要约/简介/提供者/计划选择;订阅变异
需要列表 subscriptionRef。 。 。 . createOneTimePaymentIntent 删除;
使用情况 createOneTimeCheckout 退出会话 UI 而不是通过它的
密于支付意向表。 服务器 V1 路由被移除 。 在0.13.0中,公共配置歧视者
仅为 V2 , 且继承的运行时快照正态化为 V2 。 更新已公布的旧文件
部署服务器退役前的捆绑 。 按键的退出创建可能重放一个传输
失败的尝试相同; 付款错误永远不会回落到 V1.
funnel-sdk.contract.test.ts 获取电线合同,而
funnel-sdk.http.test.ts 练习真正的回回转 HTTP 和签名上传 .
FunnelSdkHttpError 与外观一起导出,使消费者可以缩小
错误而不导入运输内部。 它的字段和重放语义
定义在 公共 SDK 参考。 。 。 .
会话 API 结构
apiService 保持13种公共方法和4种公共类型的出口。 没错
也是一种简单的函数对象,在 services/session/数字 :
bootstrap/: 验证候选身份,再利用请求范围化的一能键, 拖曳一次,只清除已完成的记录,并映射产生的用户.users/财务报告和审定财务报表emailCapture/: 配置更新和电子邮件抓取,包括 sDK API 先前记录的可选版本寿命周期认可有效载荷 捕获事件有资格产生副作用,并命名为请求/答复 地图员和电子邮件响应验证 .uploads/: 将原始文件委托给 SDK 签名的上传, 然后验证 ; 本地对象 URL 仅仅是无键倒置.subscriptions/:从管理URL中解析身份,验证身份,以及 打给SDK 永远不要以存储的会话身份取代缺失的链接 .identity.ts财务报告和审定财务报表bootstrap/idempotency.ts: 拥有会话存储力学.ping/transport.ts: 拥有同源,最优的ping及其错误处理.
这些是用例文件夹,而不是另一个工作流程或数据层. 继续请求和
响应映射器纯度:通过运行时模式/修改,而不是读取
映射函数内部的浏览器配置 。 SDK请求仍然通过
funnelSdkService;只有同源ping拥有单独的HTTP边界.
在持久性之前验证电子邮件/名称。 保存失败的靴子夹
用于明确重试的密钥,绝不在不确定的写入中添加自动重试.
取出前会话测试仍为不变的行为基线. 会议 边界测试保护外观和基础设施所有权; 真正的回路 测试 roottrap/ profile/ 电子邮件、 只使用 URL 的订阅管理, 明确 靴子夹重试,二进制通过两个API外观上传.
储存公约
- 运行时用户 id 保持漏斗扫描
funnel:<funnelId>:user-id - 运行时生成的用户 id 使用
u_前缀 - paywall 状态通过运行时的助手存储
fg_state:<funnelId> - 开发者重置控件时, 应通过
clearPaywallStateValue,包括活漏斗仍然需要时的漏斗提供兼容性密钥
工程规则
- 不导入
@funnelsgrove/payments或者说@funnelsgrove/analytics这里的检查或运输管弦乐. - 运行时 UI 必须通用并可以复制输入.
- 当 SSR 水合物可能受到影响时,只浏览器值必须在挂载后解决.
- 订阅交接应用程序和通用链接时,即使知道漏斗用户电子邮件
配置模板省略
{email}。存储链接从未收到电子邮件,包括不区分大小写email在配置的 URL 或先触控属性中存在的密钥. - 漏斗代码不能复制
useSyncExternalStore编号 :popstate查询串钩. 使用useBrowserLocationSearch;共享控制器也在后面通知history.pushState财务报告和审定财务报表history.replaceState导航. - 将嵌入式映射集中到
config/env.config.ts。 。 。 . - V2 退出选择需要要约集, 付款配置, 提供者, 提供者
计划的关键.
runtimeConfigRevisionId是可选的,不能打开 ; 部署不会使原未改变的提议无效。 继续 转发为旧的 API 版本提供的修订版。 部署相容性 API在推出SDK调用器之前,忽略了它.
构建、测试、发布
npm run test:run --workspace @funnelsgrove/runtime
npm run build --workspace @funnelsgrove/runtime
npm publish --workspace @funnelsgrove/runtime --access public
该建筑使产生的相对无害环境管理进口商品正常化,使之明确 .js 用于已发布的软件包消费者的文件.
供货商的钱
ProviderMoney 带有整数 amountMinor,已规范化 currency,并明确 minorUnitExponent。 。 。 . moneyToMajor 财务报告和审定财务报表 formatProviderMoney 使用此合同而不从当地人那里推断出比例。 提供方适配方拥有特定货币规则. 运行时快照宣布 moneyContractVersion: 1 每一个规划的提供者计划都需要有效的资金。 遗产快照保留了明确的标签;缺钱不是假设美元的指示.
浏览器提供本地地址
基于语言的要约选择使用浏览器语言,独立于漏斗的内容语言. useBrowserOfferLocale 通过水合,然后相匹配 navigator.language 准确到其中之一 OFFER_SET_LOCALES,地方目录代码(pt-br → pt-BR· ; ru-RU 没有变成 ru) (中文(简体) ). 其他语言解决漏斗默认.
已出版的 schema 2 可声明快照 localeContractVersion: 1。每套报价随即携带 locales: null | string[]; 完全无效。 分配的定价实验优先于明确的地块匹配,然后是指定的活动全地默认. V1不会回到任意的第一组. 未知版本, 缺少地语域和无效的默认失败验证 。 未转换快照保留了后遗症适配器.
支持的来源文物包括: funnel.runtime-capabilities.json 与支持的资金, 地方和国家合同版本.
游客提供国
访问国在浏览器语言之前选择“ 提供集” . useVisitorOfferCountry(enabled) 通过水合待决 enabled (使用时 offerSetsTargetCountries(config.offerSets)它读了主机的 <meta name="fg-visitor-country"> 从私人文档中获取,否则请求未标记 /api/visitor-country 每页决定一次 OFFER_SET_COUNTRIES 代码,或改为 null 失败后,未指定代码或2秒超时。 没有以国家为目标的报价,它决心 null 没有要求。 过 country 选择,连同 locale;在测试支付模式下, ?country=XX 超过QA.
显示快照 countryContractVersion: 1 携带 countries: null | string[] 在每套提议中,都有一个例外。 选择顺序是指定定价实验,明确的国家,明确的地方,然后是默认. 出版物以不可改变的元数据记录该声明。 本地化的运行时间更新和重试需要该版本的接收;仅更改要约设置并不能部署漏斗.