@baselayer-sdk/autocomplete

中文文档
0.10.0发布于 2026/10/29Apache-2.0TypeScriptESM + CJS构建来源已验证近 30 天下载 4231

浏览器的 Baselayer 业务自动完成: 无框架客户端, React shooks 和 有样式的打字头, 以及服务器侧会话薄荷帮助器

中文使用文档
文档目录8 节
  1. 安装
  2. 如何融为一体
  3. 1. 在后端添加薄荷端点
  4. 2. 减少部分
  5. 3. 将取出物与搜索
  6. 文档
  7. 发展
  8. 许可证

@ baselayer- sdk/ 自动完成

由Baselayer的注册人支持,自动完成自己的产品 帮助打字的人选择正确的业务。 每个建议都是 已经与周围实体有联系的教会实体:企业 携带注册的州、官员、代理人和地址以及 business_token 让你的基地管理员的搜索 完全是为了那个事业.

它找到一种三种商业方式: 以它的名字, 由在 它,或者通过一个地址 它存档。 不管怎么说,挑剔就是生意.

释前. 至1.0,一个突破的更改会撞出小版本. 1.0冻结API.

The typeahead for "harbor concrete pum"

  • 无框架核心 (单位:千美元)@baselayer-sdk/autocomplete: 会话,刷新, 退后,每个拒绝 API可以回答,为你处理.
  • 反应 (单位:千美元)@baselayer-sdk/autocomplete/react:无头钩,并有风格 组件, BusinessAutocomplete, (中文(简体) ), PersonAutocomplete 财务报告和审定财务报表 AddressAutocomplete准备离开盒子, 并恢复到结束.
  • 服务器助手 (单位:千美元)@baselayer-sdk/autocomplete/server: 一个终点 您的后端添加了此选项, 因此您的 API 密钥永远不会到达浏览器 .

安装

npm install @baselayer-sdk/autocomplete

反应 18 或 19 是可选的对等点; 核心和服务器助手需要 无论是反应还是DOM.

如何融为一体

The browser, your backend and Baselayer, and the five hops between them

  1. 当球场得到焦点, SDK 询问您的结束点一个会话 。  自己的饼干认证电话.
  2. 您的后端用您的 API 密钥将它薄荷化, 转发页面 Origin, (中文(简体) ), 并返回 Baselayer 的答案不变.
  3. 每个按键都直接用页眉向下划线: 没有饼干,没有钥匙.
  4. 挑一排手拿起你的形体 business_token。 。 。 .
  5. 您的后端发送符号 POST /searches因此,搜索 解决了被选中的事务.

你的API密钥留在后端 浏览器只持有短寿命 绑定在您的页面源头并带有自身请求的会话 预算.

要求重点提交:

Every request between the browser, your backend and Baselayer

两幅图都是网站的自有图,由 : pnpm diagrams页:1 当文件落在组件后方时, 测试失败 .

1. 在后端添加薄荷端点

Next.js (App路由器), 以 app/api/ac-session/route.ts数字 :

import { createMintHandler } from "@baselayer-sdk/autocomplete/server";

export const POST = createMintHandler({
  apiKey: process.env.BASELAYER_API_KEY!,
  allowedOrigins: ["https://app.example.com"],
});

快捷键 :

import { mintForOrigin } from "@baselayer-sdk/autocomplete/server";

app.post("/api/ac-session", requireLogin, async (req, res) => {
  const origin = req.get("Origin");
  if (!origin || !ALLOWED.has(origin)) {
    return res.status(403).end();
  }
  const out = await mintForOrigin({
    apiKey: process.env.BASELAYER_API_KEY!,
    origin,
  });
  res.status(out.status).set(out.headers).json(out.body);
});

任何其他后端: 见 薄荷终端合同。 。 。 . 将路线放在自己认证的后面, 就像其它的 API : 每场比赛,你的终点薄荷 都与你的组织池无关.

2. 减少部分

import { useState } from "react";
import { BusinessAutocomplete } from "@baselayer-sdk/autocomplete/react";
import "@baselayer-sdk/autocomplete/react/styles.css";

