Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 13 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"typescript.preferences.autoImportFileExcludePatterns": ["repos/**"],
"javascript.preferences.autoImportFileExcludePatterns": ["repos/**"],
"files.exclude": {
"repos/**": true
},
"files.watcherExclude": {
"repos/**": true
},
"search.exclude": {
"repos/**": true
}
}
10 changes: 10 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,13 @@ Uses default label vocabulary. See `docs/agents/triage-labels.md`.
### Domain docs

Single-context layout — one `CONTEXT.md` and `docs/adr/` at the repo root. See `docs/agents/domain.md`.

### Effect reference source

The Effect repository is vendored at `repos/effect/` as a git subtree (read-only reference material). Use it to explore APIs, find usage examples, and understand implementation details. **Never modify files under `repos/`.**

To update the vendored source:

```bash
git subtree pull --prefix=repos/effect https://github.com/Effect-TS/effect.git main --squash
```
1 change: 1 addition & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export default [
'**/functions/**',
'**/codegen/**',
'apps/**',
'repos/**',
],
},
...compat.extends('plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'),
Expand Down
14 changes: 14 additions & 0 deletions repos/effect/.changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"$schema": "https://unpkg.com/@changesets/config@1.6.4/schema.json",
"changelog": ["@changesets/changelog-github", { "repo": "Effect-TS/effect" }],
"commit": false,
"linked": [],
"access": "restricted",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": ["scratchpad"],
"snapshot": {
"useCalculatedVersion": false,
"prereleaseTemplate": "{tag}-{commit}"
}
}
5 changes: 5 additions & 0 deletions repos/effect/.changeset/fix-cli-completions-hyphen.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@effect/cli": patch
---

fix(cli): replace all hyphens in shell completion command names
1 change: 1 addition & 0 deletions repos/effect/.envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake;
50 changes: 50 additions & 0 deletions repos/effect/.github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/packages/effect/ @mikearnaldi

/packages/effect/src/Arbitrary.ts @gcanti
/packages/effect/src/JSONSchema.ts @gcanti
/packages/effect/src/ParseResult.ts @gcanti
/packages/effect/src/Pretty.ts @gcanti
/packages/effect/src/Schema.ts @gcanti
/packages/effect/src/SchemaAST.ts @gcanti
/packages/effect/src/internal/schema/ @gcanti
/packages/effect/test/Schema/ @gcanti

/packages/ai/ @IMax153

/packages/cli/ @IMax153

/packages/cluster/ @tim-smart

/packages/experimental/ @tim-smart

/packages/opentelemetry/ @tim-smart

/packages/platform/ @tim-smart
/packages/platform-browser/ @tim-smart
/packages/platform-bun/ @tim-smart
/packages/platform-node/ @tim-smart
/packages/platform-node-shared/ @tim-smart

/packages/printer/ @IMax153
/packages/printer-ansi/ @IMax153

/packages/rpc/ @tim-smart

/packages/sql/ @tim-smart
/packages/sql-clickhouse/ @tim-smart
/packages/sql-d1/ @tim-smart
/packages/sql-drizzle/ @tim-smart
/packages/sql-kysely/ @tim-smart
/packages/sql-libsql/ @tim-smart
/packages/sql-mssql/ @tim-smart
/packages/sql-mysql2/ @tim-smart
/packages/sql-pg/ @tim-smart
/packages/sql-sqlite-bun/ @tim-smart
/packages/sql-sqlite-do/ @tim-smart
/packages/sql-sqlite-node/ @tim-smart
/packages/sql-sqlite-react-native/ @tim-smart
/packages/sql-sqlite-wasm/ @tim-smart

/packages/typeclass/ @gcanti

/packages/vitest/ @mikearnaldi
24 changes: 24 additions & 0 deletions repos/effect/.github/actions/setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Setup
description: Perform standard setup and install dependencies using pnpm.
inputs:
node-version:
description: The version of Node.js to install
required: true
default: 23.7.0
registry-url:
description: Optional registry to set up for auth.

runs:
using: composite
steps:
- name: Install pnpm
uses: pnpm/action-setup@v3
- name: Install node
uses: actions/setup-node@v4
with:
cache: pnpm
node-version: ${{ inputs.node-version }}
registry-url: ${{ inputs.registry-url }}
- name: Install dependencies
shell: bash
run: pnpm install
64 changes: 64 additions & 0 deletions repos/effect/.github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Check
on:
workflow_dispatch:
pull_request:
branches: [main, next-minor, next-major]
push:
branches: [main, next-minor, next-major]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions: {}

jobs:
types:
name: Types
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/setup
- run: pnpm check
- run: pnpm test-types --target '>=5.4'

lint:
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/setup
- run: pnpm circular
- run: pnpm lint
- run: pnpm codegen
- name: Check for codegen changes
run: git diff --exit-code

