From 4baeffe96fe7a78b6ef62b074b03cc9c777b6849 Mon Sep 17 00:00:00 2001 From: Ryan Bas Date: Mon, 11 May 2026 22:01:50 -0600 Subject: [PATCH] feat: add Effect Language Service for compile-time Effect diagnostics Installs @effect/language-service and configures it as a TypeScript plugin in tsconfig.base.json so all packages get Effect-specific diagnostics (e.g. tagged struct suggestions, Schema-over-JSON hints). The prepare script now patches TypeScript after lefthook install. Co-Authored-By: Claude Opus 4.6 (1M context) --- package.json | 3 ++- pnpm-lock.yaml | 9 +++++++++ tsconfig.base.json | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 437a0b8..1925ff1 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,12 @@ "release": "pnpm build && changeset publish", "syncpack:lint": "syncpack lint", "syncpack:fix": "syncpack fix-mismatches", - "prepare": "test \"$CI\" = 'true' || lefthook install" + "prepare": "test \"$CI\" = 'true' || (lefthook install && effect-language-service patch typescript)" }, "devDependencies": { "@changesets/changelog-github": "^0.6.0", "@changesets/cli": "^2.27.9", + "@effect/language-service": "^0.85.1", "@eslint/eslintrc": "^3.0.0", "@eslint/js": "~9.39.0", "@types/node": "^22.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff9b096..dc76c6c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,6 +40,9 @@ importers: '@changesets/cli': specifier: ^2.27.9 version: 2.31.0(@types/node@22.19.18) + '@effect/language-service': + specifier: ^0.85.1 + version: 0.85.1 '@eslint/eslintrc': specifier: ^3.0.0 version: 3.3.5 @@ -439,6 +442,10 @@ packages: lmdb: optional: true + '@effect/language-service@0.85.1': + resolution: {integrity: sha512-EXnJjIy6zQ3nUO/MZ+ynWUb8B895KZPotd1++oTs9JjDkplwM7cb6zo8Zq2zU6piwq+KflO7amXbEfj1UMpHkw==} + hasBin: true + '@effect/platform-node-shared@0.59.0': resolution: {integrity: sha512-3bq2YKKfLY7UFauZSxqZUneCXoA3SMSls82V+0RKunvRlfPuPQW0hVn6t1RkvEdh0PDoygWG2mZXYQa6Iqgp9A==} peerDependencies: @@ -4027,6 +4034,8 @@ snapshots: effect: 3.21.2 uuid: 11.1.1 + '@effect/language-service@0.85.1': {} + '@effect/platform-node-shared@0.59.0(@effect/cluster@0.58.2(@effect/platform@0.96.1(effect@3.21.2))(@effect/rpc@0.75.1(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/workflow@0.18.1(@effect/experimental@0.60.0(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/platform@0.96.1(effect@3.21.2))(@effect/rpc@0.75.1(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(effect@3.21.2))(effect@3.21.2))(@effect/platform@0.96.1(effect@3.21.2))(@effect/rpc@0.75.1(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(effect@3.21.2)': dependencies: '@effect/cluster': 0.58.2(@effect/platform@0.96.1(effect@3.21.2))(@effect/rpc@0.75.1(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/sql@0.51.1(@effect/experimental@0.60.0(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/workflow@0.18.1(@effect/experimental@0.60.0(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(@effect/platform@0.96.1(effect@3.21.2))(@effect/rpc@0.75.1(@effect/platform@0.96.1(effect@3.21.2))(effect@3.21.2))(effect@3.21.2))(effect@3.21.2) diff --git a/tsconfig.base.json b/tsconfig.base.json index fc5c643..48d66e1 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -4,6 +4,7 @@ "declaration": true, "declarationMap": true, "skipLibCheck": true, - "baseUrl": "." + "baseUrl": ".", + "plugins": [{ "name": "@effect/language-service" }] } }