← 全部工具

spencerbeggs/effected

热度 65 更新于 开发与构建

The unglamorous app plumbing that Effect leaves to you, done right — or, at least, that's the idea.

githubauto-collected

安装

暂未验证可直接使用的安装命令,请查看项目官方文档或 Release。

effected

The unglamorous app plumbing that Effect leaves to you, done right.

A pnpm monorepo (npm org @effected) of Effect v4 libraries designed v4-first, not lifted from their v3 predecessors. The repo holds libraries only; the applications that consume them stay in their own repos.

Every CLI, dev tool, and service reaches for the same machinery: reading and writing config files, parsing package.json and tsconfig.json, resolving semver ranges and runtime versions, walking a monorepo's workspaces and lockfiles, shelling out to git, finding the right XDG directory, keeping a little durable state on disk. effected gives you each of those as a typed Effect schema or service — malformed input surfaces as a typed error instead of a thrown exception, IO sits behind layers you can swap in a test, and the whole set shares one design so the pieces fit together.

Reach for one library or a dozen. Each package declares exactly what it touches, so a pure schema library never pulls a filesystem or a subprocess into your app, and they all pin the same Effect version, so their peer ranges never fight.

Packages

Each package sits in one of four categories describing its runtime surface:

  • Integrated — imports at least one runtime package outside effect core.
  • Boundary — the same @effected/-only dependency surface as a pure package, but does IO through Effect's core FileSystem and Path services.
  • Pure — peers on effect and takes only @effected/ edges, with no IO.
  • Companion — not a library and exposes no API; published and installable, it ships pnpm catalogs and a pnpmfile that pin your effect versions, your @effected/ versions and both sets of peer floors to the ones the kit was built against.

Every package is unstable; see release strategy.

Integrated

| Package | Stability | Description | | ------- | --------- | ----------- | | @effected/store | unstable | Durable local state on SQLite: a schema-versioned migrated store and a TTL cache with eviction, over one shared migration ledger | | @effected/workspaces | unstable | Monorepo tooling as Effect services: root discovery, the dependency graph, package-manager detection, pnpm catalogs, lockfile IO and git change detection | | @effected/app | unstable | The application control plane: one layer wiring XDG-namespaced directories, a migrated SQLite store, a TTL cache and a config file to the same place | | @effected/github | unstable | Typed GitHub REST and GraphQL services over the octokit core request surface, with app auth and resource helpers | | @effected/github-actions | unstable | The GitHub Actions runtime: env, inputs, outputs, state, logging, cache, artifacts, blob storage, OIDC and the token bridge | | @effected/sbom | unstable | CycloneDX 1.6 SBOM construction, SLSA provenance, NTIA validation and Sigstore signing as typed services | | @effected/schemastore | unstable | Build, validate, version and publish SchemaStore-shaped Draft-07 JSON Schema documents from Effect Schema sources, with ajv strict-mode validation and a content-comparing emit pipeline |

Boundary

| Package | Stability | Description | | ------- | --------- | ----------- | | @effected/config-file | unstable | Composable config file loading for Effect: JSON, JSONC, YAML and TOML codecs, resolution strategies and merge behaviors | | @effected/walker | unstable | Upward path traversal as Effect primitives: ascend a directory chain and return the first candidate satisfying a predicate | | @effected/xdg | unstable | XDG Base Directory resolution: environment paths, app-namespaced directories, native OS conventions and config-file resolvers | | @effected/runtimes | unstable | Resolve semver-compatible Node.js, Bun and Deno runtime versions from live feeds, with an offline snapshot fallback | | @effected/package-json | unstable | package.json parsing, editing, validation and file IO as Effect schemas | | @effected/tsconfig-json | unstable | tsconfig.json handling as Effect schemas: JSONC document and compiler-option schemas, tsc-parity extends-chain resolution, nearest-config discovery and a portable subset for virtual TypeScript environments | | @effected/git | unstable | Typed git introspection over Effect core's ChildProcessSpawner: file content and trees at any ref, typed diffs and status, branch, commit and config probes — plus a clearly-marked mutating tier (checkout, fetch, submodules, sparse checkout, config, add) | | @effected/npm | unstable | Effect service contracts for resolving pnpm catalog: and workspace: dependency specifiers, plus the kit's shared dependency vocabulary, a tolerant Manifest model, and the registry and publish services | | @effected/commands | unstable | Structured command running and CLI tool discovery over Effect's core ChildProcessSpawner contract | | @effected/templates | unstable | Managed-section blocks in user-editable files: parse, reconcile, sync and check delimited regions | | @effected/jsonl | unstable | Append-only, schema-validated JSONL journals as a definable Effect service | | @effected/cli | unstable | The boundary layer of an effect/unstable/cli program: plain CLI output, failure reporting and schema-issue rendering |

Pure

| Package | Stability | Description | | ------- | --------- | ----------- | | @effected/semver | unstable | Strict SemVer 2.0.0 versions, ranges and comparators as Effect schemas | | @effected/jsonc | unstable | Zero-dependency JSONC parsing, editing and formatting as Effect schemas | | @effected/yaml | unstable | Zero-dependency YAML parsing, editing, formatting and linting as Effect schemas, with per-node comment fidelity and a public token stream | | @effected/toml | unstable | TOML 1.1.0 parsing, editing and formatting as Effect schemas: typed diagnostics, a lossless CST and first-class date-time values | | @effected/glob | unstable | Full-fidelity glob matching as Effect schemas: the complete minimatch dialect compiled to pure string predicates | | @effected/lockfiles | unstable | Pure lockfile parsing for bun, npm, pnpm and yarn Berry into one unified Effect schema model, with pure integrity checking against workspace manifests | | @effected/spdx | unstable | SPDX license identifiers, exceptions and license expressions as Effect Schema classes | | @effected/schema-org | unstable | schema.org vocabulary as Effect Schema classes: a JSON-LD graph assembler, a script-safe serializer and offline conformance checking against a vendored vocabulary | | @effected/markdown | unstable | CommonMark 0.31.2 and GFM as pure schemas: parse to mdast-shaped nodes with byte offsets, edit, format and project to and from mdast | | @effected/memfs | unstable | An isolated virtual POSIX volume behind Effect's core FileSystem service: the kit's filesystem test double, for tests and dry-run programs | | @effected/github-references | unstable | GitHub's issue-reference grammar as pure functions: inline-in-prose harvesting with offsets, bare-line parsing and the closing-list dialect |

Companion

| Package | Stability | Description | | ------- | --------- | ----------- | | @effected/pnpm-plugin-effect | unstable | pnpm config dependency shipping the catalogs that pin Effect and the @effected/ kit, for dependencies and peer ranges alike |

Release strategy