test:
name: Test (${{ matrix.runtime }} ${{ matrix.shard }})
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
shard: [1/4, 2/4, 3/4, 4/4]
# runtime: [Node, Bun] # TODO: Re-enable bun test suite after https://github.com/oven-sh/bun/issues/4145 is resolved
runtime: [Node]
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/setup
- uses: oven-sh/setup-bun@v1
if: matrix.runtime == 'Bun'
with:
bun-version: 1.0.25
- name: Test
run: pnpm vitest --shard ${{ matrix.shard }}
if: matrix.runtime == 'Node'
- name: Test
run: bun vitest --shard ${{ matrix.shard }}
if: matrix.runtime == 'Bun'
50 changes: 50 additions & 0 deletions repos/effect/.github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Pages
on:
workflow_dispatch:
pull_request:
branches: [main, next-minor, next-major]
push:
branches: [main, next-minor, next-major]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions: {}

jobs:
build:
name: Build
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/setup
- run: pnpm docgen
- name: Build pages Jekyll
if: github.repository_owner == 'Effect-Ts' && github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: actions/jekyll-build-pages@v1
with:
source: ./docs
destination: ./_site
- name: Upload pages artifact
if: github.repository_owner == 'Effect-Ts' && github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: actions/upload-pages-artifact@v3

deploy:
if: github.repository_owner == 'Effect-Ts' && github.event_name == 'push' && github.ref == 'refs/heads/main'
name: Deploy
runs-on: ubuntu-latest
timeout-minutes: 10
needs: build
permissions:
pages: write # To deploy to GitHub Pages
id-token: write # To verify the deployment originates from an appropriate source
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
35 changes: 35 additions & 0 deletions repos/effect/.github/workflows/release-queue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Release queue
on:
issue_comment:
types: [created]
pull_request_target:
branches: [main, next-minor, next-major]
push:
branches: [main, next-minor, next-major]

permissions: {}

jobs:
update:
if: github.repository_owner == 'Effect-Ts'
name: Update
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.EFFECT_BOT_GH }}
- run: gh pr checkout ${{ github.event.pull_request.number }}
if: github.event.pull_request
env:
GITHUB_TOKEN: ${{ secrets.EFFECT_BOT_GH }}
- uses: tim-smart/next-release-action@main
with:
github_token: ${{ secrets.EFFECT_BOT_GH }}
packages: effect,@effect/platform
git_user: effect-bot
git_email: tech-ops@effectful.co
35 changes: 35 additions & 0 deletions repos/effect/.github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Release
on:
push:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}

permissions: {}

jobs:
release:
if: github.repository_owner == 'Effect-Ts'
name: Release
runs-on: ubuntu-latest
timeout-minutes: 30
permissions:
contents: write
id-token: write
pull-requests: write
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/setup
with:
registry-url: "https://registry.npmjs.org"
- name: Upgrade npm for OIDC support
run: npm install -g npm@latest
- name: Create Release Pull Request or Publish
uses: changesets/action@v1
with:
version: pnpm changeset-version
publish: pnpm changeset-publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25 changes: 25 additions & 0 deletions repos/effect/.github/workflows/snapshot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: Snapshot
on:
pull_request:
branches: [main, next-minor, next-major]
workflow_dispatch:

permissions: {}

jobs:
snapshot:
name: Snapshot
if: github.repository_owner == 'Effect-Ts'
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/setup
- name: Run codemods
run: pnpm codemod
- name: Build package
run: pnpm build
- name: Create snapshot
id: snapshot
run: pnpx pkg-pr-new@0.0.28 publish --pnpm --comment=off ./packages/* ./packages/ai/*
34 changes: 34 additions & 0 deletions repos/effect/.github/workflows/ts-nightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: TypeScript's nightly
on:
workflow_dispatch:
schedule:
- cron: "0 12 * * *"

permissions: {}

jobs:
types:
name: Types
# TODO enable after TSTyche adds TypeScript 7 support (see https://github.com/tstyche/tstyche/issues/443)
if: false
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
issues: write
steps:
- uses: actions/checkout@v4
- name: Install dependencies
uses: ./.github/actions/setup
- name: Run type tests
run: pnpm test-types --target next
- name: Notify on failed run
uses: actions/github-script@v7
if: failure()
with:
script: |
github.rest.issues.create({
owner: context.repo.owner,
repo: context.repo.repo,
title: "Failed TypeScript's nightly type test run",
body: `The following type test run against TypeScript's nightly build failed: [#${context.runNumber}](https://github.com/Effect-TS/effect/actions/runs/${context.runId}).`
})
14 changes: 14 additions & 0 deletions repos/effect/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
coverage/
*.tsbuildinfo
node_modules/
.DS_Store
tmp/
dist/
build/
docs/
scratchpad/
.direnv/
.idea/
.env*
.lalph/
.repos/
Loading
Loading