export function LegalNameField() {
  const [name, setName] = useState("");
  const [businessToken, setBusinessToken] = useState<string>();
  return (
    <BusinessAutocomplete
      id="legal-name"
      label="Legal entity name"
      baseUrl="https://api.baselayer.com"
      mintUrl="/api/ac-session"
      value={name}
      onChange={value => {
        setName(value);
        setBusinessToken(undefined); // an edit is no longer the pick
      }}
      onPick={(_, pick) => setBusinessToken(pick.businessToken)}
    />
  );
}

id 种子组合框的 id: 输入是 ${id}-input标签 ${id}-label 菜单 ${id}-menu字段被控制 : value 实值 还有你 onChange 报告打字。 一通电话 onChange 与行 那么,犬形名称 onPick(suggestion, pick),所以清除符号在 onChange,如上,保持选择。 一个模糊的从不挑剔.

其中一个就是连接它:

  • mintUrl 财务报告和审定财务报表 baseUrl:你的终点,用你自己的饼干 (单位:千美元)defaultMint(mintUrl), (中文(简体) ), credentials: "same-origin") (中文(简体) ).
  • mint 财务报告和审定财务报表 baseUrl: 属于您的 MintFunction,任何其他电话.
  • client,没有 baseUrl: 客户端 createAutocompleteClient, (中文(简体) ), 共享到多个字段; 组件从不重置它获得的客户端.

第一个 mint 或者说 mintUrl 用于组件的生命; 新的 baseUrl 重新创建其客户端。 其余是可选的:

  • mintOn (单位:千美元)"keystroke"当会话定了的时候 MINT_TIMINGS (类型) MintTiming) (中文(简体) ). keystroke 薄荷在第一个 按键中键, 重排打字的其余部分, 因此单击该类型 无所花去薄荷; focus 薄荷随着田地的集中 所以 第一项答复只涉及其建议; request 薄荷与第一个 请求,答案等待.
  • enabled (单位:千美元)true: 关闭, 字段是一个简单的输入; 没有什么是刻薄的 而不问任何问题.
  • limit (单位:千美元)5,或会议次数最多时: a. 键弦,从1到20的整数,不超过会话次数最多; 在发送之前, 任何其它内容都会被拒绝, 没有打开菜单.
  • minChars (单位:千美元)3:在按键被发送前被修剪字符.
  • debounceMs (单位:千美元)250:按键键发出前的暂停;a 新的按键键取消 .
  • filters: 缩小每个查询发送的过滤器。 虽然文字比较短 并且菜单要求当事人 继续打入( n)messages.filtersNeedMore,则字符不变 缺少,如果你想说一个数字); a client 你通过自己的 onShortStem (单位:千美元)过滤器) (中文(简体) ).
  • onUnavailable({ unavailable }):当部署停止时呼叫 能够薄荷(503代码481),并在可以时再次; 使你的平地 同时输入.
  • list:按以下顺序排列: 企业的官员和代理人people) 及其定义 addresses无 默认,每行都是它一直以来唯一的选项 (单位:千美元)一个商业行的行) (中文(简体) ).
  • enabledLines (单位:千美元)["business"]和 onPickEntity: 哪些行可以选择. 名称 person 或者说 address 警官或被选中的住址也会去 onPickEntity 作为 EntityPick,则需要 (单位:千美元)选择什么) (中文(简体) ).
  • showSelection (单位:千美元)true:在选定军官或地址后,一行 在字段名称下 (单位:千美元)球场下的一行) (中文(简体) ).
  • iconSegments 财务报告和审定财务报表 icons: 带图标的片段(无 默认; ["name", "address"] 在名称和地址之前绘制一个 和你自己的图标,按实体或实体和角色,或 false 无 (单位:千美元)图标) (中文(简体) ).
  • include:自动完成服务为每行扩展的关联实体, 默认情况下 layout 地点和地点 list 列表。 自己画行 与 renderRow 上面写着: include={["people"]}。 。 。 .
  • label: 默认文字 <label>;没有它,就没有画.
  • name, (中文(简体) ), inputRef, (中文(简体) ), onFocus 财务报告和审定财务报表 onBlur:输入的,通过.
  • look, (中文(简体) ), layout, (中文(简体) ), menuWidth, (中文(简体) ), menuFollowsInputWidth, (中文(简体) ), open, (中文(简体) ), classNames, (中文(简体) ), renderLabel, (中文(简体) ), renderInput, (中文(简体) ), renderRow 财务报告和审定财务报表 unstyled: 见 样式· ; layout 是行中的每个位置的字段 显示( e)一行的地盘和地盘) (中文(简体) ). messages: 见 错误状态。 。 。 .

