@distilled.cloud/forgejo

中文文档
1.0.0-rc.19发布于 2026/11/12Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 3123
原始使用文档
文档目录3 节
  1. Spec source
  2. Layout
  3. Usage

@distilled.cloud/forgejo

Effect-native SDK for the Forgejo REST API, generated from the Swagger 2.0 document every Forgejo instance serves at /swagger.v1.json.

Spec source

The generator reads one file from the package's spec mirror:

specs/spec-mirror-forgejo/specs/forgejo.spec.json

Forgejo publishes no standalone spec artefact. Each running instance serves the document describing its own version at /swagger.v1.json, rendered from a Go template checked into the Forgejo repository (templates/swagger/v1_json.tmpl). The mirror (distilled-mirror/spec-mirror-forgejo, fetch script under stacks/distilled-submodules/spec-repos/forgejo/) snapshots that template at a pinned release tag with the two server-side placeholders (info.version, basePath) filled in the way a root-mounted instance would. Bump FORGEJO_VERSION in the fetch script to move to a newer release.

pnpm specs:fetch     # check out the mirror (from packages/forgejo)
pnpm generate        # convert + compile (see scripts/convert.ts)

Before the mirror exists, or to regenerate against today's upstream without touching submodules, materialise it locally from the repo root:

pnpm specs:local forgejo
DISTILLED_SPECS_LOCAL=1 pnpm generate forgejo

Layout

  • scripts/convert.ts — buckets the document's operations by tag, applies the RFC-6902 patch chain under patches/<tag>/<operationId>.json, and produces one Smithy model per tag (pnpm convert writes them to the gitignored .generated-specs/ to read).
  • scripts/generate.ts — runs convert in-process and compiles the models into src/services/<tag>.ts.
  • src/credentials.ts, src/protocol.ts, src/errors.ts, src/retry.ts, src/traits.ts — hand-written; everything under src/services/ is generated and never edited by hand.

Usage

import * as Redacted from "effect/Redacted";
import * as Forgejo from "@distilled.cloud/forgejo";

const program = Effect.gen(function* () {
  const repo = yield* Forgejo.repository.repoGet({
    owner: "acme",
    repo: "api",
  });
  return repo.clone_url;
}).pipe(
  Effect.provide(
    Forgejo.credentials({
      baseUrl: "https://git.example.com",
      token: Redacted.make(process.env.FORGEJO_TOKEN!),
    }),
  ),
);

baseUrl is the instance origin; the /api/v1 prefix is appended when missing. FORGEJO_URL / FORGEJO_TOKEN drive CredentialsFromEnv.

版本与发布记录

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

版本发布日期距今
1.0.0-rc.19latest2026/11/12今天
1.0.0-rc.182026/11/039 天前
1.0.0-rc.172026/10/2419 天前
1.0.0-rc.162026/10/2320 天前
1.0.0-rc.152026/10/1330 天前
1.0.0-rc.142026/10/1330 天前

关于 @distilled.cloud/forgejo 的常见问题

如何安装 @distilled.cloud/forgejo?

在项目目录运行 npm install @distilled.cloud/forgejo,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:effect(^4.1.2)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@distilled.cloud/forgejo 支持 TypeScript 吗?

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

@distilled.cloud/forgejo 支持 ESM 还是 CommonJS?

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

@distilled.cloud/forgejo 可以商用吗?

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

@distilled.cloud/forgejo 的下载量有多少?

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

@distilled.cloud/forgejo 还在维护吗?

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