diff --git a/.gitignore b/.gitignore index caf055351f..518e1a3770 100644 --- a/.gitignore +++ b/.gitignore @@ -93,4 +93,5 @@ GEMINI.md **/GEMINI.md .claude/worktrees -.claude/settings.local.json \ No newline at end of file +.claude/settings.local.json +.opensource diff --git a/.nxignore b/.nxignore new file mode 100644 index 0000000000..7a61f2b50d --- /dev/null +++ b/.nxignore @@ -0,0 +1 @@ +.opensource/* diff --git a/package.json b/package.json index e50dc94752..6420664bfa 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "path": "./node_modules/cz-conventional-changelog" } }, - "dependencies": {}, "devDependencies": { "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.9", @@ -53,8 +52,10 @@ "@commitlint/config-conventional": "^20.0.0", "@commitlint/prompt": "^20.0.0", "@effect/cli": "catalog:effect", + "@effect/tsgo": "^0.5.1", "@eslint/eslintrc": "^3.0.0", "@eslint/js": "~9.39.0", + "@evilmartians/lefthook": "^2.1.4", "@nx/devkit": "22.6.5", "@nx/eslint": "22.6.5", "@nx/eslint-plugin": "22.6.5", @@ -92,7 +93,6 @@ "eslint-plugin-playwright": "^2.0.0", "eslint-plugin-prettier": "^5.2.3", "fast-check": "^4.0.0", - "@evilmartians/lefthook": "^2.1.4", "jiti": "2.6.1", "jsdom": "27.1.0", "jsonc-eslint-parser": "^2.1.0", @@ -101,12 +101,13 @@ "pkg-pr-new": "^0.0.60", "playwright": "^1.47.2", "prettier": "^3.2.5", + "setup": "^0.0.3", "shx": "^0.4.0", "swc-loader": "0.2.6", "ts-node": "10.9.2", - "tsx": "^4.20.0", "ts-patch": "3.3.0", "tslib": "^2.5.0", + "tsx": "^4.20.0", "typedoc": "^0.27.4", "typedoc-github-theme": "0.2.1", "typedoc-plugin-rename-defaults": "^0.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d03ab6ec5f..dac1cd9816 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,6 +80,9 @@ importers: '@effect/cli': specifier: catalog:effect version: 0.69.2(@effect/platform@0.90.10(effect@3.21.0))(@effect/printer-ansi@0.45.0(@effect/typeclass@0.36.0(effect@3.21.0))(effect@3.21.0))(@effect/printer@0.45.0(@effect/typeclass@0.36.0(effect@3.21.0))(effect@3.21.0))(effect@3.21.0) + '@effect/tsgo': + specifier: ^0.5.1 + version: 0.5.1 '@eslint/eslintrc': specifier: ^3.0.0 version: 3.3.1 @@ -224,6 +227,9 @@ importers: prettier: specifier: ^3.2.5 version: 3.6.2 + setup: + specifier: ^0.0.3 + version: 0.0.3 shx: specifier: ^0.4.0 version: 0.4.0 @@ -1586,6 +1592,45 @@ packages: '@effect/platform': ^0.90.4 effect: ^3.17.7 + '@effect/tsgo-darwin-arm64@0.5.1': + resolution: {integrity: sha512-sJFjIPbfKTB9jLsUcMCmIZCOdTOQQqpKa2Ah7kP+8jXTqNvmIFZg4IzZQIPjHDSCKfU8f3JfOEEdhwktCdQ57Q==} + cpu: [arm64] + os: [darwin] + + '@effect/tsgo-darwin-x64@0.5.1': + resolution: {integrity: sha512-2b4WtHHddhUl846ZJOPhv3C/3JRwocwUer65vsxkb0ixS76ly3z1BOWwdL7naAsrtaUJ0n9FaN9WI4tbwxa5OA==} + cpu: [x64] + os: [darwin] + + '@effect/tsgo-linux-arm64@0.5.1': + resolution: {integrity: sha512-tgBW2rGLSewvnE61EYU31tmH6mdrrwHpNmbnYiNgU2rjs35gVYin2WZ7aM9r71hjUYbS2p9i4OcwRvSbyyVq/Q==} + cpu: [arm64] + os: [linux] + + '@effect/tsgo-linux-arm@0.5.1': + resolution: {integrity: sha512-xs7+sx71e+lhRgl6R0ZfCxFXzTwhO00BcpPs5CtfNS4EEhNQc9EfRvGYtx3D4l9+5KwPr5VWJbYJz99Y5e2H9w==} + cpu: [arm] + os: [linux] + + '@effect/tsgo-linux-x64@0.5.1': + resolution: {integrity: sha512-70dMv3/H+P3KDNWb31qPXJiJh6s78k3+J+QXN8RatKiQYrJw2HhREYL6ToVx9y5WOV7XFvC0eCIIa4/AMwQLTw==} + cpu: [x64] + os: [linux] + + '@effect/tsgo-win32-arm64@0.5.1': + resolution: {integrity: sha512-v4lSFoPLYmVFBJbtOseSd0T0Vij5Vdk6IAUKpQwMiy0gSDPJnE+M6Esj3tY9IpFD3LxcdqhTxBl73pEcf+ihYg==} + cpu: [arm64] + os: [win32] + + '@effect/tsgo-win32-x64@0.5.1': + resolution: {integrity: sha512-dfyXhmVQkxncSnujjSXsOMwzqFIBNDViXiD3Uj9DPDNLSxyg0ybBNxYJTpvJhqHxqseA9wE2aCIMu/pfpac+0Q==} + cpu: [x64] + os: [win32] + + '@effect/tsgo@0.5.1': + resolution: {integrity: sha512-INANZ/NK9akOwSQVWpQgSDLjlegrs4gui21nuQsgN7zCjCmj4m/ixUDuVgtW2C0UfqhPWWabyFWCDntu7ryCZQ==} + hasBin: true + '@effect/typeclass@0.36.0': resolution: {integrity: sha512-+8xYvX4tjD7gKwGYzOyFh90I+ptdXzoNHLQTSa8kGh/xOVZMIGYb0VgLoNHE02UsuVrB+JJJuBmKLdd5TeDTPg==} peerDependencies: @@ -7318,6 +7363,9 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + setup@0.0.3: + resolution: {integrity: sha512-NcuGT1k9V3jdwcNdZzpnO6h2WtLMieaIVRMWeQvlSVRMB6b51T3jeUBSeBzP5Mmqy50viW5y7LRaMaTm/MZ4CA==} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -9638,6 +9686,37 @@ snapshots: effect: 3.21.0 uuid: 11.1.0 + '@effect/tsgo-darwin-arm64@0.5.1': + optional: true + + '@effect/tsgo-darwin-x64@0.5.1': + optional: true + + '@effect/tsgo-linux-arm64@0.5.1': + optional: true + + '@effect/tsgo-linux-arm@0.5.1': + optional: true + + '@effect/tsgo-linux-x64@0.5.1': + optional: true + + '@effect/tsgo-win32-arm64@0.5.1': + optional: true + + '@effect/tsgo-win32-x64@0.5.1': + optional: true + + '@effect/tsgo@0.5.1': + optionalDependencies: + '@effect/tsgo-darwin-arm64': 0.5.1 + '@effect/tsgo-darwin-x64': 0.5.1 + '@effect/tsgo-linux-arm': 0.5.1 + '@effect/tsgo-linux-arm64': 0.5.1 + '@effect/tsgo-linux-x64': 0.5.1 + '@effect/tsgo-win32-arm64': 0.5.1 + '@effect/tsgo-win32-x64': 0.5.1 + '@effect/typeclass@0.36.0(effect@3.21.0)': dependencies: effect: 3.21.0 @@ -11752,7 +11831,7 @@ snapshots: std-env: 3.10.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.1.0)(msw@2.12.1(@types/node@24.9.2)(typescript@5.9.3))(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.1.0)(msw@2.12.1(@types/node@24.9.2)(typescript@5.8.3))(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -11811,7 +11890,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.1.0)(msw@2.12.1(@types/node@24.9.2)(typescript@5.9.3))(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.1.0)(msw@2.12.1(@types/node@24.9.2)(typescript@5.8.3))(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) '@vitest/utils@3.2.4': dependencies: @@ -16213,6 +16292,8 @@ snapshots: setprototypeof@1.2.0: {} + setup@0.0.3: {} + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -17089,7 +17170,7 @@ snapshots: dependencies: cssfontparser: 1.2.1 moo-color: 1.0.3 - vitest: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.1.0)(msw@2.12.1(@types/node@24.9.2)(typescript@5.9.3))(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.1.0)(msw@2.12.1(@types/node@24.9.2)(typescript@5.8.3))(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) vitest@3.2.4(@types/node@24.9.2)(@vitest/ui@3.2.4)(jiti@2.6.1)(jsdom@27.1.0)(msw@2.12.1(@types/node@24.9.2)(typescript@5.8.3))(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: diff --git a/tsconfig.base.json b/tsconfig.base.json index fc5c643230..d3a8f8dff1 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -4,6 +4,85 @@ "declaration": true, "declarationMap": true, "skipLibCheck": true, - "baseUrl": "." + "baseUrl": ".", + "plugins": [ + { + "name": "@effect/language-service", + // Controls Effect refactors. (default: true) + "refactors": true, + // Controls Effect diagnostics. (default: true) + "diagnostics": true, + // When false, suggestion-level Effect diagnostics are omitted from tsc CLI output. (default: true) + "includeSuggestionsInTsc": true, + // Controls Effect quickinfo. (default: true) + "quickinfo": true, + // Controls Effect completions. (default: true) + "completions": true, + // Enables additional debug-only Effect language service output. (default: false) + "debug": false, + // Controls Effect goto references support. (default: true) + "goto": true, + // Controls Effect rename helpers. (default: true) + "renames": true, + // When true, suggestion diagnostics do not affect the tsc exit code. (default: true) + "ignoreEffectSuggestionsInTscExitCode": true, + // When true, warning diagnostics do not affect the tsc exit code. (default: false) + "ignoreEffectWarningsInTscExitCode": false, + // When true, error diagnostics do not affect the tsc exit code. (default: false) + "ignoreEffectErrorsInTscExitCode": false, + // When true, disabled diagnostics are still processed so directives can re-enable them. (default: false) + "skipDisabledOptimization": false, + // Mermaid rendering service for layer graph links. Accepts mermaid.live, mermaid.com, or a custom URL. (default: "mermaid.live") + "mermaidProvider": "mermaid.live", + // When true, suppresses external Mermaid links in hover output. (default: false) + "noExternal": false, + // How many levels deep the layer graph extraction follows symbol references. (default: 0) + "layerGraphFollowDepth": 0, + // When true, suppresses redundant return-type inlay hints on supported Effect generator functions. (default: false) + "inlays": false, + // Package names that should prefer namespace imports. (default: []) + "namespaceImportPackages": [], + // Package names that should prefer barrel named imports. (default: []) + "barrelImportPackages": [], + // Package-level import aliases keyed by package name. (default: {}) + "importAliases": {}, + // Controls whether named reexports are followed at package top-level. (default: "ignore") + "topLevelNamedReexports": "ignore", + // Configures key pattern formulas for the deterministicKeys rule. (default: [{"target":"service","pattern":"default","skipLeadingPath":["src/"]},{"target":"custom","pattern":"default","skipLeadingPath":["src/"]}]) + "keyPatterns": [ + { + "target": "service", + "pattern": "default", + "skipLeadingPath": ["src/"] + }, + { + "target": "custom", + "pattern": "default", + "skipLeadingPath": ["src/"] + } + ], + // Enables matching constructors with @effect-identifier annotations. (default: false) + "extendedKeyDetection": false, + // Minimum number of contiguous pipeable transformations to trigger missedPipeableOpportunity. (default: 2) + "pipeableMinArgCount": 2, + // Package names allowed to have multiple versions without triggering duplicatePackage. (default: []) + "allowedDuplicatedPackages": [], + // Controls which effectFnOpportunity quickfix variants are offered. (default: ["span"]) + "effectFn": ["span"], + // Maps rule names to severity levels. Use {} to enable diagnostics with rule defaults. (default: {}) + "diagnosticSeverity": {}, + // Ordered per-file diagnostic option overrides. (default: [{"include":["src/**/*.ts"],"options":{"diagnosticSeverity":{"floatingEffect":"error"}}}]) + "overrides": [ + { + "include": ["src/**/*.ts"], + "options": { + "diagnosticSeverity": { + "floatingEffect": "error" + } + } + } + ] + } + ] } }