@ecosyste-ms/关键
SQLite 关键开源软件包数据库 生态系统。 。 。 .
该数据库每天被重建并被发布到npm,并作为GitHub发行. 使用的版本 MAJOR.MINOR.YYYYMMDD 其中主要/次要的音轨变换和补丁是构建日期.
安装
npm install @ecosyste-ms/critical
包包括一个预建的 critical-packages.db 文件 :
import { databasePath } from "@ecosyste-ms/critical";
import { DatabaseSync } from "node:sqlite";
const db = new DatabaseSync(databasePath);
const pkg = db.prepare("SELECT * FROM packages WHERE name = ?").get("lodash");
以 TypeScript 编写并随类型声明一起发布; 行塑造构建
边与(ApiPackage, (中文(简体) ), ApiAdvisory, (中文(简体) ), ApiRepoMetadata, (中文(简体) ), BuildInfo已经
以类型导出.
从1.3.0开始 包有一个运行时间依赖, @ecosyste-ms/ecosystems-ts, (中文(简体) ),
用于 Ecosyste.ms API 的输入客户端。 通过它与API的建设谈判
而不是通过手卷取取层, 因此重试、 速率限制和登记路径
生活在一个地方 跨越生态系统包。 这个版本是完全固定的,因为
工作日报上刊登的都是无人关注的。 读取捆绑的数据库时仍不触摸
不过 node:sqlite。 。 。 .
见 生态系统/mcp 一个完整的例子.
下载
您也可以直接从 页 次数字 :
critical-packages.db- 未压缩的 SQLitecritical-packages.db.gz- gzip 压缩
大楼
为了自己建立数据库:
import { build, createDatabase } from "@ecosyste-ms/critical";
await build({
dbPath: "critical-packages.db",
fetchVersionsData: true,
onProgress: console.log,
});
从命令行 :
npx @ecosyste-ms/critical # full build with versions
npx @ecosyste-ms/critical --skip-versions # faster, packages only
npx @ecosyste-ms/critical -o my-db.db # custom output path
npx @ecosyste-ms/critical --stats # show database statistics
设定 ECOSYSTEMS_MAILTO 到一个联系地址之前,一个完整的建筑。 生态系统 API
允许匿名电话 大约每小时5000个请求 和一个完整的建筑围绕
9,700;一个能自我识别的建筑得到大约15,000个. 没有它的大部分版本
取来的钱是有限的 build() 扔出而不是发布数据库
其版本丢失了5%以上.
[email protected] npx @ecosyste-ms/critical
发展
npm ci
npm run build # tsc: lib/*.ts -> dist/
npm test # vitest, against lib/ sources -- no build needed
npm run test:packaged # packs the tarball and tests what it ships
npm run lint # biome check + tsc --noEmit
npm run format # biome check --write
npm run build:db # build critical-packages.db from the API (what the daily job runs)
默认套房运行于 lib/ 并且不需要建设步骤. test:packaged 实值
因为它会构建,运行 npm pack,并锻炼所提取的柏油丸
入口、导出表面和 bin - 支票 抓住一个破碎 exports 地图
而不是打破逻辑.
已公布的软件包为平版JavaScript,因此消费者留在了节点QQ22.5.0层
那个 node:sqlite 设定.
司马
软件包
| 栏 | 类型 | 说明 |
|---|---|---|
| 编号 | 进口 | 生态系统的主要密钥 |
| 生态系统 | 文本 | 一揽子生态系统(npm、pypi、红宝石等) |
| 名称 | 文本 | 软件包名称 |
| 布尔 | 文本 | 软件包 URL (pkg:npm/lodash) |
| 命名空间 | 文本 | 如果适用, 包名空间 |
| 说明 | 文本 | 软件包描述 |
| 主页 | 文本 | 项目主页 URL |
| 仓库url | 文本 | 源寄存器 URL |
| 许可证 | 文本 | SPDX 许可证标识符 |
| 常态牌照( l) | 文本 | JSON 系列规范许可证标识符 |
| 最新版本 | 文本 | 最新版本编号 |
| 版本( c) | 进口 | 版本总数 |
| 下载 | 进口 | 下载数 |
| 下载时间( i) | 文本 | 下载时间(如最后一个月) |
| 依赖的( packages count) | 进口 | 取决于此的包数 |
| 依赖( r) | 进口 | 取决于此的存储器数量 |
| 首发( r) | 文本 | ISO 8601 第一期发行的印章 |
| 最新释放 at | 文本 | ISO 8601 最新发布时间戳 |
| 最后一个( s) | 文本 | 当 Ecosyst.ms 上次同步此软件包时 |
| 关键词 | 文本 | FTS 的空格关键字 |
索引 : (ecosystem, name) 独一无二, purl, (中文(简体) ), licenses, (中文(简体) ), ecosystem
版本
| 栏 | 类型 | 说明 |
|---|---|---|
| 软件包( d) | 进口 | 软件包的外键 |
| 编号 | 文本 | 版本编号 |
主密钥 : (package_id, number)
咨询意见
| 栏 | 类型 | 说明 |
|---|---|---|
| 编号 | 进口 | 自动递增主键 |
| 软件包( d) | 进口 | 软件包的外键 |
| 乌伊德 | 文本 | 咨询 UUID (GHSA- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| url 密码 | 文本 | 咨询 URL |
| 标题 | 文本 | 咨询标题 |
| 说明 | 文本 | 咨询说明 |
| 严重性 | 文本 | 高度(低等、高等、高等) |
| 已发布( a) | 文本 | ISO 8601 发布时间戳 |
| cvss 分数 | 真实 | CVSS 分数 |
索引 : package_id, (中文(简体) ), uuid, (中文(简体) ), severity, (中文(简体) ), (package_id, uuid) 独一无二
repo 元数据
| 栏 | 类型 | 说明 |
|---|---|---|
| 软件包( d) | 进口 | 主密钥, 套件的外键 |
| 拥有者 | 文本 | 仓库所有人/组织 |
| repo 名称 | 文本 | 仓库名称 |
| 完整名称 | 文本 | 全名( 拥有/ 收回) |
| 东道主 | 文本 | 主机 (github.com, gitlab.com等) 互联网档案馆的存檔,存档日期2013-12-21 |
| 语言 | 文本 | 主要语言 |
| 星标( c) | 进口 | GitHub 星等 |
| 叉数( c) | 进口 | 叉数 |
| 打开 问题 计数 | 进口 | 二. 未决问题 |
| 存档 | 进口 | 1 如果存档, 0 否则 |
| 叉头 | 进口 | 1 如果叉子, 0 否则 |
索引 : full_name, (中文(简体) ), owner
软件包( f)
FTS5 用于全文搜索的虚拟表格 ecosystem, (中文(简体) ), name, (中文(简体) ), description,以及 keywords。 。 。 .
构建 info
| 栏 | 类型 | 说明 |
|---|---|---|
| 编号 | 进口 | 总是1 |
| 已建时( a) | 文本 | ISO 8601 构建时间戳 |
| 软件包( c) | 进口 | 包件共计 |
| 版本( c) | 进口 | 版本共计 |
| 咨询( c) | 进口 | 咨询共计 |
示例查询
SBOM 由 purl 浓缩:
SELECT * FROM packages WHERE purl = 'pkg:npm/lodash';
-- Check if a specific version exists
SELECT * FROM versions v
JOIN packages p ON v.package_id = p.id
WHERE p.purl = 'pkg:npm/lodash' AND v.number = '4.17.21';
找到有已知弱点的软件包 :
SELECT p.ecosystem, p.name, a.uuid, a.severity, a.title
FROM packages p
JOIN advisories a ON p.id = a.package_id
WHERE a.severity IN ('HIGH', 'CRITICAL');
许可证审计:
SELECT ecosystem, name, licenses
FROM packages
WHERE licenses NOT IN ('MIT', 'Apache-2.0', 'BSD-3-Clause');
全文搜索 :
SELECT p.* FROM packages p
JOIN packages_fts ON p.id = packages_fts.rowid
WHERE packages_fts MATCH 'http client';
按生态系统分列的一揽子方案:
SELECT * FROM packages WHERE ecosystem = 'npm';
最依赖的软件包 :
SELECT ecosystem, name, dependent_packages_count
FROM packages
ORDER BY dependent_packages_count DESC
LIMIT 100;
许可证
CC-BY-SA-4.0 (英语)