@comms-id / website-logo
为通信键入的客户端。身份证网站标志API (https://api.comms.id/logo/v1):公司的标志,由其网站地址解析而成。
src/ 是根据网站标志合约(packages/website-logo-service/openapi/website-logo.v1.json) @comms-id/forge-transformers. 不要编辑它:更改合同并运行 pnpm --filter @comms-id/forge-transformers generate.
import { createWebsiteLogoClient } from "@comms-id/website-logo/server";
const client = createWebsiteLogoClient({
clientId: process.env.COMMS_ID_CLIENT_ID!,
privateJwk: JSON.parse(process.env.COMMS_ID_PRIVATE_JWK!),
});
const reply = await client.resolve({"hostname": "example.com", "mode": "direct-favicon"});
操作
resolve:使用选定的来源或命名的组合来解析网站徽标。真正的想念,是带身份思念的200回复;源故障仍然很明显。
每个操作都是读操作,可以安全地重复,并在可重试失败后重试。不匹配的应答是应答约定的结果之一:错误 outcomeOf(error) 的 no-match, source-unavailable 或者 failed;中断永远不是“不匹配”。
先测试一下
createWebsiteLogoFixtureClient() 从 @comms-id/website-logo/fixtures 从合同本身的例子中得到答案,没有网络,并说(fixture: true). 要调用TEST服务(合成回复,您的开发应用程序的键),请通过 environment: "test";上线只会改变环境和钥匙。
COMMS_ID_PRIVATE_JWK 是一架ML-DSA-87私人JWK (kty AKP, priv 和 pub). 服务器入口需要Node.js 24.7或更高版本,或者带有兼容性标志的Cloudflare Worker webcrypto_modern_algorithms.
条目: . (类型和错误,在浏览器中是安全的) ./server (每次呼叫都签名), ./browser (你的接力路线;从不签名), ./fixtures (本地装置,无网络), ./descriptor ( @comms-id/relay 可能向前)。
LICENSE 是消费者客户牌照。
图像
@comms-id/website-logo/controller 是网站标志图像的无头控制器:它向服务询问有关网站的信息并决定显示什么,并且拒绝任何通信之外的图像。主机ID。它没有框架,也没有DOM。 @comms-id/website-logo-react (一个钩子和一个组件) <comms-id-website-logo> (一个web元素)可以在上面运行,你自己的UI也可以。
import { createWebsiteLogoController } from "@comms-id/website-logo/controller";
const controller = createWebsiteLogoController({ client, site: "example.com" });
controller.subscribe(() => render(controller.getState())); // state.url is the image to load, or the letter state.monogram
src/local/profile.ts 是唯一特定于产品的部分:它读取站点,准备呼叫并接收通信。回复中的ID图像。其他一切都生成了。