您的后端发送符号为 POST /searches 机构 :

{ "business_token": "…" }

象征着 name 财务报告和审定财务报表 address: 自行发送,因为 搜索拒绝一个携带它的尸体 任何一旁.

然后,搜索决定了 确切的行业被选中。 一个标志 15分钟BUSINESS_TOKEN_TTL_SECONDS,900) 从行是 服务。 这个 pick 那个 onPick 手拿着它 businessToken, (中文(简体) ), 与 pickedAt 财务报告和审定财务报表 expiresAt (时代 ms, pickedAt 加上这15个 分钟). expiresAt 是咨询,有点晚了,自从钟开始 (a) API是拒绝代号(422代号3042)的东西。 若为 搜索时拒绝(终止,或业务已去),丢弃标志 搜索对象 name 财务报告和审定财务报表 address 已输入 : refusedThePin(status, code) 告诉你什么时候才对.

这个 pick 还携带 matchedOn:这行除了名字之外,还匹配什么, 当来访者受到官员、地址或状态的限制(见 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}对吗(三); [] 单挑名字 已经到达.

PersonAutocomplete 财务报告和审定财务报表 AddressAutocomplete 通过一个 个人或地址。 菜单中的每个人或地址都有多少 每一条线,其中之一 这些企业: onPick 给你一个 BusinessPick 同样的 businessToken,则 businessName 为您命名字段,以及 through,则 个人或地址是:

<PersonAutocomplete
  id="officer-name"
  label="Officer's name"
  baseUrl="https://api.baselayer.com"
  mintUrl="/api/ac-session"
  value={typed}
  onChange={setTyped}
  onPick={pick => {
    setBusinessName(pick.businessName);
    setBusinessToken(pick.businessToken);
  }}
/>

一个商业行可以列出它导致的相同方式,每个线条 警官、探员和下方的住址 让警官也来选

<BusinessAutocomplete
  …
  list={["people", "addresses"]}
  enabledLines={["business", "person"]}
  onPick={(_, pick) => setBusinessToken(pick.businessToken)}
  onPickEntity={officer => setOfficer(officer)}
/>

生意总是排成一行的 选一个警官 手执 onPickEntity { type: "person", token: null, label } (一行人数) 将企业名称放入字段,并在 线条下。 见 企业、人员和地址。 。 。 .

会话搜索其范围允许的, 您的薄荷终点可以缩小 (见 缩小会话),以及 sDK从不要求外面的东西.

文档

发展

pnpm install
pnpm test          # vitest: core, server and site in node, react in jsdom
pnpm typecheck
pnpm lint
pnpm build         # dist/ with ESM, CJS and type declarations
pnpm site          # the site on http://localhost:3000
pnpm demo          # the same, opened on the demo, forwarding to production
DEMO_API=sample pnpm demo   # the demo on made-up data, with no network

释放是标记;见 捐款额。 。 。 .

许可证

阿帕奇 - 2.0

版本与发布记录

@baselayer-sdk/autocomplete 共发布 12 个版本,首次发布于 2026/09/25;过去 12 个月发布了 12 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.10.0latest2026/10/299 天前
0.9.02026/10/1821 天前
0.8.02026/10/1523 天前
0.7.02026/10/1325 天前
0.6.02026/10/1226 天前
0.5.02026/10/0929 天前

其他发布通道:next → 0.1.0-rc.0。

关于 @baselayer-sdk/autocomplete 的常见问题

@baselayer-sdk/autocomplete 是什么?

浏览器的 Baselayer 业务自动完成: 无框架客户端, React shooks 和 有样式的打字头, 以及服务器侧会话薄荷帮助器

如何安装 @baselayer-sdk/autocomplete?

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

@baselayer-sdk/autocomplete 支持 TypeScript 吗?

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

@baselayer-sdk/autocomplete 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@baselayer-sdk/autocomplete 需要什么版本的 Node.js?

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

@baselayer-sdk/autocomplete 可以商用吗?

@baselayer-sdk/autocomplete 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@baselayer-sdk/autocomplete 的下载量有多少?

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

@baselayer-sdk/autocomplete 还在维护吗?

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