# @allmaps/id 中文文档

规范地址：https://npmcn.com/package/%40allmaps/id/

版本：1\.0\.0-beta\.39
npm 元数据更新时间：2026-10-01T09:24:33.860Z
中文译文更新时间：2026-11-05T23:45:29.615Z
软件包许可：ISC

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40allmaps/id
原文对照：https://npmcn.com/package/%40allmaps/id/?lang=original
项目主页：https://allmaps.org/
源码仓库：https://github.com/allmaps/allmaps

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：16.9 kB，11 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=v19\.0\.0
- 运行依赖：0 个
- 首次发布：2021-04-06T11:58:19.273Z
- 最新版本发布：2026-09-22T07:07:31.973Z
- 近 30 天下载量：9110（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：48（近 12 个月 4 个）

## 中文简介

所有地图的ID

## 安装

```sh
npm install @allmaps/id
```

也可以使用：`pnpm add @allmaps/id`、`yarn add @allmaps/id`、`bun add @allmaps/id`

## README

# @allmaps/id (英语)

使用 [萨摩亚-1](https://en.wikipedia.org/wiki/SHA-1) 从字符串中生成ID的算法,从UUID中随机生成ID,从JSON对象中生成校验和.

Allmaps使用此模块从IIIF URI创建ID. 例如:

-   考虑到以下列出的URL: [https://digital.zlb.de/viewer/api/v1/records/34231682/manifest/ (中文(简体) )](https://digital.zlb.de/viewer/api/v1/records/34231682/manifest/), (中文(简体) ),
-   产出 [`generateId`](https://npmcn.com/package/%40allmaps/id/#readme-generateid) 函数将是: `6f5a7b547c8f6fbe`, (中文(简体) ),
-   我们可以用这个身份来查找 [地理参考注释](https://iiif.io/api/extension/georef/) 使用 Allmaps API 的地理参考地图: [https://annotations.allmaps.org/manifests/6f5a7b547c8f6fbe 互联网档案馆的存檔,存档日期2014-12-21](https://annotations.allmaps.org/manifests/6f5a7b547c8f6fbe)。 。 。 .

要看到 @allmaps/ id 动作, 请查看此 [可观察笔记本](https://observablehq.com/@allmaps/the-allmaps-id-module)。 。 。 .

## 使用量

这是一个只在浏览器、Node.js和Cloudflare Workers中工作的无害环境管理模块.

有两种变体:

-   **自动同步** (默认)——使用 [`SubtleCrypto.digest()`](https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest) 财务报告和审定财务报表 [`Crypto.randomUUID()`](https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID)到处都行.
-   **同步** (单位:千美元)`@allmaps/id/sync`) ——纯-JS SHA-1执行而无外部依赖. 同步返回值 。 无法使用同步上下文时有用( 如在 Svelte 内部) `$derived`) (中文(简体) ).

两种变体产生相同的输出.

### Async( 默认)

```js
import { generateId } from '@allmaps/id'

const url = 'https://digital.zlb.de/viewer/api/v1/records/34231682/manifest/'
const id = await generateId(url)
// id = '6f5a7b547c8f6fbe'
```

### 同步

```js
import { generateId, generateChecksum } from '@allmaps/id/sync'

const url = 'https://digital.zlb.de/viewer/api/v1/records/34231682/manifest/'
const id = generateId(url)
// id = '6f5a7b547c8f6fbe'
```

### 浏览器( 通过 CDN)

```html
<script type="module">
  import { generateId } from 'https://esm.run/@allmaps/id'

  const url =
    'https://orka.bibliothek.uni-kassel.de/viewer/rest/iiif/manifests/1535113582549/manifest/'
  const id = await generateId(url)
  console.log(id)
</script>
```

## 国 际

也可以使用 [图像 CLI](https://github.com/allmaps/allmaps/tree/main/apps/cli)。 。 。 .

例如:

```sh
echo https://digital.zlb.de/viewer/api/v1/records/34231682/manifest/ | allmaps id
```

## 许可证

麻省理工学院

## API 密码

### `generateChecksum(obj, length)`

生成 JSON 对象的校验和 .

###### 参数

-   `obj` (单位:千美元)`unknown`(中文(简体) )
    -   JSON对象.
-   `length` (单位:千美元)`number | undefined`(中文(简体) )
    -   返回的散列长度 。 散列的最大长度为40个字符.

###### 回返

第一届 `length` 排序和序列化版本的 SHA-1 散列字符 `obj` (单位:千美元)`Promise<string>`) (中文(简体) ).

### `generateId(str, length)`

使用 SHA-1 算法从字符串中生成一个ID. 由于输入相同,ID将永远不变.

###### 参数

-   `str` (单位:千美元)`string`(中文(简体) )
    -   输入字符串
-   `length` (单位:千美元)`number | undefined`(中文(简体) )
    -   返回的散列长度 。 散列的最大长度为40个字符. 默认长度为16.

###### 回返

第一届 `length` 字符 `str` (单位:千美元)`Promise<string>`) (中文(简体) ).

### `generateRandomId(length)`

生成随机ID.

###### 参数

-   `length` (单位:千美元)`number | undefined`(中文(简体) )
    -   返回的散列长度 。 散列的最大长度为40个字符.

###### 回返

第一届 `length` 任意 UUID 的 SHA-1 散列字符(`Promise<string>`) (中文(简体) ).

### `generateChecksum(obj, length)`

生成 JSON 对象的校验和 .

###### 参数

-   `obj` (单位:千美元)`unknown`(中文(简体) )
    -   JSON对象.
-   `length` (单位:千美元)`number | undefined`(中文(简体) )
    -   返回的散列长度 。 散列的最大长度为40个字符.

###### 回返

第一届 `length` 排序和序列化版本的 SHA-1 散列字符 `obj` (单位:千美元)`string`) (中文(简体) ).

### `generateId(str, length)`

使用 SHA-1 算法从字符串中生成一个ID. 由于输入相同,ID将永远不变.

###### 参数

-   `str` (单位:千美元)`string`(中文(简体) )
    -   输入字符串
-   `length` (单位:千美元)`number | undefined`(中文(简体) )
    -   返回的散列长度 。 散列的最大长度为40个字符. 默认长度为16.

###### 回返

第一届 `length` 字符 `str` (单位:千美元)`string`) (中文(简体) ).

### `generateRandomId(length)`

生成随机ID.

###### 参数

-   `length` (单位:千美元)`number | undefined`(中文(简体) )
    -   返回的散列长度 。 散列的最大长度为40个字符.

###### 回返

第一届 `length` 任意 UUID 的 SHA-1 散列字符(`string`) (中文(简体) ).

## 常见问题

### @allmaps/id 是什么？

所有地图的ID

### 如何安装 @allmaps/id？

在项目目录运行 npm install @allmaps/id，或使用 pnpm add / yarn add / bun add。

### @allmaps/id 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/allmaps\_\_id 是否存在。

### @allmaps/id 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @allmaps/id 需要什么版本的 Node\.js？

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

### @allmaps/id 可以商用吗？

@allmaps/id 使用 ISC 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @allmaps/id 的下载量有多少？

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

### @allmaps/id 还在维护吗？

最新版本 1\.0\.0-beta\.39 发布于 2026/09/22（1 个月前）；至今共发布 48 个版本，其中过去 12 个月发布了 4 个；首次发布于 2021/04/06。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

