微缩字域集
@filteringdev/tinyshield-domain-collection 发布对返回域视图的决定性快照 @filteringdev/tinyshield-lib/references。 。 。 .
软件包每天生成一次。 新的补丁版本只有在犬目域内容发生变化时才会被发布.
安装
npm install @filteringdev/tinyshield-domain-collection
使用软件包入口处的库函数 :
import { getDomainsList, isAllowedToRun } from '@filteringdev/tinyshield-domain-collection'
const domains = getDomainsList()
const allowed = isAllowedToRun(new URL('https://sub.example.com/path'))
getDomainsList() 返回已排序、通配符扩展的新副本 Full 域名列表. isAllowedToRun() 使用二进制搜索来匹配精确的URL主机名或DNS标签边界上的父域.
isAllowedToRun(new URL('https://example.com/'))
// true when example.com is listed
isAllowedToRun(new URL('https://deep.a.example.com/'))
// true when example.com is listed
isAllowedToRun(new URL('https://notexample.com/'))
// false when notexample.com is not listed
从键入的函数相同 @filteringdev/tinyshield-domain-collection/lib 子路径。 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}小盾应该叫 getDomainsList() 仅从其构建器中,所以此数据包不会被捆绑到用户标记中。 Extra 等运行时消费者可以使用 isAllowedToRun() 决定小Shield是否应运行一个 URL .
这个 Full 列表之所以使用,是因为 Normal 可能包含通配符后缀模式,例如 domain.*. 现有数据常数仍然可供兼容:
import {
Normal,
Full,
EachDomain,
EachDomainFull,
Manifest
} from '@filteringdev/tinyshield-domain-collection'
单个 JSON 文件也导出 :
import Normal from '@filteringdev/tinyshield-domain-collection/normal.json' with { type: 'json' }
已发布文件
| 导出 | JSON 形状 | 说明 |
|---|---|---|
normal.json | string[] | 从微小的Shield取取器复制出域图案. |
full.json | string[] | 通配符后缀扩展后的图案. |
each-domain.json | string[][] | 按可注册域分组的正常模式. |
each-domain-full.json | string[][] | 通配符后缀扩展后分组图案. |
manifest.json | 对象 | 斯克马 源包 计数 和可口内容散列. |
每个平面列表,每个组,组列表均由Unicode代码点排序. 所生成的文件不包含时间戳,因此同源内容产生字节换字节相同的输出.
manifest.json 有此形状 :
type DomainCollectionManifest = {
readonly SchemaVersion: 1
readonly ContentHash: string
readonly SourcePackage: '@filteringdev/tinyshield-lib'
readonly SourcePackageVersion: string
readonly Counts: {
readonly Normal: number
readonly Full: number
readonly EachDomain: number
readonly EachDomainFull: number
}
}
EachDomain 财务报告和审定财务报表 EachDomainFull 数是组数. ContentHash 这是一种SHA-256的四条犬域有效载荷的文摘,不包括货包版本和建立时间.
更新
预定的工作流程每天于协调世界时00:00运行,也可以手动启动. 它执行这些步骤:
- 林特和测试发电机.
- 通过 npm 发布获取活域数据
@filteringdev/tinyshield-lib。 。 。 . - 用重试下载最新的 npm 软件包,并将其表单与生成的散列进行比较 .
- 散列不变时退出而不发布 .
- 仅增加补丁版本,并在内容改变或推广预放时通过npm信任的出版发布.
当最新的npm包是预放时,工作流程将它推广到稳定的版本,即使域散列不变. 当上游请求、重复的 npm 注册查询、 计划验证或构建失败时, 工作流程失败, 不发布 。 减少25%以上 Normal 计数也被屏蔽 。 维护者可以审查修改并使用手册 allow-large-change 输入允许它.
生成的文件和只使用工作流程的版本更改不承诺给 Git 或标记 .
发展
需要节点.js 24和pnpm.
pnpm install --no-lockfile
npm run lint
npm test
npm run build
npm run pack:check
单元测试使用固定装置,不访问网络. npm run build 是实时的整合检查,并将公共软件包写到 dist/。 。 。 .
第一个 npm 发布
信任的发布只能在 npm 上存在软件包后才能配置. 维护者必须公布已核实的 0.0.1 软件包曾经使用交互 npm 认证和两个要素认证.
在第一次发布后, 配置 npm 软件包中信任的出版商 :
- 提供者: GitHub 动作
- 组织:
FilteringDev - 仓库 :
tinyShield-domain-collection - 工作流程文件名 :
publish.yml - 允许的行动 :
npm publish
然后手动运行工作流程以验证OIDC认证. 工作流程需要节点24,npm 11.5.1或更新的,一个由GitHub托管的跑者,以及 id-token: write。它不使用长寿 npm 符号。 npm自动为符合条件的公共寄存器发布创建出处.
来源和许可证发放
这个寄存器库中的生成器代码是麻省理工学院许可的. 通过第三方来源收集生成的数据 @filteringdev/tinyshield-lib这些消息来源保留了自己的条款。 见 第三次议会 NoTICES.md 在重新分配数据之前.