diff --git a/.changeset/effect-v4-beta-66.md b/.changeset/effect-v4-beta-66.md new file mode 100644 index 00000000..0b75b59f --- /dev/null +++ b/.changeset/effect-v4-beta-66.md @@ -0,0 +1,5 @@ +--- +"@effect/tsgo": patch +--- + +Update Effect v4 test coverage and metadata for `4.0.0-beta.66`, including direct `Context.Service` yielding and the restored `Effect.firstSuccessOf` API. diff --git a/_packages/tsgo/package.json b/_packages/tsgo/package.json index fa9b2e57..d019329e 100644 --- a/_packages/tsgo/package.json +++ b/_packages/tsgo/package.json @@ -39,12 +39,12 @@ "@effect/tsgo-darwin-arm64": "workspace:*" }, "devDependencies": { - "@effect/platform-node": "^4.0.0-beta.46", - "@effect/platform-node-shared": "^4.0.0-beta.46", + "@effect/platform-node": "^4.0.0-beta.66", + "@effect/platform-node-shared": "^4.0.0-beta.66", "@types/node": "^24.3.0", "tsdown": "^0.20.1", "typescript": "^5.9.2", - "effect": "^4.0.0-beta.46", + "effect": "^4.0.0-beta.66", "vitest": "^3.2.1" } } diff --git a/_packages/tsgo/src/metadata.json b/_packages/tsgo/src/metadata.json index 88f0928c..02ee9581 100644 --- a/_packages/tsgo/src/metadata.json +++ b/_packages/tsgo/src/metadata.json @@ -214,7 +214,7 @@ 377004 ], "preview": { - "sourceText": "import { Effect, Context } from \"effect\"\n\nclass Db extends Context.Service\u003cDb\u003e()(\"Db\", { make: Effect.succeed({}) }) {}\n\n// @ts-expect-error\nexport const preview: Effect.Effect\u003cvoid\u003e = Db.asEffect().pipe(Effect.asVoid)\n", + "sourceText": "import { Effect, Context } from \"effect\"\n\nclass Db extends Context.Service\u003cDb\u003e()(\"Db\", { make: Effect.succeed({}) }) {}\n\n// @ts-expect-error\nexport const preview: Effect.Effect\u003cvoid\u003e = Db.pipe(Effect.asVoid)\n", "diagnostics": [ { "start": 154, @@ -584,11 +584,11 @@ 377035 ], "preview": { - "sourceText": "import { Effect, Layer, Context } from \"effect\"\n\nclass A extends Context.Service\u003cA\u003e()(\"A\", { make: Effect.succeed({}) }) {\n static Default = Layer.effect(this, this.make)\n}\nclass B extends Context.Service\u003cB\u003e()(\"B\", { make: Effect.as(A.asEffect(), {}) }) {\n static Default = Layer.effect(this, this.make)\n}\nexport const preview = Layer.mergeAll(A.Default, B.Default)\n", + "sourceText": "import { Effect, Layer, Context } from \"effect\"\n\nclass A extends Context.Service\u003cA\u003e()(\"A\", { make: Effect.succeed({}) }) {\n static Default = Layer.effect(this, this.make)\n}\nclass B extends Context.Service\u003cB\u003e()(\"B\", { make: Effect.as(A, {}) }) {\n static Default = Layer.effect(this, this.make)\n}\nexport const preview = Layer.mergeAll(A.Default, B.Default)\n", "diagnostics": [ { - "start": 346, - "end": 355, + "start": 335, + "end": 344, "text": "This layer provides A which is required by another layer in the same Layer.mergeAll call. Layer.mergeAll creates layers in parallel, so dependencies between layers will not be satisfied. Consider moving this layer into a Layer.provideMerge after the Layer.mergeAll. effect(layerMergeAllWithDependencies)" } ] diff --git a/internal/effecttest/hover_test.go b/internal/effecttest/hover_test.go index f2e29618..cb1aaf95 100644 --- a/internal/effecttest/hover_test.go +++ b/internal/effecttest/hover_test.go @@ -106,7 +106,7 @@ class Database extends Context.Service()("Database", { } class Cache extends Context.Service()("Cache", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } @@ -160,7 +160,7 @@ class Database extends Context.Service()("Database", { } class Cache extends Context.Service()("Cache", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } @@ -204,7 +204,7 @@ class Database extends Context.Service()("Database", { } class Cache extends Context.Service()("Cache", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } @@ -291,7 +291,7 @@ class Database extends Context.Service()("Database", { } class Cache extends Context.Service()("Cache", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/internal/rules/outdated_api_db.go b/internal/rules/outdated_api_db.go index 21f3ec87..da3d40de 100644 --- a/internal/rules/outdated_api_db.go +++ b/internal/rules/outdated_api_db.go @@ -257,7 +257,7 @@ var EffectModuleMigrationDb = map[string]Migration{ "filterOrDieMessage": removed("Use Effect.filterOrFail and Effect.orDie instead."), "finalizersMask": removed("Finalizer masking has been removed in Effect v4."), "findFirst": unchanged(), - "firstSuccessOf": removed("Use Effect.raceAll instead."), + "firstSuccessOf": unchanged(), "flipWith": removed("Use Effect.flip combined with the desired transformation instead."), "fromFiber": removed("Use Fiber.join instead."), "fromFiberEffect": removed("Use Effect.flatMap with Fiber.join instead."), diff --git a/internal/typeparser/effect_yieldable_type.go b/internal/typeparser/effect_yieldable_type.go index 709cb6dd..b92aa4b1 100644 --- a/internal/typeparser/effect_yieldable_type.go +++ b/internal/typeparser/effect_yieldable_type.go @@ -6,7 +6,7 @@ import ( ) // EffectYieldableType resolves both plain Effect types and yieldable wrappers -// (Option, Either, etc.) that implement the asEffect() protocol. +// that implement the asEffect() protocol. // For v3: delegates directly to EffectType (v3 models yieldable through Effect subtyping). // For v4: tries EffectType first; if that fails, looks for an asEffect property, // checks if it's callable, and tries EffectType on the return type of each call signature. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 97c42eeb..99030d73 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,17 +37,17 @@ importers: version: link:../tsgo-win32-x64 devDependencies: '@effect/platform-node': - specifier: ^4.0.0-beta.46 - version: 4.0.0-beta.46(effect@4.0.0-beta.46)(ioredis@5.9.2) + specifier: ^4.0.0-beta.66 + version: 4.0.0-beta.66(effect@4.0.0-beta.66)(ioredis@5.9.2) '@effect/platform-node-shared': - specifier: ^4.0.0-beta.46 - version: 4.0.0-beta.46(effect@4.0.0-beta.46) + specifier: ^4.0.0-beta.66 + version: 4.0.0-beta.66(effect@4.0.0-beta.66) '@types/node': specifier: ^24.3.0 version: 24.10.13 effect: - specifier: ^4.0.0-beta.46 - version: 4.0.0-beta.46 + specifier: ^4.0.0-beta.66 + version: 4.0.0-beta.66 tsdown: specifier: ^0.20.1 version: 0.20.3(typescript@5.9.3) @@ -56,7 +56,7 @@ importers: version: 5.9.3 vitest: specifier: ^3.2.1 - version: 3.2.4(@types/node@24.10.13)(yaml@2.8.2) + version: 3.2.4(@types/node@24.10.13)(yaml@2.9.0) _packages/tsgo-darwin-arm64: {} @@ -117,8 +117,8 @@ importers: specifier: ^22.0.0 version: 22.19.15 effect: - specifier: 4.0.0-beta.46 - version: 4.0.0-beta.46 + specifier: 4.0.0-beta.66 + version: 4.0.0-beta.66 fast-check: specifier: ^4.4.0 version: 4.5.3 @@ -135,8 +135,8 @@ importers: specifier: ^22.0.0 version: 22.19.15 effect: - specifier: 4.0.0-beta.46 - version: 4.0.0-beta.46 + specifier: 4.0.0-beta.66 + version: 4.0.0-beta.66 fast-check: specifier: ^4.4.0 version: 4.5.3 @@ -153,8 +153,8 @@ importers: specifier: ^22.0.0 version: 22.19.15 effect: - specifier: 4.0.0-beta.46 - version: 4.0.0-beta.46 + specifier: 4.0.0-beta.66 + version: 4.0.0-beta.66 fast-check: specifier: ^4.4.0 version: 4.5.3 @@ -244,17 +244,17 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} - '@effect/platform-node-shared@4.0.0-beta.46': - resolution: {integrity: sha512-Yzci82XbZ1W3tuiownsJawrJZTGeTrTZKLD0uxdBWCBzlVyqDwoSwRwO5qh33DurJj9B7iS8MDf14fpGRBPNGQ==} + '@effect/platform-node-shared@4.0.0-beta.66': + resolution: {integrity: sha512-+ymrhBnESv/hmn5SKTe2//IY9Ox/hGPeoogEWhW47ZGyhFI5eMYFxdEUBa+3IAV05rrBzrxON9lynu68n0DM7w==} engines: {node: '>=18.0.0'} peerDependencies: - effect: ^4.0.0-beta.46 + effect: ^4.0.0-beta.66 - '@effect/platform-node@4.0.0-beta.46': - resolution: {integrity: sha512-6AFRKjJO95dFl5lK/YnJi04uePjQDFi3+K1aXwcz/EfVlRwJ4+lg5O4vbievfKL/hnfcShVp3/eXnNS9tvlMZQ==} + '@effect/platform-node@4.0.0-beta.66': + resolution: {integrity: sha512-s/0RgaQFuszzdorRnX1PwEQNnSOi+JgMJo3zEe9O2NR3sosMhTr0Uk+1AF6bUOI9uJ2CPT3KpTIIU7q5/TpOkg==} engines: {node: '>=18.0.0'} peerDependencies: - effect: ^4.0.0-beta.46 + effect: ^4.0.0-beta.66 ioredis: ^5.7.0 '@emnapi/core@1.8.1': @@ -876,8 +876,8 @@ packages: effect@3.19.19: resolution: {integrity: sha512-Yc8U/SVXo2dHnaP7zNBlAo83h/nzSJpi7vph6Hzyl4ulgMBIgPmz3UzOjb9sBgpFE00gC0iETR244sfXDNLHRg==} - effect@4.0.0-beta.46: - resolution: {integrity: sha512-3f6gXvvUMtEueCRY0tU76Vq2Pej1SAwwE+s0Owd5nD53yS5n4RZhUA1rlCGFuSbQFA225pGy8vO72+lpvu7u5A==} + effect@4.0.0-beta.66: + resolution: {integrity: sha512-4arEr62cziFa8BBVDUwJCJJmaVepXf/kRg7KtC0h8+bufngscrHbwWFhr9c+HonwOF+31U3iD3xUJmw9KzX7Dw==} empathic@2.0.0: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} @@ -918,6 +918,10 @@ packages: resolution: {integrity: sha512-IE9csY7lnhxBnA8g/WI5eg/hygA6MGWJMSNfFRrBlXUciADEhS1EDB0SIsMSvzubzIlOBbVITSsypCsW717poA==} engines: {node: '>=12.17.0'} + fast-check@4.8.0: + resolution: {integrity: sha512-GOJ158CUMnN6cSahsv4+ExARvIDuzzinFjkp0E9WtiBa5zcVeLozVkWaE4IzFcc+Y48Wp1EDlUZsXRyAztQcSg==} + engines: {node: '>=12.17.0'} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} @@ -1087,8 +1091,8 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.8: - resolution: {integrity: sha512-bC4UGzHhVvgDNS7kn9tV8fAucIYUBuGojcaLiz7v+P63Lmtm0Xeji8B/8tYKddALXxJLpwIeBmUN3u64C4YkRA==} + msgpackr@1.11.12: + resolution: {integrity: sha512-RBdJ1Un7yGlXWajrkxcSa93nvQ0w4zBf60c0yYv7YtBelP8H2FA7XsfBbMHtXKXUMUxH7zV3Zuozh+kUQWhHvg==} multipasta@0.2.7: resolution: {integrity: sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA==} @@ -1180,6 +1184,9 @@ packages: pure-rand@7.0.1: resolution: {integrity: sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==} + pure-rand@8.4.0: + resolution: {integrity: sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==} + quansync@0.2.11: resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} @@ -1335,8 +1342,9 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - toml@3.0.0: - resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} + toml@4.1.1: + resolution: {integrity: sha512-EBJnVBr3dTXdA89WVFoAIPUqkBjxPMwRqsfuo1r240tKFHXv3zgca4+NJib/h6TyvGF7vOawz0jGuryJCdNHrw==} + engines: {node: '>=20'} tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} @@ -1384,9 +1392,9 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@7.24.5: - resolution: {integrity: sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==} - engines: {node: '>=20.18.1'} + undici@8.2.0: + resolution: {integrity: sha512-Z+4Hx9GE26Lh9Upwfnc8C7SsrpBPGaM/Gm6kMFtiG7c+5IvQKlXi/t+9x9DrrCh29cww5TSP9YdVaBcnLDs5fQ==} + engines: {node: '>=22.19.0'} universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -1489,8 +1497,8 @@ packages: engines: {node: '>=8'} hasBin: true - ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -1501,8 +1509,8 @@ packages: utf-8-validate: optional: true - yaml@2.8.2: - resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} hasBin: true @@ -1675,22 +1683,22 @@ snapshots: human-id: 4.1.3 prettier: 2.8.8 - '@effect/platform-node-shared@4.0.0-beta.46(effect@4.0.0-beta.46)': + '@effect/platform-node-shared@4.0.0-beta.66(effect@4.0.0-beta.66)': dependencies: '@types/ws': 8.18.1 - effect: 4.0.0-beta.46 - ws: 8.19.0 + effect: 4.0.0-beta.66 + ws: 8.20.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node@4.0.0-beta.46(effect@4.0.0-beta.46)(ioredis@5.9.2)': + '@effect/platform-node@4.0.0-beta.66(effect@4.0.0-beta.66)(ioredis@5.9.2)': dependencies: - '@effect/platform-node-shared': 4.0.0-beta.46(effect@4.0.0-beta.46) - effect: 4.0.0-beta.46 + '@effect/platform-node-shared': 4.0.0-beta.66(effect@4.0.0-beta.66) + effect: 4.0.0-beta.66 ioredis: 5.9.2 mime: 4.1.0 - undici: 7.24.5 + undici: 8.2.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -2029,13 +2037,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@24.10.13)(yaml@2.8.2))': + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@24.10.13)(yaml@2.9.0))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.13)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(yaml@2.9.0) '@vitest/pretty-format@3.2.4': dependencies: @@ -2143,18 +2151,18 @@ snapshots: '@standard-schema/spec': 1.1.0 fast-check: 3.23.2 - effect@4.0.0-beta.46: + effect@4.0.0-beta.66: dependencies: '@standard-schema/spec': 1.1.0 - fast-check: 4.5.3 + fast-check: 4.8.0 find-my-way-ts: 0.1.6 ini: 6.0.0 kubernetes-types: 1.30.0 - msgpackr: 1.11.8 + msgpackr: 1.11.12 multipasta: 0.2.7 - toml: 3.0.0 + toml: 4.1.1 uuid: 13.0.0 - yaml: 2.8.2 + yaml: 2.9.0 empathic@2.0.0: {} @@ -2212,6 +2220,10 @@ snapshots: dependencies: pure-rand: 7.0.1 + fast-check@4.8.0: + dependencies: + pure-rand: 8.4.0 + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2377,7 +2389,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.8: + msgpackr@1.11.12: optionalDependencies: msgpackr-extract: 3.0.3 @@ -2444,6 +2456,8 @@ snapshots: pure-rand@7.0.1: {} + pure-rand@8.4.0: {} + quansync@0.2.11: {} quansync@1.0.0: {} @@ -2604,7 +2618,7 @@ snapshots: dependencies: is-number: 7.0.0 - toml@3.0.0: {} + toml@4.1.1: {} tree-kill@1.2.2: {} @@ -2649,7 +2663,7 @@ snapshots: undici-types@7.16.0: {} - undici@7.24.5: {} + undici@8.2.0: {} universalify@0.1.2: {} @@ -2659,13 +2673,13 @@ snapshots: uuid@13.0.0: {} - vite-node@3.2.4(@types/node@24.10.13)(yaml@2.8.2): + vite-node@3.2.4(@types/node@24.10.13)(yaml@2.9.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@24.10.13)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(yaml@2.9.0) transitivePeerDependencies: - '@types/node' - jiti @@ -2680,7 +2694,7 @@ snapshots: - tsx - yaml - vite@7.3.1(@types/node@24.10.13)(yaml@2.8.2): + vite@7.3.1(@types/node@24.10.13)(yaml@2.9.0): dependencies: esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.3) @@ -2691,13 +2705,13 @@ snapshots: optionalDependencies: '@types/node': 24.10.13 fsevents: 2.3.3 - yaml: 2.8.2 + yaml: 2.9.0 - vitest@3.2.4(@types/node@24.10.13)(yaml@2.8.2): + vitest@3.2.4(@types/node@24.10.13)(yaml@2.9.0): dependencies: '@types/chai': 5.2.3 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@24.10.13)(yaml@2.8.2)) + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@24.10.13)(yaml@2.9.0)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -2715,8 +2729,8 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.1(@types/node@24.10.13)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@24.10.13)(yaml@2.8.2) + vite: 7.3.1(@types/node@24.10.13)(yaml@2.9.0) + vite-node: 3.2.4(@types/node@24.10.13)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 24.10.13 @@ -2743,6 +2757,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - ws@8.19.0: {} + ws@8.20.0: {} - yaml@2.8.2: {} + yaml@2.9.0: {} diff --git a/testdata/baselines/reference/effect-v4/documentSymbolEffectStub.symbols.txt b/testdata/baselines/reference/effect-v4/documentSymbolEffectStub.symbols.txt index e0aebf9d..e303ee04 100644 --- a/testdata/baselines/reference/effect-v4/documentSymbolEffectStub.symbols.txt +++ b/testdata/baselines/reference/effect-v4/documentSymbolEffectStub.symbols.txt @@ -34,10 +34,10 @@ (Property) make range=10:3-10:27 selection=10:3-10:7 (Property) Default range=12:3-12:49 selection=12:10-12:17 (Class) Cache range=15:1-19:2 selection=15:14-15:19 - (Property) make range=16:3-16:45 selection=16:3-16:7 + (Property) make range=16:3-16:34 selection=16:3-16:7 (Property) Default range=18:3-18:49 selection=18:10-18:17 (Class) UserRepository range=21:1-25:2 selection=21:14-21:28 - (Property) make range=22:3-22:81 selection=22:3-22:7 + (Property) make range=22:3-22:59 selection=22:3-22:7 (Property) Default range=24:3-24:49 selection=24:10-24:17 (Variable) expect range=27:14-27:45 selection=27:14-27:20 (Variable) simplePipeIn range=29:14-29:86 selection=29:14-29:26 @@ -95,10 +95,10 @@ (Property) make container="FileSystem" range=10:3-10:27 (Property) Default container="FileSystem" range=12:3-12:49 (Class) Cache container="" range=15:1-19:2 -(Property) make container="Cache" range=16:3-16:45 +(Property) make container="Cache" range=16:3-16:34 (Property) Default container="Cache" range=18:3-18:49 (Class) UserRepository container="" range=21:1-25:2 -(Property) make container="UserRepository" range=22:3-22:81 +(Property) make container="UserRepository" range=22:3-22:59 (Property) Default container="UserRepository" range=24:3-24:49 (Variable) expect container="" range=27:14-27:45 (Variable) simplePipeIn container="" range=29:14-29:86 diff --git a/testdata/baselines/reference/effect-v4/effect_fn_opportunity_panic.pipings.txt b/testdata/baselines/reference/effect-v4/effect_fn_opportunity_panic.pipings.txt index 51dfea83..67cacf47 100644 --- a/testdata/baselines/reference/effect-v4/effect_fn_opportunity_panic.pipings.txt +++ b/testdata/baselines/reference/effect-v4/effect_fn_opportunity_panic.pipings.txt @@ -118,7 +118,7 @@ Node: Layer.effect(JsonPlaceholder)(\n Effect.gen(function* () {\n const con Node Kind: KindCallExpression Subject: function* () {\n const config = yield* ApiConfig\n const client = (yield* HttpClient.HttpClient).pipe(\n HttpClient.mapRequest(\n flow(\n HttpClientRequest.prependUrl(config.baseUrl),\n HttpClientRequest.acceptJson\n )\n ),\n HttpClient.filterStatusOk\n )\n\n return {\n getTodo: (id: number) => {\n const path = `/todos/${id}`\n const url = new URL(path, config.baseUrl).toString()\n\n return client.get(path).pipe(\n Effect.flatMap(HttpClientResponse.schemaBodyJson(Todo)),\n Effect.mapError((cause) => {\n if (cause._tag === "HttpClientError") {\n if (cause.reason._tag === "StatusCodeError") {\n return new InvalidStatusError({\n url,\n status: cause.reason.response.status\n })\n }\n\n return new RequestError({ url, cause })\n }\n\n return new DecodeError({ url, cause })\n })\n )\n },\n getUser: (id: number) => {\n const path = `/users/${id}`\n const url = new URL(path, config.baseUrl).toString()\n\n return client.get(path).pipe(\n Effect.flatMap(HttpClientResponse.schemaBodyJson(User)),\n Effect.mapError((cause) => {\n if (cause._tag === "HttpClientError") {\n if (cause.reason._tag === "StatusCodeError") {\n return new InvalidStatusError({\n url,\n status: cause.reason.response.status\n })\n }\n\n return new RequestError({ url, cause })\n }\n\n return new DecodeError({ url, cause })\n })\n )\n }\n }\n } -Subject Type: () => Generator | Service, { getTodo: (id: number) => Effect; getUser: (id: number) => Effect; }, any> +Subject Type: () => Generator | Effect<{ readonly baseUrl: string; }, never, ApiConfig>, { getTodo: (id: number) => Effect; getUser: (id: number) => Effect; }, any> Transformations (3): [0] kind: call @@ -244,7 +244,7 @@ Node: Effect.gen(function* () {\n const api = yield* JsonPlaceholder\n const [ Node Kind: KindCallExpression Subject: function* () {\n const api = yield* JsonPlaceholder\n const [todo, user] = yield* Effect.all([api.getTodo(1), api.getUser(1)])\n\n yield* Effect.log(`Todo #${todo.id}: ${todo.title}`)\n yield* Effect.log(`Assigned to: ${user.name} <${user.email}>`)\n yield* Effect.log(`Completed: ${todo.completed}`)\n} -Subject Type: () => Generator | Effect<[Todo, User], JsonPlaceholderError, never> | Service Effect; readonly getUser: (id: number) => Effect; }>, void, any> +Subject Type: () => Generator | Effect<{ readonly getTodo: (id: number) => Effect; readonly getUser: (id: number) => Effect; }, never, JsonPlaceholder> | Effect<[Todo, User], JsonPlaceholderError, never>, void, any> Transformations (3): [0] kind: call diff --git a/testdata/baselines/reference/effect-v4/layerGraphDocumented.errors.txt b/testdata/baselines/reference/effect-v4/layerGraphDocumented.errors.txt index 94dabd3c..420af13b 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphDocumented.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphDocumented.errors.txt @@ -28,7 +28,7 @@ Effect version: 4.0.0 * In-memory caching layer for improved performance */ export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } @@ -37,7 +37,7 @@ Effect version: 4.0.0 * Repository for user data access and persistence */ export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerGraphDocumented.flows.layerGraphDocumented.mermaid b/testdata/baselines/reference/effect-v4/layerGraphDocumented.flows.layerGraphDocumented.mermaid index c1990c7f..cb503eac 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphDocumented.flows.layerGraphDocumented.mermaid +++ b/testdata/baselines/reference/effect-v4/layerGraphDocumented.flows.layerGraphDocumented.mermaid @@ -15,8 +15,8 @@ flowchart TB 13["type: Layer#lt;FileSystem, never, never#gt;
callee:
args: #91;#93;"] 14[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 15[/"type: typeof FileSystem
node: this"/] - 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 17[/"type: Effect#lt;#123;#125;, never, FileSystem#gt;
node: FileSystem.asEffect#40;#41;"/] + 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem, #123;#125;#41;#92;n#125;#41;"/] + 17[/"type: typeof FileSystem
node: FileSystem"/] 18["type: Effect#lt;#123;#125;, never, FileSystem#gt;
callee:
args: #91;#93;"] 19[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 20[/"type: #123;#125;
node: #123;#125;"/] @@ -24,11 +24,11 @@ flowchart TB 22["type: Layer#lt;Cache, never, FileSystem#gt;
callee:
args: #91;#93;"] 23[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 24[/"type: typeof Cache
node: this"/] - 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection.asEffect#40;#41;, Cache.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 26[/"type: Effect#lt;#123;#125;, never, DbConnection#gt;
node: DbConnection.asEffect#40;#41;"/] + 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection, Cache#41;, #123;#125;#41;#92;n#125;#41;"/] + 26[/"type: typeof DbConnection
node: DbConnection"/] 27["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 28[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 29[/"type: Effect#lt;#123;#125;, never, Cache#gt;
node: Cache.asEffect#40;#41;"/] + 29[/"type: typeof Cache
node: Cache"/] 30["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 31[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 32[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerGraphDocumented.pipings.txt b/testdata/baselines/reference/effect-v4/layerGraphDocumented.pipings.txt index 156bbd2f..fc1bad60 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphDocumented.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphDocumented.pipings.txt @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 25:8 - 25:45 -Node: Effect.as(FileSystem.asEffect(), {}) +Location: 25:8 - 25:34 +Node: Effect.as(FileSystem, {}) Node Kind: KindCallExpression -Subject: FileSystem.asEffect() -Subject Type: Effect<{}, never, FileSystem> +Subject: FileSystem +Subject Type: typeof FileSystem Transformations (1): [0] kind: dataFirst @@ -85,17 +85,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 34:8 - 34:81 -Node: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) +Location: 34:8 - 34:59 +Node: Effect.as(Effect.andThen(DbConnection, Cache), {}) Node Kind: KindCallExpression -Subject: DbConnection.asEffect() -Subject Type: Effect<{}, never, DbConnection> +Subject: DbConnection +Subject Type: typeof DbConnection Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Cache.asEffect()] + args: [Cache] outType: Effect<{}, never, Cache | DbConnection> [1] kind: dataFirst callee: Effect.as diff --git a/testdata/baselines/reference/effect-v4/layerGraphDuplicated.errors.txt b/testdata/baselines/reference/effect-v4/layerGraphDuplicated.errors.txt index dfd0432c..f7705cef 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphDuplicated.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphDuplicated.errors.txt @@ -13,13 +13,13 @@ Effect version: 4.0.0 } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } class EventsRepository extends Context.Service()("EventsRepository", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } @@ -31,19 +31,19 @@ Effect version: 4.0.0 } class UserService extends Context.Service()("UserService", { - make: Effect.as(Effect.andThen(UserRepository.asEffect(), Analytics.asEffect()), {}) + make: Effect.as(Effect.andThen(UserRepository, Analytics), {}) }) { static Default = Layer.effect(this, this.make) } class EventService extends Context.Service()("EventService", { - make: Effect.as(Effect.andThen(EventsRepository.asEffect(), Analytics.asEffect()), {}) + make: Effect.as(Effect.andThen(EventsRepository, Analytics), {}) }) { static Default = Layer.effect(this, this.make) } class AppService extends Context.Service()("AppService", { - make: Effect.as(Effect.andThen(UserService.asEffect(), EventService.asEffect()), {}) + make: Effect.as(Effect.andThen(UserService, EventService), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerGraphDuplicated.flows.layerGraphDuplicated.mermaid b/testdata/baselines/reference/effect-v4/layerGraphDuplicated.flows.layerGraphDuplicated.mermaid index 228b0878..1b339086 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphDuplicated.flows.layerGraphDuplicated.mermaid +++ b/testdata/baselines/reference/effect-v4/layerGraphDuplicated.flows.layerGraphDuplicated.mermaid @@ -7,8 +7,8 @@ flowchart TB 5["type: Layer#lt;Database, never, never#gt;
callee:
args: #91;#93;"] 6[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 7[/"type: typeof Database
node: this"/] - 8[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Database#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Database.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 9[/"type: Effect#lt;#123;#125;, never, Database#gt;
node: Database.asEffect#40;#41;"/] + 8[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Database#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Database, #123;#125;#41;#92;n#125;#41;"/] + 9[/"type: typeof Database
node: Database"/] 10["type: Effect#lt;#123;#125;, never, Database#gt;
callee:
args: #91;#93;"] 11[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 12[/"type: #123;#125;
node: #123;#125;"/] @@ -16,8 +16,8 @@ flowchart TB 14["type: Layer#lt;UserRepository, never, Database#gt;
callee:
args: #91;#93;"] 15[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 16[/"type: typeof UserRepository
node: this"/] - 17[/"type: ServiceClass#lt;EventsRepository, #quot;EventsRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Database#gt;; #125;
node: Context.Service#lt;EventsRepository#gt;#40;#41;#40;#quot;EventsRepository#quot;, #123;#92;n make: Effect.as#40;Database.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 18[/"type: Effect#lt;#123;#125;, never, Database#gt;
node: Database.asEffect#40;#41;"/] + 17[/"type: ServiceClass#lt;EventsRepository, #quot;EventsRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Database#gt;; #125;
node: Context.Service#lt;EventsRepository#gt;#40;#41;#40;#quot;EventsRepository#quot;, #123;#92;n make: Effect.as#40;Database, #123;#125;#41;#92;n#125;#41;"/] + 18[/"type: typeof Database
node: Database"/] 19["type: Effect#lt;#123;#125;, never, Database#gt;
callee:
args: #91;#93;"] 20[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 21[/"type: #123;#125;
node: #123;#125;"/] @@ -33,11 +33,11 @@ flowchart TB 31["type: Layer#lt;Analytics, never, never#gt;
callee:
args: #91;#93;"] 32[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 33[/"type: typeof Analytics
node: this"/] - 34[/"type: ServiceClass#lt;UserService, #quot;UserService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Analytics #124; UserRepository#gt;; #125;
node: Context.Service#lt;UserService#gt;#40;#41;#40;#quot;UserService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;UserRepository.asEffect#40;#41;, Analytics.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 35[/"type: Effect#lt;#123;#125;, never, UserRepository#gt;
node: UserRepository.asEffect#40;#41;"/] + 34[/"type: ServiceClass#lt;UserService, #quot;UserService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Analytics #124; UserRepository#gt;; #125;
node: Context.Service#lt;UserService#gt;#40;#41;#40;#quot;UserService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;UserRepository, Analytics#41;, #123;#125;#41;#92;n#125;#41;"/] + 35[/"type: typeof UserRepository
node: UserRepository"/] 36["type: Effect#lt;#123;#125;, never, Analytics #124; UserRepository#gt;
callee:
args: #91;#93;"] 37[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 38[/"type: Effect#lt;#123;#125;, never, Analytics#gt;
node: Analytics.asEffect#40;#41;"/] + 38[/"type: typeof Analytics
node: Analytics"/] 39["type: Effect#lt;#123;#125;, never, Analytics #124; UserRepository#gt;
callee:
args: #91;#93;"] 40[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 41[/"type: #123;#125;
node: #123;#125;"/] @@ -45,11 +45,11 @@ flowchart TB 43["type: Layer#lt;UserService, never, Analytics #124; UserRepository#gt;
callee:
args: #91;#93;"] 44[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 45[/"type: typeof UserService
node: this"/] - 46[/"type: ServiceClass#lt;EventService, #quot;EventService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Analytics #124; EventsRepository#gt;; #125;
node: Context.Service#lt;EventService#gt;#40;#41;#40;#quot;EventService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;EventsRepository.asEffect#40;#41;, Analytics.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 47[/"type: Effect#lt;#123;#125;, never, EventsRepository#gt;
node: EventsRepository.asEffect#40;#41;"/] + 46[/"type: ServiceClass#lt;EventService, #quot;EventService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Analytics #124; EventsRepository#gt;; #125;
node: Context.Service#lt;EventService#gt;#40;#41;#40;#quot;EventService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;EventsRepository, Analytics#41;, #123;#125;#41;#92;n#125;#41;"/] + 47[/"type: typeof EventsRepository
node: EventsRepository"/] 48["type: Effect#lt;#123;#125;, never, Analytics #124; EventsRepository#gt;
callee:
args: #91;#93;"] 49[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 50[/"type: Effect#lt;#123;#125;, never, Analytics#gt;
node: Analytics.asEffect#40;#41;"/] + 50[/"type: typeof Analytics
node: Analytics"/] 51["type: Effect#lt;#123;#125;, never, Analytics #124; EventsRepository#gt;
callee:
args: #91;#93;"] 52[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 53[/"type: #123;#125;
node: #123;#125;"/] @@ -57,11 +57,11 @@ flowchart TB 55["type: Layer#lt;EventService, never, Analytics #124; EventsRepository#gt;
callee:
args: #91;#93;"] 56[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 57[/"type: typeof EventService
node: this"/] - 58[/"type: ServiceClass#lt;AppService, #quot;AppService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, EventService #124; UserService#gt;; #125;
node: Context.Service#lt;AppService#gt;#40;#41;#40;#quot;AppService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;UserService.asEffect#40;#41;, EventService.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 59[/"type: Effect#lt;#123;#125;, never, UserService#gt;
node: UserService.asEffect#40;#41;"/] + 58[/"type: ServiceClass#lt;AppService, #quot;AppService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, EventService #124; UserService#gt;; #125;
node: Context.Service#lt;AppService#gt;#40;#41;#40;#quot;AppService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;UserService, EventService#41;, #123;#125;#41;#92;n#125;#41;"/] + 59[/"type: typeof UserService
node: UserService"/] 60["type: Effect#lt;#123;#125;, never, EventService #124; UserService#gt;
callee:
args: #91;#93;"] 61[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 62[/"type: Effect#lt;#123;#125;, never, EventService#gt;
node: EventService.asEffect#40;#41;"/] + 62[/"type: typeof EventService
node: EventService"/] 63["type: Effect#lt;#123;#125;, never, EventService #124; UserService#gt;
callee:
args: #91;#93;"] 64[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 65[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerGraphDuplicated.pipings.txt b/testdata/baselines/reference/effect-v4/layerGraphDuplicated.pipings.txt index 895cf24c..9a7d334c 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphDuplicated.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphDuplicated.pipings.txt @@ -29,12 +29,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 10:8 - 10:43 -Node: Effect.as(Database.asEffect(), {}) +Location: 10:8 - 10:32 +Node: Effect.as(Database, {}) Node Kind: KindCallExpression -Subject: Database.asEffect() -Subject Type: Effect<{}, never, Database> +Subject: Database +Subject Type: typeof Database Transformations (1): [0] kind: dataFirst @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 16:8 - 16:43 -Node: Effect.as(Database.asEffect(), {}) +Location: 16:8 - 16:32 +Node: Effect.as(Database, {}) Node Kind: KindCallExpression -Subject: Database.asEffect() -Subject Type: Effect<{}, never, Database> +Subject: Database +Subject Type: typeof Database Transformations (1): [0] kind: dataFirst @@ -113,17 +113,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 28:8 - 28:87 -Node: Effect.as(Effect.andThen(UserRepository.asEffect(), Analytics.asEffect()), {}) +Location: 28:8 - 28:65 +Node: Effect.as(Effect.andThen(UserRepository, Analytics), {}) Node Kind: KindCallExpression -Subject: UserRepository.asEffect() -Subject Type: Effect<{}, never, UserRepository> +Subject: UserRepository +Subject Type: typeof UserRepository Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Analytics.asEffect()] + args: [Analytics] outType: Effect<{}, never, Analytics | UserRepository> [1] kind: dataFirst callee: Effect.as @@ -145,17 +145,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 34:8 - 34:89 -Node: Effect.as(Effect.andThen(EventsRepository.asEffect(), Analytics.asEffect()), {}) +Location: 34:8 - 34:67 +Node: Effect.as(Effect.andThen(EventsRepository, Analytics), {}) Node Kind: KindCallExpression -Subject: EventsRepository.asEffect() -Subject Type: Effect<{}, never, EventsRepository> +Subject: EventsRepository +Subject Type: typeof EventsRepository Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Analytics.asEffect()] + args: [Analytics] outType: Effect<{}, never, Analytics | EventsRepository> [1] kind: dataFirst callee: Effect.as @@ -177,17 +177,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 40:8 - 40:87 -Node: Effect.as(Effect.andThen(UserService.asEffect(), EventService.asEffect()), {}) +Location: 40:8 - 40:65 +Node: Effect.as(Effect.andThen(UserService, EventService), {}) Node Kind: KindCallExpression -Subject: UserService.asEffect() -Subject Type: Effect<{}, never, UserService> +Subject: UserService +Subject Type: typeof UserService Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [EventService.asEffect()] + args: [EventService] outType: Effect<{}, never, EventService | UserService> [1] kind: dataFirst callee: Effect.as diff --git a/testdata/baselines/reference/effect-v4/layerGraphEffect.errors.txt b/testdata/baselines/reference/effect-v4/layerGraphEffect.errors.txt index 04417e0b..3b2658ec 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphEffect.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphEffect.errors.txt @@ -15,7 +15,7 @@ Effect version: 4.0.0 } export const AppLive = Layer.effectDiscard(Effect.gen(function*() { - const databaseContext = yield* DatabaseContext.asEffect() + const databaseContext = yield* DatabaseContext return yield* Effect.log(databaseContext.value) })).pipe(Layer.provide(DatabaseContext.Default)) diff --git a/testdata/baselines/reference/effect-v4/layerGraphEffect.flows.layerGraphEffect.mermaid b/testdata/baselines/reference/effect-v4/layerGraphEffect.flows.layerGraphEffect.mermaid index 15c038a2..7242d9e4 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphEffect.flows.layerGraphEffect.mermaid +++ b/testdata/baselines/reference/effect-v4/layerGraphEffect.flows.layerGraphEffect.mermaid @@ -7,12 +7,12 @@ flowchart TB 5["type: Layer#lt;DatabaseContext, never, never#gt;
callee:
args: #91;#93;"] 6[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 7[/"type: typeof DatabaseContext
node: this"/] - 8((("type: Effect#lt;void, never, DatabaseContext#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const databaseContext = yield* DatabaseContext.asEffect#40;#41;#92;n#92;n return yield* Effect.log#40;databaseContext.value#41;#92;n#125;#41;"))) + 8((("type: Effect#lt;void, never, DatabaseContext#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const databaseContext = yield* DatabaseContext#92;n#92;n return yield* Effect.log#40;databaseContext.value#41;#92;n#125;#41;"))) 9[/"type: void
node: yield* Effect.log#40;databaseContext.value#41;"/] 10[/"type: #quot;DatabaseContext#quot;
node: databaseContext.value"/] 11["type: Effect#lt;void, never, never#gt;
callee: Effect.log
args: #91;#93;"] 12[/"type: #40;...message: readonly any#91;#93;#41; =#gt; Effect#lt;void, never, never#gt;
node: Effect.log"/] - 13[/"type: Effect#lt;#123; value: #quot;DatabaseContext#quot;; #125;, never, DatabaseContext#gt;
node: DatabaseContext.asEffect#40;#41;"/] + 13[/"type: typeof DatabaseContext
node: DatabaseContext"/] 14["type: Layer#lt;never, never, DatabaseContext#gt;
callee: Layer.effectDiscard
args: #91;#93;"] 15[/"type: #lt;X, E, R#gt;#40;effect: Effect#lt;X, E, R#gt;#41; =#gt; Layer#lt;never, E, Exclude#lt;R, Scope#gt;#gt;
node: Layer.effectDiscard"/] 16["type: Layer#lt;never, never, never#gt;
callee: Layer.provide
args: #91;DatabaseContext.Default#93;"] diff --git a/testdata/baselines/reference/effect-v4/layerGraphEffect.layers.txt b/testdata/baselines/reference/effect-v4/layerGraphEffect.layers.txt index 05e4a3b2..476a148c 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphEffect.layers.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphEffect.layers.txt @@ -6,8 +6,8 @@ flowchart TD 0["DatabaseContext.Default
provides: DatabaseContext
requires: "] 1["Layer.provide#40;DatabaseContext.Default#41;
provides:
requires: "] - 2["Layer.effectDiscard#40;Effect.gen#40;function*#40;#41; #123;
const databaseContext = yield* DatabaseContext.asEffect#40;#41;

return yield* Effect.log#40;databaseContext.value#41;
#125;#41;#41;
provides:
requires: DatabaseContext"] - 3["Layer.effectDiscard#40;Effect.gen#40;function*#40;#41; #123;
const databaseContext = yield* DatabaseContext.asEffect#40;#41;

return yield* Effect.log#40;databaseContext.value#41;
#125;#41;#41;.pipe#40;Layer.provide#40;DatabaseContext.Default#41;#41;
provides:
requires: "] + 2["Layer.effectDiscard#40;Effect.gen#40;function*#40;#41; #123;
const databaseContext = yield* DatabaseContext

return yield* Effect.log#40;databaseContext.value#41;
#125;#41;#41;
provides:
requires: DatabaseContext"] + 3["Layer.effectDiscard#40;Effect.gen#40;function*#40;#41; #123;
const databaseContext = yield* DatabaseContext

return yield* Effect.log#40;databaseContext.value#41;
#125;#41;#41;.pipe#40;Layer.provide#40;DatabaseContext.Default#41;#41;
provides:
requires: "] 1 -->|"#123;#quot;relationship#quot;:#quot;call#quot;,#quot;argumentIndex#quot;:0#125;"| 0 1 -->|"#123;#quot;relationship#quot;:#quot;pipe#quot;#125;"| 2 3 -->|"#123;#quot;relationship#quot;:#quot;pipe#quot;#125;"| 1 @@ -57,7 +57,7 @@ flowchart TB --- outline --- flowchart TD 0["DatabaseContext.Default"] - 1["Layer.effectDiscard#35;40;Effect.gen#35;40;function*#35;40;#35;41; #35;123;
const databaseContext = yield* DatabaseContext.asEffect#35;40;#35;41;

return yield* Effect.log#35;40;databaseContext.value#35;41;
#35;125;#35;41;#35;41;"] + 1["Layer.effectDiscard#35;40;Effect.gen#35;40;function*#35;40;#35;41; #35;123;
const databaseContext = yield* DatabaseContext

return yield* Effect.log#35;40;databaseContext.value#35;41;
#35;125;#35;41;#35;41;"] 1 --> 0 --- quickinfo --- diff --git a/testdata/baselines/reference/effect-v4/layerGraphEffect.pipings.txt b/testdata/baselines/reference/effect-v4/layerGraphEffect.pipings.txt index 60a26897..9ff88275 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphEffect.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphEffect.pipings.txt @@ -30,10 +30,10 @@ Transformations (1): === Piping Flow === Location: 11:23 - 15:49 -Node: Layer.effectDiscard(Effect.gen(function*() {\n const databaseContext = yield* DatabaseContext.asEffect()\n\n return yield* Effect.log(databaseContext.value)\n})).pipe(Layer.provide(DatabaseContext.Default)) +Node: Layer.effectDiscard(Effect.gen(function*() {\n const databaseContext = yield* DatabaseContext\n\n return yield* Effect.log(databaseContext.value)\n})).pipe(Layer.provide(DatabaseContext.Default)) Node Kind: KindCallExpression -Subject: function*() {\n const databaseContext = yield* DatabaseContext.asEffect()\n\n return yield* Effect.log(databaseContext.value)\n} +Subject: function*() {\n const databaseContext = yield* DatabaseContext\n\n return yield* Effect.log(databaseContext.value)\n} Subject Type: () => Generator | Effect<{ value: "DatabaseContext"; }, never, DatabaseContext>, void, any> Transformations (3): diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.errors.txt b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.errors.txt index 36e28bdc..22c4cf9c 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.errors.txt @@ -29,12 +29,12 @@ Effect version: 4.0.0 static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.flows.simple.mermaid b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.flows.simple.mermaid index 90cb7edd..635b3b02 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.flows.simple.mermaid +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.flows.simple.mermaid @@ -15,8 +15,8 @@ flowchart TB 13["type: Layer#lt;FileSystem, never, never#gt;
callee:
args: #91;#93;"] 14[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 15[/"type: typeof FileSystem
node: this"/] - 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 17[/"type: Effect#lt;#123;#125;, never, FileSystem#gt;
node: FileSystem.asEffect#40;#41;"/] + 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem, #123;#125;#41;#92;n#125;#41;"/] + 17[/"type: typeof FileSystem
node: FileSystem"/] 18["type: Effect#lt;#123;#125;, never, FileSystem#gt;
callee:
args: #91;#93;"] 19[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 20[/"type: #123;#125;
node: #123;#125;"/] @@ -24,11 +24,11 @@ flowchart TB 22["type: Layer#lt;Cache, never, FileSystem#gt;
callee:
args: #91;#93;"] 23[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 24[/"type: typeof Cache
node: this"/] - 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection.asEffect#40;#41;, Cache.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 26[/"type: Effect#lt;#123;#125;, never, DbConnection#gt;
node: DbConnection.asEffect#40;#41;"/] + 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection, Cache#41;, #123;#125;#41;#92;n#125;#41;"/] + 26[/"type: typeof DbConnection
node: DbConnection"/] 27["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 28[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 29[/"type: Effect#lt;#123;#125;, never, Cache#gt;
node: Cache.asEffect#40;#41;"/] + 29[/"type: typeof Cache
node: Cache"/] 30["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 31[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 32[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.pipings.txt b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.pipings.txt index 371e8362..e1386239 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbols.pipings.txt @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 14:8 - 14:45 -Node: Effect.as(FileSystem.asEffect(), {}) +Location: 14:8 - 14:34 +Node: Effect.as(FileSystem, {}) Node Kind: KindCallExpression -Subject: FileSystem.asEffect() -Subject Type: Effect<{}, never, FileSystem> +Subject: FileSystem +Subject Type: typeof FileSystem Transformations (1): [0] kind: dataFirst @@ -85,17 +85,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 19:8 - 19:81 -Node: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) +Location: 19:8 - 19:59 +Node: Effect.as(Effect.andThen(DbConnection, Cache), {}) Node Kind: KindCallExpression -Subject: DbConnection.asEffect() -Subject Type: Effect<{}, never, DbConnection> +Subject: DbConnection +Subject Type: typeof DbConnection Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Cache.asEffect()] + args: [Cache] outType: Effect<{}, never, Cache | DbConnection> [1] kind: dataFirst callee: Effect.as diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.errors.txt b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.errors.txt index f080d6bb..9069988f 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.errors.txt @@ -29,7 +29,7 @@ Effect version: 4.0.0 static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.flows.base.mermaid b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.flows.base.mermaid index b18ccace..dd0a0383 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.flows.base.mermaid +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.flows.base.mermaid @@ -15,8 +15,8 @@ flowchart TB 13["type: Layer#lt;FileSystem, never, never#gt;
callee:
args: #91;#93;"] 14[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 15[/"type: typeof FileSystem
node: this"/] - 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 17[/"type: Effect#lt;#123;#125;, never, FileSystem#gt;
node: FileSystem.asEffect#40;#41;"/] + 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem, #123;#125;#41;#92;n#125;#41;"/] + 17[/"type: typeof FileSystem
node: FileSystem"/] 18["type: Effect#lt;#123;#125;, never, FileSystem#gt;
callee:
args: #91;#93;"] 19[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 20[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.pipings.txt b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.pipings.txt index 2de960e3..1f5b777d 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsDeep.pipings.txt @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 14:8 - 14:45 -Node: Effect.as(FileSystem.asEffect(), {}) +Location: 14:8 - 14:34 +Node: Effect.as(FileSystem, {}) Node Kind: KindCallExpression -Subject: FileSystem.asEffect() -Subject Type: Effect<{}, never, FileSystem> +Subject: FileSystem +Subject Type: typeof FileSystem Transformations (1): [0] kind: dataFirst diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.errors.txt b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.errors.txt index d8097848..5592696d 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.errors.txt @@ -29,12 +29,12 @@ Effect version: 4.0.0 static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.flows.simple.mermaid b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.flows.simple.mermaid index 17690184..6fa674da 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.flows.simple.mermaid +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.flows.simple.mermaid @@ -15,8 +15,8 @@ flowchart TB 13["type: Layer#lt;FileSystem, never, never#gt;
callee:
args: #91;#93;"] 14[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 15[/"type: typeof FileSystem
node: this"/] - 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 17[/"type: Effect#lt;#123;#125;, never, FileSystem#gt;
node: FileSystem.asEffect#40;#41;"/] + 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem, #123;#125;#41;#92;n#125;#41;"/] + 17[/"type: typeof FileSystem
node: FileSystem"/] 18["type: Effect#lt;#123;#125;, never, FileSystem#gt;
callee:
args: #91;#93;"] 19[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 20[/"type: #123;#125;
node: #123;#125;"/] @@ -24,11 +24,11 @@ flowchart TB 22["type: Layer#lt;Cache, never, FileSystem#gt;
callee:
args: #91;#93;"] 23[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 24[/"type: typeof Cache
node: this"/] - 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection.asEffect#40;#41;, Cache.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 26[/"type: Effect#lt;#123;#125;, never, DbConnection#gt;
node: DbConnection.asEffect#40;#41;"/] + 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection, Cache#41;, #123;#125;#41;#92;n#125;#41;"/] + 26[/"type: typeof DbConnection
node: DbConnection"/] 27["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 28[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 29[/"type: Effect#lt;#123;#125;, never, Cache#gt;
node: Cache.asEffect#40;#41;"/] + 29[/"type: typeof Cache
node: Cache"/] 30["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 31[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 32[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.pipings.txt b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.pipings.txt index 160fb247..be3bca8b 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphFollowSymbolsOff.pipings.txt @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 14:8 - 14:45 -Node: Effect.as(FileSystem.asEffect(), {}) +Location: 14:8 - 14:34 +Node: Effect.as(FileSystem, {}) Node Kind: KindCallExpression -Subject: FileSystem.asEffect() -Subject Type: Effect<{}, never, FileSystem> +Subject: FileSystem +Subject Type: typeof FileSystem Transformations (1): [0] kind: dataFirst @@ -85,17 +85,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 19:8 - 19:81 -Node: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) +Location: 19:8 - 19:59 +Node: Effect.as(Effect.andThen(DbConnection, Cache), {}) Node Kind: KindCallExpression -Subject: DbConnection.asEffect() -Subject Type: Effect<{}, never, DbConnection> +Subject: DbConnection +Subject Type: typeof DbConnection Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Cache.asEffect()] + args: [Cache] outType: Effect<{}, never, Cache | DbConnection> [1] kind: dataFirst callee: Effect.as diff --git a/testdata/baselines/reference/effect-v4/layerGraphMultiple.errors.txt b/testdata/baselines/reference/effect-v4/layerGraphMultiple.errors.txt index 1a747c22..4d9ad7f4 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphMultiple.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphMultiple.errors.txt @@ -21,13 +21,13 @@ Effect version: 4.0.0 } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } class EventsRepository extends Context.Service()("EventsRepository", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } @@ -39,19 +39,19 @@ Effect version: 4.0.0 } class UserService extends Context.Service()("UserService", { - make: Effect.as(Effect.andThen(UserRepository.asEffect(), Analytics.asEffect()), {}) + make: Effect.as(Effect.andThen(UserRepository, Analytics), {}) }) { static Default = Layer.effect(this, this.make) } class EventService extends Context.Service()("EventService", { - make: Effect.as(Effect.andThen(EventsRepository.asEffect(), Analytics.asEffect()), {}) + make: Effect.as(Effect.andThen(EventsRepository, Analytics), {}) }) { static Default = Layer.effect(this, this.make) } class AppService extends Context.Service()("AppService", { - make: Effect.as(Effect.andThen(UserService.asEffect(), EventService.asEffect()), {}) + make: Effect.as(Effect.andThen(UserService, EventService), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerGraphMultiple.flows.layerGraphMultiple.mermaid b/testdata/baselines/reference/effect-v4/layerGraphMultiple.flows.layerGraphMultiple.mermaid index 58d7c879..9909f414 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphMultiple.flows.layerGraphMultiple.mermaid +++ b/testdata/baselines/reference/effect-v4/layerGraphMultiple.flows.layerGraphMultiple.mermaid @@ -7,8 +7,8 @@ flowchart TB 5["type: Layer#lt;Database, never, never#gt;
callee:
args: #91;#93;"] 6[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 7[/"type: typeof Database
node: this"/] - 8[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Database#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Database.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 9[/"type: Effect#lt;#123;#125;, never, Database#gt;
node: Database.asEffect#40;#41;"/] + 8[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Database#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Database, #123;#125;#41;#92;n#125;#41;"/] + 9[/"type: typeof Database
node: Database"/] 10["type: Effect#lt;#123;#125;, never, Database#gt;
callee:
args: #91;#93;"] 11[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 12[/"type: #123;#125;
node: #123;#125;"/] @@ -16,8 +16,8 @@ flowchart TB 14["type: Layer#lt;UserRepository, never, Database#gt;
callee:
args: #91;#93;"] 15[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 16[/"type: typeof UserRepository
node: this"/] - 17[/"type: ServiceClass#lt;EventsRepository, #quot;EventsRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Database#gt;; #125;
node: Context.Service#lt;EventsRepository#gt;#40;#41;#40;#quot;EventsRepository#quot;, #123;#92;n make: Effect.as#40;Database.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 18[/"type: Effect#lt;#123;#125;, never, Database#gt;
node: Database.asEffect#40;#41;"/] + 17[/"type: ServiceClass#lt;EventsRepository, #quot;EventsRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Database#gt;; #125;
node: Context.Service#lt;EventsRepository#gt;#40;#41;#40;#quot;EventsRepository#quot;, #123;#92;n make: Effect.as#40;Database, #123;#125;#41;#92;n#125;#41;"/] + 18[/"type: typeof Database
node: Database"/] 19["type: Effect#lt;#123;#125;, never, Database#gt;
callee:
args: #91;#93;"] 20[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 21[/"type: #123;#125;
node: #123;#125;"/] @@ -33,11 +33,11 @@ flowchart TB 31["type: Layer#lt;Analytics, never, never#gt;
callee:
args: #91;#93;"] 32[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 33[/"type: typeof Analytics
node: this"/] - 34[/"type: ServiceClass#lt;UserService, #quot;UserService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Analytics #124; UserRepository#gt;; #125;
node: Context.Service#lt;UserService#gt;#40;#41;#40;#quot;UserService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;UserRepository.asEffect#40;#41;, Analytics.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 35[/"type: Effect#lt;#123;#125;, never, UserRepository#gt;
node: UserRepository.asEffect#40;#41;"/] + 34[/"type: ServiceClass#lt;UserService, #quot;UserService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Analytics #124; UserRepository#gt;; #125;
node: Context.Service#lt;UserService#gt;#40;#41;#40;#quot;UserService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;UserRepository, Analytics#41;, #123;#125;#41;#92;n#125;#41;"/] + 35[/"type: typeof UserRepository
node: UserRepository"/] 36["type: Effect#lt;#123;#125;, never, Analytics #124; UserRepository#gt;
callee:
args: #91;#93;"] 37[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 38[/"type: Effect#lt;#123;#125;, never, Analytics#gt;
node: Analytics.asEffect#40;#41;"/] + 38[/"type: typeof Analytics
node: Analytics"/] 39["type: Effect#lt;#123;#125;, never, Analytics #124; UserRepository#gt;
callee:
args: #91;#93;"] 40[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 41[/"type: #123;#125;
node: #123;#125;"/] @@ -45,11 +45,11 @@ flowchart TB 43["type: Layer#lt;UserService, never, Analytics #124; UserRepository#gt;
callee:
args: #91;#93;"] 44[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 45[/"type: typeof UserService
node: this"/] - 46[/"type: ServiceClass#lt;EventService, #quot;EventService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Analytics #124; EventsRepository#gt;; #125;
node: Context.Service#lt;EventService#gt;#40;#41;#40;#quot;EventService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;EventsRepository.asEffect#40;#41;, Analytics.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 47[/"type: Effect#lt;#123;#125;, never, EventsRepository#gt;
node: EventsRepository.asEffect#40;#41;"/] + 46[/"type: ServiceClass#lt;EventService, #quot;EventService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Analytics #124; EventsRepository#gt;; #125;
node: Context.Service#lt;EventService#gt;#40;#41;#40;#quot;EventService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;EventsRepository, Analytics#41;, #123;#125;#41;#92;n#125;#41;"/] + 47[/"type: typeof EventsRepository
node: EventsRepository"/] 48["type: Effect#lt;#123;#125;, never, Analytics #124; EventsRepository#gt;
callee:
args: #91;#93;"] 49[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 50[/"type: Effect#lt;#123;#125;, never, Analytics#gt;
node: Analytics.asEffect#40;#41;"/] + 50[/"type: typeof Analytics
node: Analytics"/] 51["type: Effect#lt;#123;#125;, never, Analytics #124; EventsRepository#gt;
callee:
args: #91;#93;"] 52[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 53[/"type: #123;#125;
node: #123;#125;"/] @@ -57,11 +57,11 @@ flowchart TB 55["type: Layer#lt;EventService, never, Analytics #124; EventsRepository#gt;
callee:
args: #91;#93;"] 56[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 57[/"type: typeof EventService
node: this"/] - 58[/"type: ServiceClass#lt;AppService, #quot;AppService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, EventService #124; UserService#gt;; #125;
node: Context.Service#lt;AppService#gt;#40;#41;#40;#quot;AppService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;UserService.asEffect#40;#41;, EventService.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 59[/"type: Effect#lt;#123;#125;, never, UserService#gt;
node: UserService.asEffect#40;#41;"/] + 58[/"type: ServiceClass#lt;AppService, #quot;AppService#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, EventService #124; UserService#gt;; #125;
node: Context.Service#lt;AppService#gt;#40;#41;#40;#quot;AppService#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;UserService, EventService#41;, #123;#125;#41;#92;n#125;#41;"/] + 59[/"type: typeof UserService
node: UserService"/] 60["type: Effect#lt;#123;#125;, never, EventService #124; UserService#gt;
callee:
args: #91;#93;"] 61[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 62[/"type: Effect#lt;#123;#125;, never, EventService#gt;
node: EventService.asEffect#40;#41;"/] + 62[/"type: typeof EventService
node: EventService"/] 63["type: Effect#lt;#123;#125;, never, EventService #124; UserService#gt;
callee:
args: #91;#93;"] 64[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 65[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerGraphMultiple.pipings.txt b/testdata/baselines/reference/effect-v4/layerGraphMultiple.pipings.txt index 96788a7b..4e1452b5 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphMultiple.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphMultiple.pipings.txt @@ -29,12 +29,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 18:8 - 18:43 -Node: Effect.as(Database.asEffect(), {}) +Location: 18:8 - 18:32 +Node: Effect.as(Database, {}) Node Kind: KindCallExpression -Subject: Database.asEffect() -Subject Type: Effect<{}, never, Database> +Subject: Database +Subject Type: typeof Database Transformations (1): [0] kind: dataFirst @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 24:8 - 24:43 -Node: Effect.as(Database.asEffect(), {}) +Location: 24:8 - 24:32 +Node: Effect.as(Database, {}) Node Kind: KindCallExpression -Subject: Database.asEffect() -Subject Type: Effect<{}, never, Database> +Subject: Database +Subject Type: typeof Database Transformations (1): [0] kind: dataFirst @@ -113,17 +113,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 36:8 - 36:87 -Node: Effect.as(Effect.andThen(UserRepository.asEffect(), Analytics.asEffect()), {}) +Location: 36:8 - 36:65 +Node: Effect.as(Effect.andThen(UserRepository, Analytics), {}) Node Kind: KindCallExpression -Subject: UserRepository.asEffect() -Subject Type: Effect<{}, never, UserRepository> +Subject: UserRepository +Subject Type: typeof UserRepository Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Analytics.asEffect()] + args: [Analytics] outType: Effect<{}, never, Analytics | UserRepository> [1] kind: dataFirst callee: Effect.as @@ -145,17 +145,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 42:8 - 42:89 -Node: Effect.as(Effect.andThen(EventsRepository.asEffect(), Analytics.asEffect()), {}) +Location: 42:8 - 42:67 +Node: Effect.as(Effect.andThen(EventsRepository, Analytics), {}) Node Kind: KindCallExpression -Subject: EventsRepository.asEffect() -Subject Type: Effect<{}, never, EventsRepository> +Subject: EventsRepository +Subject Type: typeof EventsRepository Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Analytics.asEffect()] + args: [Analytics] outType: Effect<{}, never, Analytics | EventsRepository> [1] kind: dataFirst callee: Effect.as @@ -177,17 +177,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 48:8 - 48:87 -Node: Effect.as(Effect.andThen(UserService.asEffect(), EventService.asEffect()), {}) +Location: 48:8 - 48:65 +Node: Effect.as(Effect.andThen(UserService, EventService), {}) Node Kind: KindCallExpression -Subject: UserService.asEffect() -Subject Type: Effect<{}, never, UserService> +Subject: UserService +Subject Type: typeof UserService Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [EventService.asEffect()] + args: [EventService] outType: Effect<{}, never, EventService | UserService> [1] kind: dataFirst callee: Effect.as diff --git a/testdata/baselines/reference/effect-v4/layerGraphSimple.errors.txt b/testdata/baselines/reference/effect-v4/layerGraphSimple.errors.txt index 449c06d4..73cbcab1 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphSimple.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphSimple.errors.txt @@ -25,12 +25,12 @@ Effect version: 4.0.0 static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerGraphSimple.flows.layerGraphSimple.mermaid b/testdata/baselines/reference/effect-v4/layerGraphSimple.flows.layerGraphSimple.mermaid index 90cb7edd..635b3b02 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphSimple.flows.layerGraphSimple.mermaid +++ b/testdata/baselines/reference/effect-v4/layerGraphSimple.flows.layerGraphSimple.mermaid @@ -15,8 +15,8 @@ flowchart TB 13["type: Layer#lt;FileSystem, never, never#gt;
callee:
args: #91;#93;"] 14[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 15[/"type: typeof FileSystem
node: this"/] - 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 17[/"type: Effect#lt;#123;#125;, never, FileSystem#gt;
node: FileSystem.asEffect#40;#41;"/] + 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem, #123;#125;#41;#92;n#125;#41;"/] + 17[/"type: typeof FileSystem
node: FileSystem"/] 18["type: Effect#lt;#123;#125;, never, FileSystem#gt;
callee:
args: #91;#93;"] 19[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 20[/"type: #123;#125;
node: #123;#125;"/] @@ -24,11 +24,11 @@ flowchart TB 22["type: Layer#lt;Cache, never, FileSystem#gt;
callee:
args: #91;#93;"] 23[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 24[/"type: typeof Cache
node: this"/] - 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection.asEffect#40;#41;, Cache.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 26[/"type: Effect#lt;#123;#125;, never, DbConnection#gt;
node: DbConnection.asEffect#40;#41;"/] + 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection, Cache#41;, #123;#125;#41;#92;n#125;#41;"/] + 26[/"type: typeof DbConnection
node: DbConnection"/] 27["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 28[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 29[/"type: Effect#lt;#123;#125;, never, Cache#gt;
node: Cache.asEffect#40;#41;"/] + 29[/"type: typeof Cache
node: Cache"/] 30["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 31[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 32[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerGraphSimple.pipings.txt b/testdata/baselines/reference/effect-v4/layerGraphSimple.pipings.txt index d74ecfe8..968c5734 100644 --- a/testdata/baselines/reference/effect-v4/layerGraphSimple.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerGraphSimple.pipings.txt @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 22:8 - 22:45 -Node: Effect.as(FileSystem.asEffect(), {}) +Location: 22:8 - 22:34 +Node: Effect.as(FileSystem, {}) Node Kind: KindCallExpression -Subject: FileSystem.asEffect() -Subject Type: Effect<{}, never, FileSystem> +Subject: FileSystem +Subject Type: typeof FileSystem Transformations (1): [0] kind: dataFirst @@ -85,17 +85,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 27:8 - 27:81 -Node: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) +Location: 27:8 - 27:59 +Node: Effect.as(Effect.andThen(DbConnection, Cache), {}) Node Kind: KindCallExpression -Subject: DbConnection.asEffect() -Subject Type: Effect<{}, never, DbConnection> +Subject: DbConnection +Subject Type: typeof DbConnection Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Cache.asEffect()] + args: [Cache] outType: Effect<{}, never, Cache | DbConnection> [1] kind: dataFirst callee: Effect.as diff --git a/testdata/baselines/reference/effect-v4/layerMagic_build.refactors.txt b/testdata/baselines/reference/effect-v4/layerMagic_build.refactors.txt index 3066d46f..68a1a155 100644 --- a/testdata/baselines/reference/effect-v4/layerMagic_build.refactors.txt +++ b/testdata/baselines/reference/effect-v4/layerMagic_build.refactors.txt @@ -55,15 +55,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -111,15 +111,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -167,15 +167,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -223,15 +223,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -276,15 +276,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -332,15 +332,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -388,15 +388,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -444,15 +444,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -495,15 +495,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -551,15 +551,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -607,15 +607,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -663,15 +663,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -714,15 +714,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -770,15 +770,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -826,15 +826,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -882,15 +882,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -936,15 +936,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -992,15 +992,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -1048,15 +1048,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -1104,15 +1104,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -1160,15 +1160,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -1216,15 +1216,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -1272,15 +1272,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerMagic_prepare.refactors.txt b/testdata/baselines/reference/effect-v4/layerMagic_prepare.refactors.txt index 434def75..59773c5b 100644 --- a/testdata/baselines/reference/effect-v4/layerMagic_prepare.refactors.txt +++ b/testdata/baselines/reference/effect-v4/layerMagic_prepare.refactors.txt @@ -39,12 +39,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -80,12 +80,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -121,12 +121,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -162,12 +162,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -203,12 +203,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -244,12 +244,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -285,12 +285,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -323,12 +323,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -364,12 +364,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -405,12 +405,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -446,12 +446,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerMagic_prepareReuse.refactors.txt b/testdata/baselines/reference/effect-v4/layerMagic_prepareReuse.refactors.txt index 2dc4a30b..2ff79d9c 100644 --- a/testdata/baselines/reference/effect-v4/layerMagic_prepareReuse.refactors.txt +++ b/testdata/baselines/reference/effect-v4/layerMagic_prepareReuse.refactors.txt @@ -34,12 +34,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -74,12 +74,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -114,12 +114,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -154,12 +154,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -190,12 +190,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -230,12 +230,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -270,12 +270,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -310,12 +310,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.errors.txt b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.errors.txt index 25a7a84a..b2d116f0 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.errors.txt @@ -21,17 +21,17 @@ Effect version: 4.0.0 static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } - const cachePassthrough = Layer.effect(Cache, Cache.asEffect()) + const cachePassthrough = Layer.effect(Cache, Cache) export const shouldNotWarn = Layer.mergeAll( DbConnection.Default, diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.flows.layerMergeAllWithDependencies.mermaid b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.flows.layerMergeAllWithDependencies.mermaid index 68e668bf..05b36db2 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.flows.layerMergeAllWithDependencies.mermaid +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.flows.layerMergeAllWithDependencies.mermaid @@ -15,8 +15,8 @@ flowchart TB 13["type: Layer#lt;FileSystem, never, never#gt;
callee:
args: #91;#93;"] 14[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 15[/"type: typeof FileSystem
node: this"/] - 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 17[/"type: Effect#lt;#123;#125;, never, FileSystem#gt;
node: FileSystem.asEffect#40;#41;"/] + 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem, #123;#125;#41;#92;n#125;#41;"/] + 17[/"type: typeof FileSystem
node: FileSystem"/] 18["type: Effect#lt;#123;#125;, never, FileSystem#gt;
callee:
args: #91;#93;"] 19[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 20[/"type: #123;#125;
node: #123;#125;"/] @@ -24,11 +24,11 @@ flowchart TB 22["type: Layer#lt;Cache, never, FileSystem#gt;
callee:
args: #91;#93;"] 23[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 24[/"type: typeof Cache
node: this"/] - 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection.asEffect#40;#41;, Cache.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 26[/"type: Effect#lt;#123;#125;, never, DbConnection#gt;
node: DbConnection.asEffect#40;#41;"/] + 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection, Cache#41;, #123;#125;#41;#92;n#125;#41;"/] + 26[/"type: typeof DbConnection
node: DbConnection"/] 27["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 28[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 29[/"type: Effect#lt;#123;#125;, never, Cache#gt;
node: Cache.asEffect#40;#41;"/] + 29[/"type: typeof Cache
node: Cache"/] 30["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 31[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 32[/"type: #123;#125;
node: #123;#125;"/] @@ -36,7 +36,7 @@ flowchart TB 34["type: Layer#lt;UserRepository, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 35[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 36[/"type: typeof UserRepository
node: this"/] - 37[/"type: Effect#lt;#123;#125;, never, Cache#gt;
node: Cache.asEffect#40;#41;"/] + 37[/"type: typeof Cache
node: Cache"/] 38["type: Layer#lt;Cache, never, Cache#gt;
callee:
args: #91;#93;"] 39[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 40[/"type: typeof Cache
node: Cache"/] diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.pipings.txt b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.pipings.txt index c4e56639..49b91c23 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.pipings.txt @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 14:8 - 14:45 -Node: Effect.as(FileSystem.asEffect(), {}) +Location: 14:8 - 14:34 +Node: Effect.as(FileSystem, {}) Node Kind: KindCallExpression -Subject: FileSystem.asEffect() -Subject Type: Effect<{}, never, FileSystem> +Subject: FileSystem +Subject Type: typeof FileSystem Transformations (1): [0] kind: dataFirst @@ -85,17 +85,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 19:8 - 19:81 -Node: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) +Location: 19:8 - 19:59 +Node: Effect.as(Effect.andThen(DbConnection, Cache), {}) Node Kind: KindCallExpression -Subject: DbConnection.asEffect() -Subject Type: Effect<{}, never, DbConnection> +Subject: DbConnection +Subject Type: typeof DbConnection Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Cache.asEffect()] + args: [Cache] outType: Effect<{}, never, Cache | DbConnection> [1] kind: dataFirst callee: Effect.as @@ -117,12 +117,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 24:25 - 24:63 -Node: Layer.effect(Cache, Cache.asEffect()) +Location: 24:25 - 24:52 +Node: Layer.effect(Cache, Cache) Node Kind: KindCallExpression -Subject: Cache.asEffect() -Subject Type: Effect<{}, never, Cache> +Subject: Cache +Subject Type: typeof Cache Transformations (1): [0] kind: dataLast diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.quickfixes.txt b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.quickfixes.txt index 2e6181e2..181f5bad 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.quickfixes.txt +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies.quickfixes.txt @@ -44,17 +44,17 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } -const cachePassthrough = Layer.effect(Cache, Cache.asEffect()) +const cachePassthrough = Layer.effect(Cache, Cache) export const shouldNotWarn = Layer.mergeAll( DbConnection.Default, @@ -101,17 +101,17 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } -const cachePassthrough = Layer.effect(Cache, Cache.asEffect()) +const cachePassthrough = Layer.effect(Cache, Cache) export const shouldNotWarn = Layer.mergeAll( DbConnection.Default, @@ -158,17 +158,17 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } -const cachePassthrough = Layer.effect(Cache, Cache.asEffect()) +const cachePassthrough = Layer.effect(Cache, Cache) export const shouldNotWarn = Layer.mergeAll( DbConnection.Default, @@ -215,17 +215,17 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } -const cachePassthrough = Layer.effect(Cache, Cache.asEffect()) +const cachePassthrough = Layer.effect(Cache, Cache) export const shouldNotWarn = Layer.mergeAll( DbConnection.Default, diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.errors.txt b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.errors.txt index 249d5502..7ca91011 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.errors.txt @@ -17,7 +17,7 @@ Effect version: 4.0.0 static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.flows.layerMergeAllWithDependenciesNonPropertyAccess.mermaid b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.flows.layerMergeAllWithDependenciesNonPropertyAccess.mermaid index 2df63f3d..87ff9fc3 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.flows.layerMergeAllWithDependenciesNonPropertyAccess.mermaid +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.flows.layerMergeAllWithDependenciesNonPropertyAccess.mermaid @@ -15,8 +15,8 @@ flowchart TB 13["type: Layer#lt;FileSystem, never, never#gt;
callee:
args: #91;#93;"] 14[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 15[/"type: typeof FileSystem
node: this"/] - 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 17[/"type: Effect#lt;#123;#125;, never, FileSystem#gt;
node: FileSystem.asEffect#40;#41;"/] + 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem, #123;#125;#41;#92;n#125;#41;"/] + 17[/"type: typeof FileSystem
node: FileSystem"/] 18["type: Effect#lt;#123;#125;, never, FileSystem#gt;
callee:
args: #91;#93;"] 19[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 20[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.pipings.txt b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.pipings.txt index 4aa49319..fad13645 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.pipings.txt @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 14:8 - 14:45 -Node: Effect.as(FileSystem.asEffect(), {}) +Location: 14:8 - 14:34 +Node: Effect.as(FileSystem, {}) Node Kind: KindCallExpression -Subject: FileSystem.asEffect() -Subject Type: Effect<{}, never, FileSystem> +Subject: FileSystem +Subject Type: typeof FileSystem Transformations (1): [0] kind: dataFirst diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.errors.txt b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.errors.txt index 8da423df..aea902db 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.errors.txt +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.errors.txt @@ -12,7 +12,7 @@ Effect version: 4.0.0 class A extends Context.Service()("A", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) } - class B extends Context.Service()("B", { make: Effect.as(A.asEffect(), {}) }) { + class B extends Context.Service()("B", { make: Effect.as(A, {}) }) { static Default = Layer.effect(this, this.make) } export const preview = Layer.mergeAll(A.Default, B.Default) diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.flows.layerMergeAllWithDependencies_preview.mermaid b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.flows.layerMergeAllWithDependencies_preview.mermaid index bf4933f1..158c544e 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.flows.layerMergeAllWithDependencies_preview.mermaid +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.flows.layerMergeAllWithDependencies_preview.mermaid @@ -7,8 +7,8 @@ flowchart TB 5["type: Layer#lt;A, never, never#gt;
callee:
args: #91;#93;"] 6[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 7[/"type: typeof A
node: this"/] - 8[/"type: ServiceClass#lt;B, #quot;B#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, A#gt;; #125;
node: Context.Service#lt;B#gt;#40;#41;#40;#quot;B#quot;, #123; make: Effect.as#40;A.asEffect#40;#41;, #123;#125;#41; #125;#41;"/] - 9[/"type: Effect#lt;#123;#125;, never, A#gt;
node: A.asEffect#40;#41;"/] + 8[/"type: ServiceClass#lt;B, #quot;B#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, A#gt;; #125;
node: Context.Service#lt;B#gt;#40;#41;#40;#quot;B#quot;, #123; make: Effect.as#40;A, #123;#125;#41; #125;#41;"/] + 9[/"type: typeof A
node: A"/] 10["type: Effect#lt;#123;#125;, never, A#gt;
callee:
args: #91;#93;"] 11[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 12[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.pipings.txt b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.pipings.txt index 7c211a48..0ae16107 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.pipings.txt @@ -29,12 +29,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 8:50 - 8:78 -Node: Effect.as(A.asEffect(), {}) +Location: 8:50 - 8:67 +Node: Effect.as(A, {}) Node Kind: KindCallExpression -Subject: A.asEffect() -Subject Type: Effect<{}, never, A> +Subject: A +Subject Type: typeof A Transformations (1): [0] kind: dataFirst diff --git a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.quickfixes.txt b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.quickfixes.txt index d3602742..0c6b1415 100644 --- a/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.quickfixes.txt +++ b/testdata/baselines/reference/effect-v4/layerMergeAllWithDependencies_preview.quickfixes.txt @@ -23,7 +23,7 @@ import { Effect, Layer, Context } from "effect" class A extends Context.Service
()("A", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) } -class B extends Context.Service()("B", { make: Effect.as(A.asEffect(), {}) }) { +class B extends Context.Service()("B", { make: Effect.as(A, {}) }) { static Default = Layer.effect(this, this.make) } export const preview = Layer.mergeAll( B.Default).pipe(Layer.provideMerge(A.Default)) diff --git a/testdata/baselines/reference/effect-v4/layerServiceTypes.pipings.txt b/testdata/baselines/reference/effect-v4/layerServiceTypes.pipings.txt index ccde5ec1..58508aab 100644 --- a/testdata/baselines/reference/effect-v4/layerServiceTypes.pipings.txt +++ b/testdata/baselines/reference/effect-v4/layerServiceTypes.pipings.txt @@ -136,7 +136,7 @@ Node: Layer.effect(UserRepo)(\n Effect.gen(function*() {\n const db = yield* Node Kind: KindCallExpression Subject: function*() {\n const db = yield* Database\n return {\n getUser: (id: string) => db.query(`SELECT * FROM users WHERE id = ${id}`)\n }\n } -Subject Type: () => Generator Effect; }>, { getUser: (id: string) => Effect; }, any> +Subject Type: () => Generator Effect; }, never, Database>, { getUser: (id: string) => Effect; }, any> Transformations (2): [0] kind: call @@ -182,7 +182,7 @@ Node: Effect.gen(function*() {\n const db = yield* Database\n return yield* db Node Kind: KindCallExpression Subject: function*() {\n const db = yield* Database\n return yield* db.query("SELECT 1")\n} -Subject Type: () => Generator | Service Effect; }>, string, any> +Subject Type: () => Generator | Effect<{ readonly query: (sql: string) => Effect; }, never, Database>, string, any> Transformations (2): [0] kind: call diff --git a/testdata/baselines/reference/effect-v4/missingEffectContext_preview.errors.txt b/testdata/baselines/reference/effect-v4/missingEffectContext_preview.errors.txt index 9de0531e..57d68d6b 100644 --- a/testdata/baselines/reference/effect-v4/missingEffectContext_preview.errors.txt +++ b/testdata/baselines/reference/effect-v4/missingEffectContext_preview.errors.txt @@ -12,7 +12,7 @@ Effect version: 4.0.0 class Db extends Context.Service()("Db", { make: Effect.succeed({}) }) {} // @ts-expect-error - export const preview: Effect.Effect = Db.asEffect().pipe(Effect.asVoid) + export const preview: Effect.Effect = Db.pipe(Effect.asVoid) ~~~~~~~ !!! warning TS377004: This Effect requires a service that is missing from the expected Effect context: `Db`. effect(missingEffectContext) diff --git a/testdata/baselines/reference/effect-v4/missingEffectContext_preview.flows.missingEffectContext_preview.mermaid b/testdata/baselines/reference/effect-v4/missingEffectContext_preview.flows.missingEffectContext_preview.mermaid index 67b26c22..a9506c94 100644 --- a/testdata/baselines/reference/effect-v4/missingEffectContext_preview.flows.missingEffectContext_preview.mermaid +++ b/testdata/baselines/reference/effect-v4/missingEffectContext_preview.flows.missingEffectContext_preview.mermaid @@ -3,7 +3,7 @@ flowchart TB 1[/"type: #123;#125;
node: #123;#125;"/] 2["type: Effect#lt;#123;#125;, never, never#gt;
callee: Effect.succeed
args: #91;#93;"] 3[/"type: #lt;A#gt;#40;value: A#41; =#gt; Effect#lt;A, never, never#gt;
node: Effect.succeed"/] - 4[/"type: Effect#lt;#123;#125;, never, Db#gt;
node: Db.asEffect#40;#41;"/] + 4[/"type: typeof Db
node: Db"/] 5["type: Effect#lt;void, never, Db#gt;
callee: Effect.asVoid
args: #91;#93;"] 1 -->|"kind: pipe"| 2 3 -->|"kind: transformCallee"| 2 diff --git a/testdata/baselines/reference/effect-v4/missingEffectContext_preview.pipings.txt b/testdata/baselines/reference/effect-v4/missingEffectContext_preview.pipings.txt index d85848ee..effb3218 100644 --- a/testdata/baselines/reference/effect-v4/missingEffectContext_preview.pipings.txt +++ b/testdata/baselines/reference/effect-v4/missingEffectContext_preview.pipings.txt @@ -15,12 +15,12 @@ Transformations (1): outType: Effect<{}, never, never> === Piping Flow === -Location: 8:44 - 8:78 -Node: Db.asEffect().pipe(Effect.asVoid) +Location: 8:44 - 8:67 +Node: Db.pipe(Effect.asVoid) Node Kind: KindCallExpression -Subject: Db.asEffect() -Subject Type: Effect<{}, never, Db> +Subject: Db +Subject Type: typeof Db Transformations (1): [0] kind: pipeable diff --git a/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.errors.txt b/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.errors.txt index 68d16609..235316fc 100644 --- a/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.errors.txt +++ b/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.errors.txt @@ -21,13 +21,13 @@ Effect version: 4.0.0 } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -55,3 +55,4 @@ Effect version: 4.0.0 !!! related TS377059 /.src/missingEffectContext_sugg.ts(40,5): Adjusting this layer composition could provide the missing service. effect(missingEffectContext) !!! related TS377060 /.src/missingEffectContext_sugg.ts(12,10): This layer provides the missing service FileSystem. effect(missingEffectContext) ) + diff --git a/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.flows.missingEffectContext_sugg.mermaid b/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.flows.missingEffectContext_sugg.mermaid index efc30d6d..dcc838bb 100644 --- a/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.flows.missingEffectContext_sugg.mermaid +++ b/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.flows.missingEffectContext_sugg.mermaid @@ -15,8 +15,8 @@ flowchart TB 13["type: Layer#lt;FileSystem, never, never#gt;
callee:
args: #91;#93;"] 14[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 15[/"type: typeof FileSystem
node: this"/] - 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem.asEffect#40;#41;, #123;#125;#41;#92;n#125;#41;"/] - 17[/"type: Effect#lt;#123;#125;, never, FileSystem#gt;
node: FileSystem.asEffect#40;#41;"/] + 16[/"type: ServiceClass#lt;Cache, #quot;Cache#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, FileSystem#gt;; #125;
node: Context.Service#lt;Cache#gt;#40;#41;#40;#quot;Cache#quot;, #123;#92;n make: Effect.as#40;FileSystem, #123;#125;#41;#92;n#125;#41;"/] + 17[/"type: typeof FileSystem
node: FileSystem"/] 18["type: Effect#lt;#123;#125;, never, FileSystem#gt;
callee:
args: #91;#93;"] 19[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 20[/"type: #123;#125;
node: #123;#125;"/] @@ -24,11 +24,11 @@ flowchart TB 22["type: Layer#lt;Cache, never, FileSystem#gt;
callee:
args: #91;#93;"] 23[/"type: #123; #lt;I, S#gt;#40;service: Key#lt;I, S#gt;#41;: #lt;E, R#gt;#40;effect: Effect#lt;S, E, R#gt;#41; =#gt; Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #lt;I, S, E, R#gt;#40;service: Key#lt;I, S#gt;, effect: Effect#lt;NoInfer#lt;S#gt;, E, R#gt;#41;: Layer#lt;I, E, Exclude#lt;R, Scope#gt;#gt;; #125;
node: Layer.effect"/] 24[/"type: typeof Cache
node: this"/] - 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection.asEffect#40;#41;, Cache.asEffect#40;#41;#41;, #123;#125;#41;#92;n#125;#41;"/] - 26[/"type: Effect#lt;#123;#125;, never, DbConnection#gt;
node: DbConnection.asEffect#40;#41;"/] + 25[/"type: ServiceClass#lt;UserRepository, #quot;UserRepository#quot;, #123;#125;#gt; #amp; #123; readonly make: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;; #125;
node: Context.Service#lt;UserRepository#gt;#40;#41;#40;#quot;UserRepository#quot;, #123;#92;n make: Effect.as#40;Effect.andThen#40;DbConnection, Cache#41;, #123;#125;#41;#92;n#125;#41;"/] + 26[/"type: typeof DbConnection
node: DbConnection"/] 27["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 28[/"type: #123; #lt;A, B, E2, R2#gt;#40;f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: #lt;E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;B, E2, R2#gt;#40;f: Effect#lt;B, E2, R2#gt;#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: #40;a: A#41; =#gt; Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #lt;A, E, R, B, E2, R2#gt;#40;self: Effect#lt;A, E, R#gt;, f: Effect#lt;B, E2, R2#gt;#41;: Effect#lt;B, E #124; E2, R #124; R2#gt;; #125;
node: Effect.andThen"/] - 29[/"type: Effect#lt;#123;#125;, never, Cache#gt;
node: Cache.asEffect#40;#41;"/] + 29[/"type: typeof Cache
node: Cache"/] 30["type: Effect#lt;#123;#125;, never, Cache #124; DbConnection#gt;
callee:
args: #91;#93;"] 31[/"type: #123; #lt;B#gt;#40;value: B#41;: #lt;A, E, R#gt;#40;self: Effect#lt;A, E, R#gt;#41; =#gt; Effect#lt;B, E, R#gt;; #lt;A, E, R, B#gt;#40;self: Effect#lt;A, E, R#gt;, value: B#41;: Effect#lt;B, E, R#gt;; #125;
node: Effect.as"/] 32[/"type: #123;#125;
node: #123;#125;"/] diff --git a/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.pipings.txt b/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.pipings.txt index bbbeb371..1dfbf5e2 100644 --- a/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.pipings.txt +++ b/testdata/baselines/reference/effect-v4/missingEffectContext_sugg.pipings.txt @@ -57,12 +57,12 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 16:8 - 16:45 -Node: Effect.as(FileSystem.asEffect(), {}) +Location: 16:8 - 16:34 +Node: Effect.as(FileSystem, {}) Node Kind: KindCallExpression -Subject: FileSystem.asEffect() -Subject Type: Effect<{}, never, FileSystem> +Subject: FileSystem +Subject Type: typeof FileSystem Transformations (1): [0] kind: dataFirst @@ -85,17 +85,17 @@ Transformations (1): outType: Layer === Piping Flow === -Location: 22:8 - 22:81 -Node: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) +Location: 22:8 - 22:59 +Node: Effect.as(Effect.andThen(DbConnection, Cache), {}) Node Kind: KindCallExpression -Subject: DbConnection.asEffect() -Subject Type: Effect<{}, never, DbConnection> +Subject: DbConnection +Subject Type: typeof DbConnection Transformations (2): [0] kind: dataFirst callee: Effect.andThen - args: [Cache.asEffect()] + args: [Cache] outType: Effect<{}, never, Cache | DbConnection> [1] kind: dataFirst callee: Effect.as @@ -144,7 +144,7 @@ Node: Effect.gen(function*(){\n const fs = yield* FileSystem\n yield* Effe Node Kind: KindCallExpression Subject: function*(){\n const fs = yield* FileSystem\n yield* Effect.addFinalizer(() => Effect.log("Finalizing file system"))\n return fs\n} -Subject Type: () => Generator | Service, {}, any> +Subject Type: () => Generator | Effect<{}, never, FileSystem>, {}, any> Transformations (1): [0] kind: call diff --git a/testdata/baselines/reference/effect-v4/missingReturnYieldStarFnUntraced.errors.txt b/testdata/baselines/reference/effect-v4/missingReturnYieldStarFnUntraced.errors.txt index 27ca4415..4ac2f100 100644 --- a/testdata/baselines/reference/effect-v4/missingReturnYieldStarFnUntraced.errors.txt +++ b/testdata/baselines/reference/effect-v4/missingReturnYieldStarFnUntraced.errors.txt @@ -24,7 +24,7 @@ Effect version: 4.0.0 export const shouldNotComplainRegularFnUntraced = Effect.fnUntraced((a: string) => { ~~~~~~~~~~~~~~~~ !!! error TS2769: No overload matches this call. -!!! related TS2771 /node_modules/effect/dist/Effect.d.ts(15361,9): The last overload is declared here. +!!! related TS2771 /node_modules/effect/dist/Effect.d.ts(15376,9): The last overload is declared here. return Effect.fail(a) }) diff --git a/testdata/baselines/reference/effect-v4/missingReturnYieldStarFnUntraced.quickfixes.txt b/testdata/baselines/reference/effect-v4/missingReturnYieldStarFnUntraced.quickfixes.txt index d3f9d62b..f2684312 100644 --- a/testdata/baselines/reference/effect-v4/missingReturnYieldStarFnUntraced.quickfixes.txt +++ b/testdata/baselines/reference/effect-v4/missingReturnYieldStarFnUntraced.quickfixes.txt @@ -12,8 +12,8 @@ [D3] (11:69-11:85) TS2769: No overload matches this call. The last overload gave the following error. - Argument of type '(a: string) => Effect.Effect' is not assignable to parameter of type '(this: unknown, a: string) => Generator, unknown, never>'. - Type 'Effect' is missing the following properties from type 'Generator, unknown, never>': next, return, throw, map, and 11 more. + Argument of type '(a: string) => Effect.Effect' is not assignable to parameter of type '(this: unknown, a: string) => Generator, unknown, never>'. + Type 'Effect' is missing the following properties from type 'Generator, unknown, never>': next, return, throw, map, and 11 more. (no quick fixes) === Quick Fix Application Results === diff --git a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.errors.txt b/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.errors.txt deleted file mode 100644 index 90843725..00000000 --- a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.errors.txt +++ /dev/null @@ -1,19 +0,0 @@ -=== Metadata === -Effect version: 4.0.0 - -/.src/missingReturnYieldStar_yieldable.ts(6,13): error TS377006: This Effect never succeeds; using `return yield*` preserves a definitive generator exit point for type narrowing and tooling support. effect(missingReturnYieldStar) - - -==== /.src/missingReturnYieldStar_yieldable.ts (1 errors) ==== - import { Effect, Option } from "effect" - - export const shouldComplain = (n: number) => - Effect.gen(function*() { - if (n === 0) { - yield* Option.none() // should trigger because Option
is yieldable - ~~~~~ -!!! error TS377006: This Effect never succeeds; using `return yield*` preserves a definitive generator exit point for type narrowing and tooling support. effect(missingReturnYieldStar) - } - return n / 1 - }) - diff --git a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.flows.missingReturnYieldStar_yieldable.mermaid b/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.flows.missingReturnYieldStar_yieldable.mermaid deleted file mode 100644 index f1d7fe72..00000000 --- a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.flows.missingReturnYieldStar_yieldable.mermaid +++ /dev/null @@ -1,9 +0,0 @@ -flowchart TB - 0[["type: #40;n: number#41; =#gt; Effect#lt;number, NoSuchElementError, never#gt;
node: #40;n: number#41; =#gt;#92;n Effect.gen#40;function*#40;#41; #123;#92;n if #40;n === 0#41; #123;#92;n yield* Option.none#40;#41; // should trigger because Option#lt;A#gt; is yieldable#92;n #125;#92;n return n / 1#92;n #125;#41;"]] - 1((("type: Effect#lt;number, NoSuchElementError, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n if #40;n === 0#41; #123;#92;n yield* Option.none#40;#41; // should trigger because Option#lt;A#gt; is yieldable#92;n #125;#92;n return n / 1#92;n #125;#41;"))) - 2[/"type: number
node: n / 1"/] - 3[/"type: Option#lt;never#gt;
node: Option.none#40;#41;"/] - 2 -->|"kind: potentialReturn"| 1 - 3 -->|"kind: yieldable"| 1 - 2 -->|"kind: usedBy"| 1 - 1 -->|"kind: potentialReturn"| 0 \ No newline at end of file diff --git a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.flows.txt b/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.flows.txt deleted file mode 100644 index c2b51405..00000000 --- a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.flows.txt +++ /dev/null @@ -1 +0,0 @@ -/.src/missingReturnYieldStar_yieldable.ts -> missingReturnYieldStar_yieldable.flows.missingReturnYieldStar_yieldable.mermaid diff --git a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.layers.txt b/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.layers.txt deleted file mode 100644 index dbe8c6f2..00000000 --- a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.layers.txt +++ /dev/null @@ -1 +0,0 @@ -==== /.src/missingReturnYieldStar_yieldable.ts (0 layer exports) ==== diff --git a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.pipings.txt b/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.pipings.txt deleted file mode 100644 index 4baf709e..00000000 --- a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.pipings.txt +++ /dev/null @@ -1,15 +0,0 @@ -==== /.src/missingReturnYieldStar_yieldable.ts (1 flows) ==== - -=== Piping Flow === -Location: 3:45 - 9:7 -Node: Effect.gen(function*() {\n if (n === 0) {\n yield* Option.none() // should trigger because Option
is yieldable\n }\n return n / 1\n }) -Node Kind: KindCallExpression - -Subject: function*() {\n if (n === 0) {\n yield* Option.none() // should trigger because Option is yieldable\n }\n return n / 1\n } -Subject Type: () => Generator, number, any> - -Transformations (1): - [0] kind: call - callee: Effect.gen - args: (constant) - outType: Effect diff --git a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.quickfixes.txt b/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.quickfixes.txt deleted file mode 100644 index b5db4307..00000000 --- a/testdata/baselines/reference/effect-v4/missingReturnYieldStar_yieldable.quickfixes.txt +++ /dev/null @@ -1,28 +0,0 @@ -=== Quick Fix Inventory === - -[D1] (6:13-6:18) TS377006: This Effect never succeeds; using `return yield*` preserves a definitive generator exit point for type narrowing and tooling support. effect(missingReturnYieldStar) - Fix 0: "Disable missingReturnYieldStar for this line" - Fix 1: "Disable missingReturnYieldStar for entire file" - Fix 2: "Add return statement" - -=== Quick Fix Application Results === - -=== [D1] Fix 0: "Disable missingReturnYieldStar for this line" === -skipped by default - -=== [D1] Fix 1: "Disable missingReturnYieldStar for entire file" === -skipped by default - -=== [D1] Fix 2: "Add return statement" === - ---- file:///.src/missingReturnYieldStar_yieldable.ts --- -import { Effect, Option } from "effect" - -export const shouldComplain = (n: number) => - Effect.gen(function*() { - if (n === 0) { - return yield* Option.none(); // should trigger because Option is yieldable - } - return n / 1 - }) - diff --git a/testdata/baselines/reference/effect-v4/outdatedApi.errors.txt b/testdata/baselines/reference/effect-v4/outdatedApi.errors.txt index 74fd906b..69c0c896 100644 --- a/testdata/baselines/reference/effect-v4/outdatedApi.errors.txt +++ b/testdata/baselines/reference/effect-v4/outdatedApi.errors.txt @@ -131,7 +131,7 @@ Effect version: 4.0.0 export const p_catchAllCause = Effect.catchAllCause(Effect.fail("err"), (_cause) => Effect.succeed(0)) ~~~~~~~~~~~~~ !!! error TS2551: Property 'catchAllCause' does not exist on type 'typeof import("/node_modules/effect/dist/Effect")'. Did you mean 'catchCause'? -!!! related TS2728 /node_modules/effect/dist/Effect.d.ts(4639,22): 'catchCause' is declared here. +!!! related TS2728 /node_modules/effect/dist/Effect.d.ts(4565,22): 'catchCause' is declared here. ~~~~~~~~~~~~~ !!! warning TS377052: This project targets Effect v4, but this code uses the Effect v3 API `catchAllCause`. The referenced API belongs to the v3 surface rather than the configured v4 surface. Renamed to catchCause. effect(outdatedApi) ~~~~~~ @@ -141,7 +141,7 @@ Effect version: 4.0.0 export const p_catchAllDefect = Effect.catchAllDefect(Effect.die("defect"), (_defect) => Effect.succeed(0)) ~~~~~~~~~~~~~~ !!! error TS2551: Property 'catchAllDefect' does not exist on type 'typeof import("/node_modules/effect/dist/Effect")'. Did you mean 'catchDefect'? -!!! related TS2728 /node_modules/effect/dist/Effect.d.ts(4780,22): 'catchDefect' is declared here. +!!! related TS2728 /node_modules/effect/dist/Effect.d.ts(4706,22): 'catchDefect' is declared here. ~~~~~~~~~~~~~~ !!! warning TS377052: This project targets Effect v4, but this code uses the Effect v3 API `catchAllDefect`. The referenced API belongs to the v3 surface rather than the configured v4 surface. Renamed to catchDefect. effect(outdatedApi) ~~~~~~~ @@ -167,7 +167,7 @@ Effect version: 4.0.0 export const p_async = Effect.async((resume) => { ~~~~~ !!! error TS2551: Property 'async' does not exist on type 'typeof import("/node_modules/effect/dist/Effect")'. Did you mean 'sync'? -!!! related TS2728 /node_modules/effect/dist/Effect.d.ts(1551,22): 'sync' is declared here. +!!! related TS2728 /node_modules/effect/dist/Effect.d.ts(1499,22): 'sync' is declared here. ~~~~~ !!! warning TS377052: This project targets Effect v4, but this code uses the Effect v3 API `async`. The referenced API belongs to the v3 surface rather than the configured v4 surface. Renamed to callback. Note: in v4 the callback receives a Scheduler as 'this' context. effect(outdatedApi) ~~~~~~ diff --git a/testdata/baselines/reference/effect-v4/outdatedApi.quickfixes.txt b/testdata/baselines/reference/effect-v4/outdatedApi.quickfixes.txt index c33d5605..2c389e78 100644 --- a/testdata/baselines/reference/effect-v4/outdatedApi.quickfixes.txt +++ b/testdata/baselines/reference/effect-v4/outdatedApi.quickfixes.txt @@ -145,7 +145,7 @@ [D42] (87:92-87:140) TS2322: Type 'Effect | Effect, never, never>' is not assignable to type 'Result'. Type 'Effect' is not assignable to type 'Result'. - Type 'Effect' is missing the following properties from type 'Success': _tag, _op, success, [TypeId], and 2 more. + Type 'Effect' is missing the following properties from type 'Success': _tag, _op, success, [TypeId] (no quick fixes) [D43] (87:92-87:97) TS2365: Operator '>' cannot be applied to types 'Effect' and 'number'. diff --git a/testdata/baselines/reference/effect-v4/parsingGen.errors.txt b/testdata/baselines/reference/effect-v4/parsingGen.errors.txt index d4b2696b..1030146b 100644 --- a/testdata/baselines/reference/effect-v4/parsingGen.errors.txt +++ b/testdata/baselines/reference/effect-v4/parsingGen.errors.txt @@ -1,12 +1,16 @@ === Metadata === Effect version: 4.0.0 +/.src/parsingGen.ts(3,35): error TS2345: Argument of type '() => Generator, number, any>' is not assignable to parameter of type '() => Generator, number, never>'. -==== /.src/parsingGen.ts (0 errors) ==== +==== /.src/parsingGen.ts (1 errors) ==== import { Effect, Option } from "effect" export const program = Effect.gen(function*(){ + ~~~~~~~~ +!!! error TS2345: Argument of type '() => Generator, number, any>' is not assignable to parameter of type '() => Generator, number, never>'. +!!! related TS2728 /node_modules/effect/dist/Effect.d.ts(148,14): '[TypeId]' is declared here. const option = yield* Option.some(1) return option }) diff --git a/testdata/baselines/reference/effect-v4/parsingGen.flows.parsingGen.mermaid b/testdata/baselines/reference/effect-v4/parsingGen.flows.parsingGen.mermaid index f96ed56a..d27159fe 100644 --- a/testdata/baselines/reference/effect-v4/parsingGen.flows.parsingGen.mermaid +++ b/testdata/baselines/reference/effect-v4/parsingGen.flows.parsingGen.mermaid @@ -1,5 +1,5 @@ flowchart TB - 0((("type: Effect#lt;number, NoSuchElementError, never#gt;
node: Effect.gen#40;function*#40;#41;#123;#92;n const option = yield* Option.some#40;1#41;#92;n return option#92;n#125;#41;"))) + 0((("type: Effect#lt;number, any, any#gt;
node: Effect.gen#40;function*#40;#41;#123;#92;n const option = yield* Option.some#40;1#41;#92;n return option#92;n#125;#41;"))) 1[/"type: number
node: option"/] 2[/"type: 1
node: 1"/] 3["type: Option#lt;number#gt;
callee: Option.some
args: #91;#93;"] diff --git a/testdata/baselines/reference/effect-v4/parsingGen.pipings.txt b/testdata/baselines/reference/effect-v4/parsingGen.pipings.txt index c64cd6d4..42907085 100644 --- a/testdata/baselines/reference/effect-v4/parsingGen.pipings.txt +++ b/testdata/baselines/reference/effect-v4/parsingGen.pipings.txt @@ -12,7 +12,7 @@ Transformations (1): [0] kind: call callee: Effect.gen args: (constant) - outType: Effect + outType: Effect === Piping Flow === Location: 4:26 - 4:41 diff --git a/testdata/baselines/reference/effect-v4/parsingGen.quickfixes.txt b/testdata/baselines/reference/effect-v4/parsingGen.quickfixes.txt index dad05bfc..12f737ce 100644 --- a/testdata/baselines/reference/effect-v4/parsingGen.quickfixes.txt +++ b/testdata/baselines/reference/effect-v4/parsingGen.quickfixes.txt @@ -1,5 +1,14 @@ === Quick Fix Inventory === -(no diagnostics) + +[D1] (3:35-3:43) TS2345: Argument of type '() => Generator, number, any>' is not assignable to parameter of type '() => Generator, number, never>'. + Type 'Generator, number, any>' is not assignable to type 'Generator, number, never>'. + The types returned by 'next(...)' are incompatible between these types. + Type 'IteratorResult, number>' is not assignable to type 'IteratorResult, number>'. + Type 'IteratorYieldResult>' is not assignable to type 'IteratorResult, number>'. + Type 'IteratorYieldResult>' is not assignable to type 'IteratorYieldResult>'. + Type 'Option' is not assignable to type 'Effect'. + Property '[TypeId]' is missing in type 'None' but required in type 'Effect'. + (no quick fixes) === Quick Fix Application Results === (no quick fixes to apply) diff --git a/testdata/baselines/reference/effect-v4/schemaSyncInEffect.flows.schemaSyncInEffect.mermaid b/testdata/baselines/reference/effect-v4/schemaSyncInEffect.flows.schemaSyncInEffect.mermaid index 933320d4..470d8910 100644 --- a/testdata/baselines/reference/effect-v4/schemaSyncInEffect.flows.schemaSyncInEffect.mermaid +++ b/testdata/baselines/reference/effect-v4/schemaSyncInEffect.flows.schemaSyncInEffect.mermaid @@ -2,50 +2,50 @@ flowchart TB 0[/"type: #123; name: String; age: Number; #125;
node: #123;#92;n name: Schema.String,#92;n age: Schema.Number#92;n#125;"/] 1["type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
callee: Schema.Struct
args: #91;#93;"] 2[/"type: #lt;const Fields extends Struct.Fields#gt;#40;fields: Fields#41; =#gt; Struct#lt;Fields#gt;
node: Schema.Struct"/] - 3((("type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const input = yield* Effect.succeed#40;#123; name: #quot;John#quot;, age: 30 #125;#41;#92;n const person = Schema.decodeSync#40;Person#41;#40;input#41;#92;n // ^- should suggest using Schema.decode instead#92;n return person#92;n#125;#41;"))) - 4[/"type: #123; readonly age: number; readonly name: string; #125;
node: person"/] + 3((("type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const input = yield* Effect.succeed#40;#123; name: #quot;John#quot;, age: 30 #125;#41;#92;n const person = Schema.decodeSync#40;Person#41;#40;input#41;#92;n // ^- should suggest using Schema.decode instead#92;n return person#92;n#125;#41;"))) + 4[/"type: #123; readonly name: string; readonly age: number; #125;
node: person"/] 5[/"type: #123; name: string; age: number; #125;
node: #123; name: #quot;John#quot;, age: 30 #125;"/] 6["type: Effect#lt;#123; name: string; age: number; #125;, never, never#gt;
callee: Effect.succeed
args: #91;#93;"] 7[/"type: #lt;A#gt;#40;value: A#41; =#gt; Effect#lt;A, never, never#gt;
node: Effect.succeed"/] 8[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 9["type: #40;input: #123; readonly age: number; readonly name: string; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.decodeSync
args: #91;#93;"] + 9["type: #40;input: #123; readonly name: string; readonly age: number; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.decodeSync
args: #91;#93;"] 10[/"type: #lt;S extends Decoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: S#91;#quot;Encoded#quot;#93;, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Type#quot;#93;
node: Schema.decodeSync"/] - 11((("type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const input: unknown = yield* Effect.succeed#40;#123; name: #quot;Jane#quot;, age: 25 #125;#41;#92;n const person = Schema.decodeUnknownSync#40;Person#41;#40;input#41;#92;n // ^- should suggest using Schema.decodeUnknown instead#92;n return person#92;n#125;#41;"))) - 12[/"type: #123; readonly age: number; readonly name: string; #125;
node: person"/] + 11((("type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const input: unknown = yield* Effect.succeed#40;#123; name: #quot;Jane#quot;, age: 25 #125;#41;#92;n const person = Schema.decodeUnknownSync#40;Person#41;#40;input#41;#92;n // ^- should suggest using Schema.decodeUnknown instead#92;n return person#92;n#125;#41;"))) + 12[/"type: #123; readonly name: string; readonly age: number; #125;
node: person"/] 13[/"type: #123; name: string; age: number; #125;
node: #123; name: #quot;Jane#quot;, age: 25 #125;"/] 14["type: Effect#lt;#123; name: string; age: number; #125;, never, never#gt;
callee: Effect.succeed
args: #91;#93;"] 15[/"type: #lt;A#gt;#40;value: A#41; =#gt; Effect#lt;A, never, never#gt;
node: Effect.succeed"/] 16[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 17["type: #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.decodeUnknownSync
args: #91;#93;"] + 17["type: #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.decodeUnknownSync
args: #91;#93;"] 18[/"type: #lt;S extends Schema.Decoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Type#quot;#93;
node: Schema.decodeUnknownSync"/] - 19((("type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const person = #123; name: #quot;Bob#quot;, age: 40 #125;#92;n const encoded = Schema.encodeSync#40;Person#41;#40;person#41;#92;n // ^- should suggest using Schema.encode instead#92;n return encoded#92;n#125;#41;"))) - 20[/"type: #123; readonly age: number; readonly name: string; #125;
node: encoded"/] + 19((("type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const person = #123; name: #quot;Bob#quot;, age: 40 #125;#92;n const encoded = Schema.encodeSync#40;Person#41;#40;person#41;#92;n // ^- should suggest using Schema.encode instead#92;n return encoded#92;n#125;#41;"))) + 20[/"type: #123; readonly name: string; readonly age: number; #125;
node: encoded"/] 21[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 22["type: #40;input: #123; readonly age: number; readonly name: string; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.encodeSync
args: #91;#93;"] + 22["type: #40;input: #123; readonly name: string; readonly age: number; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.encodeSync
args: #91;#93;"] 23[/"type: #lt;S extends Encoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: S#91;#quot;Type#quot;#93;, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Encoded#quot;#93;
node: Schema.encodeSync"/] - 24((("type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const person: unknown = #123; name: #quot;Alice#quot;, age: 35 #125;#92;n const encoded = Schema.encodeUnknownSync#40;Person#41;#40;person as any#41;#92;n // ^- should suggest using Schema.encodeUnknown instead#92;n return encoded#92;n#125;#41;"))) - 25[/"type: #123; readonly age: number; readonly name: string; #125;
node: encoded"/] + 24((("type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const person: unknown = #123; name: #quot;Alice#quot;, age: 35 #125;#92;n const encoded = Schema.encodeUnknownSync#40;Person#41;#40;person as any#41;#92;n // ^- should suggest using Schema.encodeUnknown instead#92;n return encoded#92;n#125;#41;"))) + 25[/"type: #123; readonly name: string; readonly age: number; #125;
node: encoded"/] 26[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 27["type: #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.encodeUnknownSync
args: #91;#93;"] + 27["type: #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.encodeUnknownSync
args: #91;#93;"] 28[/"type: #lt;S extends Schema.Encoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Encoded#quot;#93;
node: Schema.encodeUnknownSync"/] - 29[["type: #40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;
node: #40;#41; =#gt; #123;#92;n const input = #123; name: #quot;Test#quot;, age: 20 #125;#92;n const person = Schema.decodeSync#40;Person#41;#40;input#41;#92;n return person#92;n#125;"]] - 30[/"type: #123; readonly age: number; readonly name: string; #125;
node: person"/] + 29[["type: #40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;
node: #40;#41; =#gt; #123;#92;n const input = #123; name: #quot;Test#quot;, age: 20 #125;#92;n const person = Schema.decodeSync#40;Person#41;#40;input#41;#92;n return person#92;n#125;"]] + 30[/"type: #123; readonly name: string; readonly age: number; #125;
node: person"/] 31[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 32["type: #40;input: #123; readonly age: number; readonly name: string; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.decodeSync
args: #91;#93;"] + 32["type: #40;input: #123; readonly name: string; readonly age: number; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.decodeSync
args: #91;#93;"] 33[/"type: #lt;S extends Decoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: S#91;#quot;Encoded#quot;#93;, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Type#quot;#93;
node: Schema.decodeSync"/] - 34((("type: Effect#lt;#40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const person: unknown = #123; name: #quot;Alice#quot;, age: 35 #125;#92;n const method = #40;#41; =#gt; Schema.encodeUnknownSync#40;Person#41;#40;person as any#41;#92;n // ^- this is inside another function context, should NOT trigger#92;n return method#92;n#125;#41;"))) - 35[/"type: #40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;
node: method"/] - 36[["type: #40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;
node: #40;#41; =#gt; Schema.encodeUnknownSync#40;Person#41;#40;person as any#41;"]] - 37[/"type: #123; readonly age: number; readonly name: string; #125;
node: Schema.encodeUnknownSync#40;Person#41;#40;person as any#41;"/] + 34((("type: Effect#lt;#40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;, never, never#gt;
node: Effect.gen#40;function*#40;#41; #123;#92;n const person: unknown = #123; name: #quot;Alice#quot;, age: 35 #125;#92;n const method = #40;#41; =#gt; Schema.encodeUnknownSync#40;Person#41;#40;person as any#41;#92;n // ^- this is inside another function context, should NOT trigger#92;n return method#92;n#125;#41;"))) + 35[/"type: #40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;
node: method"/] + 36[["type: #40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;
node: #40;#41; =#gt; Schema.encodeUnknownSync#40;Person#41;#40;person as any#41;"]] + 37[/"type: #123; readonly name: string; readonly age: number; #125;
node: Schema.encodeUnknownSync#40;Person#41;#40;person as any#41;"/] 38[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 39["type: #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.encodeUnknownSync
args: #91;#93;"] + 39["type: #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.encodeUnknownSync
args: #91;#93;"] 40[/"type: #lt;S extends Schema.Encoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Encoded#quot;#93;
node: Schema.encodeUnknownSync"/] - 41((("type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, never, never#gt;
node: function*#40;#41; #123;#92;n const input = #123; name: #quot;John#quot;, age: 30 #125;#92;n const person = Schema.decodeSync#40;Person#41;#40;input#41;#92;n // ^- should suggest using Schema.decode instead#92;n return person#92;n#125;"))) - 42[/"type: #123; readonly age: number; readonly name: string; #125;
node: person"/] + 41((("type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, never, never#gt;
node: function*#40;#41; #123;#92;n const input = #123; name: #quot;John#quot;, age: 30 #125;#92;n const person = Schema.decodeSync#40;Person#41;#40;input#41;#92;n // ^- should suggest using Schema.decode instead#92;n return person#92;n#125;"))) + 42[/"type: #123; readonly name: string; readonly age: number; #125;
node: person"/] 43[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 44["type: #40;input: #123; readonly age: number; readonly name: string; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.decodeSync
args: #91;#93;"] + 44["type: #40;input: #123; readonly name: string; readonly age: number; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.decodeSync
args: #91;#93;"] 45[/"type: #lt;S extends Decoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: S#91;#quot;Encoded#quot;#93;, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Type#quot;#93;
node: Schema.decodeSync"/] - 46[["type: #40;#41; =#gt; Effect#lt;#123; readonly age: number; readonly name: string; #125;, never, never#gt;
node: Effect.fn#40;#quot;fn1#quot;#41;#40;function*#40;#41; #123;#92;n const input = #123; name: #quot;John#quot;, age: 30 #125;#92;n const person = Schema.decodeSync#40;Person#41;#40;input#41;#92;n // ^- should suggest using Schema.decode instead#92;n return person#92;n#125;#41;"]] + 46[["type: #40;#41; =#gt; Effect#lt;#123; readonly name: string; readonly age: number; #125;, never, never#gt;
node: Effect.fn#40;#quot;fn1#quot;#41;#40;function*#40;#41; #123;#92;n const input = #123; name: #quot;John#quot;, age: 30 #125;#92;n const person = Schema.decodeSync#40;Person#41;#40;input#41;#92;n // ^- should suggest using Schema.decode instead#92;n return person#92;n#125;#41;"]] 0 -->|"kind: pipe"| 1 2 -->|"kind: transformCallee"| 1 4 -->|"kind: potentialReturn"| 3 diff --git a/testdata/baselines/reference/effect-v4/schemaSyncInEffect.pipings.txt b/testdata/baselines/reference/effect-v4/schemaSyncInEffect.pipings.txt index 7feb52d4..f50d770b 100644 --- a/testdata/baselines/reference/effect-v4/schemaSyncInEffect.pipings.txt +++ b/testdata/baselines/reference/effect-v4/schemaSyncInEffect.pipings.txt @@ -20,13 +20,13 @@ Node: Effect.gen(function*() {\n const input = yield* Effect.succeed({ name: "J Node Kind: KindCallExpression Subject: function*() {\n const input = yield* Effect.succeed({ name: "John", age: 30 })\n const person = Schema.decodeSync(Person)(input)\n // ^- should suggest using Schema.decode instead\n return person\n} -Subject Type: () => Generator, { readonly age: number; readonly name: string; }, any> +Subject Type: () => Generator, { readonly name: string; readonly age: number; }, any> Transformations (1): [0] kind: call callee: Effect.gen args: (constant) - outType: Effect<{ readonly age: number; readonly name: string; }, never, never> + outType: Effect<{ readonly name: string; readonly age: number; }, never, never> === Piping Flow === Location: 10:23 - 10:65 @@ -54,7 +54,7 @@ Transformations (1): [0] kind: call callee: Schema.decodeSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 17:24 - 22:3 @@ -62,13 +62,13 @@ Node: Effect.gen(function*() {\n const input: unknown = yield* Effect.succeed({ Node Kind: KindCallExpression Subject: function*() {\n const input: unknown = yield* Effect.succeed({ name: "Jane", age: 25 })\n const person = Schema.decodeUnknownSync(Person)(input)\n // ^- should suggest using Schema.decodeUnknown instead\n return person\n} -Subject Type: () => Generator, { readonly age: number; readonly name: string; }, any> +Subject Type: () => Generator, { readonly name: string; readonly age: number; }, any> Transformations (1): [0] kind: call callee: Effect.gen args: (constant) - outType: Effect<{ readonly age: number; readonly name: string; }, never, never> + outType: Effect<{ readonly name: string; readonly age: number; }, never, never> === Piping Flow === Location: 18:32 - 18:74 @@ -96,7 +96,7 @@ Transformations (1): [0] kind: call callee: Schema.decodeUnknownSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 25:24 - 30:3 @@ -104,13 +104,13 @@ Node: Effect.gen(function*() {\n const person = { name: "Bob", age: 40 }\n con Node Kind: KindCallExpression Subject: function*() {\n const person = { name: "Bob", age: 40 }\n const encoded = Schema.encodeSync(Person)(person)\n // ^- should suggest using Schema.encode instead\n return encoded\n} -Subject Type: () => Generator +Subject Type: () => Generator Transformations (1): [0] kind: call callee: Effect.gen args: (constant) - outType: Effect<{ readonly age: number; readonly name: string; }, never, never> + outType: Effect<{ readonly name: string; readonly age: number; }, never, never> === Piping Flow === Location: 27:18 - 27:52 @@ -124,7 +124,7 @@ Transformations (1): [0] kind: call callee: Schema.encodeSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 33:24 - 38:3 @@ -132,13 +132,13 @@ Node: Effect.gen(function*() {\n const person: unknown = { name: "Alice", age: Node Kind: KindCallExpression Subject: function*() {\n const person: unknown = { name: "Alice", age: 35 }\n const encoded = Schema.encodeUnknownSync(Person)(person as any)\n // ^- should suggest using Schema.encodeUnknown instead\n return encoded\n} -Subject Type: () => Generator +Subject Type: () => Generator Transformations (1): [0] kind: call callee: Effect.gen args: (constant) - outType: Effect<{ readonly age: number; readonly name: string; }, never, never> + outType: Effect<{ readonly name: string; readonly age: number; }, never, never> === Piping Flow === Location: 35:18 - 35:66 @@ -152,7 +152,7 @@ Transformations (1): [0] kind: call callee: Schema.encodeUnknownSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 43:17 - 43:50 @@ -166,7 +166,7 @@ Transformations (1): [0] kind: call callee: Schema.decodeSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 48:38 - 53:3 @@ -174,13 +174,13 @@ Node: Effect.gen(function*() {\n const person: unknown = { name: "Alice", age: Node Kind: KindCallExpression Subject: function*() {\n const person: unknown = { name: "Alice", age: 35 }\n const method = () => Schema.encodeUnknownSync(Person)(person as any)\n // ^- this is inside another function context, should NOT trigger\n return method\n} -Subject Type: () => Generator { readonly age: number; readonly name: string; }, never> +Subject Type: () => Generator { readonly name: string; readonly age: number; }, never> Transformations (1): [0] kind: call callee: Effect.gen args: (constant) - outType: Effect<() => { readonly age: number; readonly name: string; }, never, never> + outType: Effect<() => { readonly name: string; readonly age: number; }, never, never> === Piping Flow === Location: 50:23 - 50:71 @@ -194,7 +194,7 @@ Transformations (1): [0] kind: call callee: Schema.encodeUnknownSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 56:19 - 61:3 @@ -202,13 +202,13 @@ Node: Effect.fn("fn1")(function*() {\n const input = { name: "John", age: 30 }\ Node Kind: KindCallExpression Subject: function*() {\n const input = { name: "John", age: 30 }\n const person = Schema.decodeSync(Person)(input)\n // ^- should suggest using Schema.decode instead\n return person\n} -Subject Type: () => Generator +Subject Type: () => Generator Transformations (1): [0] kind: call callee: Effect.fn("fn1") args: (constant) - outType: () => Effect<{ readonly age: number; readonly name: string; }, never, never> + outType: () => Effect<{ readonly name: string; readonly age: number; }, never, never> === Piping Flow === Location: 58:17 - 58:50 @@ -222,4 +222,4 @@ Transformations (1): [0] kind: call callee: Schema.decodeSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } diff --git a/testdata/baselines/reference/effect-v4/schemaSyncInEffect_thunks.flows.schemaSyncInEffect_thunks.mermaid b/testdata/baselines/reference/effect-v4/schemaSyncInEffect_thunks.flows.schemaSyncInEffect_thunks.mermaid index ea001779..70a1dabf 100644 --- a/testdata/baselines/reference/effect-v4/schemaSyncInEffect_thunks.flows.schemaSyncInEffect_thunks.mermaid +++ b/testdata/baselines/reference/effect-v4/schemaSyncInEffect_thunks.flows.schemaSyncInEffect_thunks.mermaid @@ -5,47 +5,47 @@ flowchart TB 3[/"type: #123; name: String; age: Number; #125;
node: #123;#92;n name: Schema.String,#92;n age: Schema.Number#92;n#125;"/] 4["type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
callee: Schema.Struct
args: #91;#93;"] 5[/"type: #lt;const Fields extends Struct.Fields#gt;#40;fields: Fields#41; =#gt; Struct#lt;Fields#gt;
node: Schema.Struct"/] - 6[["type: #40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;
node: #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;John#quot;, age: 30 #125;#41;"]] - 7[/"type: #123; readonly age: number; readonly name: string; #125;
node: Schema.decodeSync#40;Person#41;#40;#123; name: #quot;John#quot;, age: 30 #125;#41;"/] + 6[["type: #40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;
node: #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;John#quot;, age: 30 #125;#41;"]] + 7[/"type: #123; readonly name: string; readonly age: number; #125;
node: Schema.decodeSync#40;Person#41;#40;#123; name: #quot;John#quot;, age: 30 #125;#41;"/] 8[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 9["type: #40;input: #123; readonly age: number; readonly name: string; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.decodeSync
args: #91;#93;"] + 9["type: #40;input: #123; readonly name: string; readonly age: number; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.decodeSync
args: #91;#93;"] 10[/"type: #lt;S extends Decoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: S#91;#quot;Encoded#quot;#93;, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Type#quot;#93;
node: Schema.decodeSync"/] - 11["type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, never, never#gt;
callee: Effect.sync
args: #91;#93;"] + 11["type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, never, never#gt;
callee: Effect.sync
args: #91;#93;"] 12[/"type: #lt;A#gt;#40;thunk: LazyArg#lt;A#gt;#41; =#gt; Effect#lt;A, never, never#gt;
node: Effect.sync"/] - 13[/"type: #123; try: #40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;; catch: #40;#41; =#gt; ExampleError; #125;
node: #123;#92;n try: #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Jane#quot;, age: 25 #125;#41;,#92;n catch: #40;#41; =#gt; new ExampleError#40;#41;#92;n#125;"/] - 14[["type: #40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;
node: #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Jane#quot;, age: 25 #125;#41;"]] - 15[/"type: #123; readonly age: number; readonly name: string; #125;
node: Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Jane#quot;, age: 25 #125;#41;"/] + 13[/"type: #123; try: #40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;; catch: #40;#41; =#gt; ExampleError; #125;
node: #123;#92;n try: #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Jane#quot;, age: 25 #125;#41;,#92;n catch: #40;#41; =#gt; new ExampleError#40;#41;#92;n#125;"/] + 14[["type: #40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;
node: #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Jane#quot;, age: 25 #125;#41;"]] + 15[/"type: #123; readonly name: string; readonly age: number; #125;
node: Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Jane#quot;, age: 25 #125;#41;"/] 16[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 17["type: #40;input: #123; readonly age: number; readonly name: string; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.decodeSync
args: #91;#93;"] + 17["type: #40;input: #123; readonly name: string; readonly age: number; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.decodeSync
args: #91;#93;"] 18[/"type: #lt;S extends Decoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: S#91;#quot;Encoded#quot;#93;, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Type#quot;#93;
node: Schema.decodeSync"/] 19[["type: #40;#41; =#gt; ExampleError
node: #40;#41; =#gt; new ExampleError#40;#41;"]] 20[/"type: ExampleError
node: new ExampleError#40;#41;"/] - 21["type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, ExampleError, never#gt;
callee: Effect.try
args: #91;#93;"] + 21["type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, ExampleError, never#gt;
callee: Effect.try
args: #91;#93;"] 22[/"type: #lt;A, E#gt;#40;options: #123; try: LazyArg#lt;A#gt;; catch: #40;error: unknown#41; =#gt; E; #125;#41; =#gt; Effect#lt;A, E, never#gt;
node: Effect.try"/] - 23[["type: #40;#41; =#gt; Promise#lt;#123; readonly age: number; readonly name: string; #125;#gt;
node: async #40;#41; =#gt; Schema.encodeSync#40;Person#41;#40;#123; name: #quot;Bob#quot;, age: 40 #125;#41;"]] - 24[/"type: #123; readonly age: number; readonly name: string; #125;
node: Schema.encodeSync#40;Person#41;#40;#123; name: #quot;Bob#quot;, age: 40 #125;#41;"/] + 23[["type: #40;#41; =#gt; Promise#lt;#123; readonly name: string; readonly age: number; #125;#gt;
node: async #40;#41; =#gt; Schema.encodeSync#40;Person#41;#40;#123; name: #quot;Bob#quot;, age: 40 #125;#41;"]] + 24[/"type: #123; readonly name: string; readonly age: number; #125;
node: Schema.encodeSync#40;Person#41;#40;#123; name: #quot;Bob#quot;, age: 40 #125;#41;"/] 25[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 26["type: #40;input: #123; readonly age: number; readonly name: string; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.encodeSync
args: #91;#93;"] + 26["type: #40;input: #123; readonly name: string; readonly age: number; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.encodeSync
args: #91;#93;"] 27[/"type: #lt;S extends Encoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: S#91;#quot;Type#quot;#93;, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Encoded#quot;#93;
node: Schema.encodeSync"/] - 28["type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, UnknownError, never#gt;
callee: Effect.tryPromise
args: #91;#93;"] + 28["type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, UnknownError, never#gt;
callee: Effect.tryPromise
args: #91;#93;"] 29[/"type: #lt;A, E = UnknownError#gt;#40;options: #123; readonly try: #40;signal: AbortSignal#41; =#gt; PromiseLike#lt;A#gt;; readonly catch: #40;error: unknown#41; =#gt; E; #125; #124; #40;#40;signal: AbortSignal#41; =#gt; PromiseLike#lt;A#gt;#41;#41; =#gt; Effect#lt;A, E, never#gt;
node: Effect.tryPromise"/] - 30[/"type: #123; try: #40;#41; =#gt; Promise#lt;#123; readonly age: number; readonly name: string; #125;#gt;; catch: #40;#41; =#gt; ExampleError; #125;
node: #123;#92;n try: async #40;#41; =#gt; Schema.encodeUnknownSync#40;Person#41;#40;#123; name: #quot;Carol#quot;, age: 50 #125;#41;,#92;n catch: #40;#41; =#gt; new ExampleError#40;#41;#92;n#125;"/] - 31[["type: #40;#41; =#gt; Promise#lt;#123; readonly age: number; readonly name: string; #125;#gt;
node: async #40;#41; =#gt; Schema.encodeUnknownSync#40;Person#41;#40;#123; name: #quot;Carol#quot;, age: 50 #125;#41;"]] - 32[/"type: #123; readonly age: number; readonly name: string; #125;
node: Schema.encodeUnknownSync#40;Person#41;#40;#123; name: #quot;Carol#quot;, age: 50 #125;#41;"/] + 30[/"type: #123; try: #40;#41; =#gt; Promise#lt;#123; readonly name: string; readonly age: number; #125;#gt;; catch: #40;#41; =#gt; ExampleError; #125;
node: #123;#92;n try: async #40;#41; =#gt; Schema.encodeUnknownSync#40;Person#41;#40;#123; name: #quot;Carol#quot;, age: 50 #125;#41;,#92;n catch: #40;#41; =#gt; new ExampleError#40;#41;#92;n#125;"/] + 31[["type: #40;#41; =#gt; Promise#lt;#123; readonly name: string; readonly age: number; #125;#gt;
node: async #40;#41; =#gt; Schema.encodeUnknownSync#40;Person#41;#40;#123; name: #quot;Carol#quot;, age: 50 #125;#41;"]] + 32[/"type: #123; readonly name: string; readonly age: number; #125;
node: Schema.encodeUnknownSync#40;Person#41;#40;#123; name: #quot;Carol#quot;, age: 50 #125;#41;"/] 33[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 34["type: #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.encodeUnknownSync
args: #91;#93;"] + 34["type: #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.encodeUnknownSync
args: #91;#93;"] 35[/"type: #lt;S extends Schema.Encoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: unknown, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Encoded#quot;#93;
node: Schema.encodeUnknownSync"/] 36[["type: #40;#41; =#gt; ExampleError
node: #40;#41; =#gt; new ExampleError#40;#41;"]] 37[/"type: ExampleError
node: new ExampleError#40;#41;"/] - 38["type: Effect#lt;#123; readonly age: number; readonly name: string; #125;, ExampleError, never#gt;
callee: Effect.tryPromise
args: #91;#93;"] + 38["type: Effect#lt;#123; readonly name: string; readonly age: number; #125;, ExampleError, never#gt;
callee: Effect.tryPromise
args: #91;#93;"] 39[/"type: #lt;A, E = UnknownError#gt;#40;options: #123; readonly try: #40;signal: AbortSignal#41; =#gt; PromiseLike#lt;A#gt;; readonly catch: #40;error: unknown#41; =#gt; E; #125; #124; #40;#40;signal: AbortSignal#41; =#gt; PromiseLike#lt;A#gt;#41;#41; =#gt; Effect#lt;A, E, never#gt;
node: Effect.tryPromise"/] - 40[["type: #40;#41; =#gt; #40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;
node: #40;#41; =#gt; #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Nested#quot;, age: 10 #125;#41;"]] - 41[["type: #40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;
node: #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Nested#quot;, age: 10 #125;#41;"]] - 42[/"type: #123; readonly age: number; readonly name: string; #125;
node: Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Nested#quot;, age: 10 #125;#41;"/] + 40[["type: #40;#41; =#gt; #40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;
node: #40;#41; =#gt; #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Nested#quot;, age: 10 #125;#41;"]] + 41[["type: #40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;
node: #40;#41; =#gt; Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Nested#quot;, age: 10 #125;#41;"]] + 42[/"type: #123; readonly name: string; readonly age: number; #125;
node: Schema.decodeSync#40;Person#41;#40;#123; name: #quot;Nested#quot;, age: 10 #125;#41;"/] 43[/"type: Struct#lt;#123; readonly name: String; readonly age: Number; #125;#gt;
node: Person"/] - 44["type: #40;input: #123; readonly age: number; readonly name: string; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly age: number; readonly name: string; #125;
callee: Schema.decodeSync
args: #91;#93;"] + 44["type: #40;input: #123; readonly name: string; readonly age: number; #125;, options?: ParseOptions #124; undefined#41; =#gt; #123; readonly name: string; readonly age: number; #125;
callee: Schema.decodeSync
args: #91;#93;"] 45[/"type: #lt;S extends Decoder#lt;unknown#gt;#gt;#40;schema: S#41; =#gt; #40;input: S#91;#quot;Encoded#quot;#93;, options?: ParseOptions #124; undefined#41; =#gt; S#91;#quot;Type#quot;#93;
node: Schema.decodeSync"/] - 46["type: Effect#lt;#40;#41; =#gt; #123; readonly age: number; readonly name: string; #125;, never, never#gt;
callee: Effect.sync
args: #91;#93;"] + 46["type: Effect#lt;#40;#41; =#gt; #123; readonly name: string; readonly age: number; #125;, never, never#gt;
callee: Effect.sync
args: #91;#93;"] 47[/"type: #lt;A#gt;#40;thunk: LazyArg#lt;A#gt;#41; =#gt; Effect#lt;A, never, never#gt;
node: Effect.sync"/] 0 -->|"kind: pipe"| 1 2 -->|"kind: transformCallee"| 1 diff --git a/testdata/baselines/reference/effect-v4/schemaSyncInEffect_thunks.pipings.txt b/testdata/baselines/reference/effect-v4/schemaSyncInEffect_thunks.pipings.txt index 1f8961a9..c44a0f37 100644 --- a/testdata/baselines/reference/effect-v4/schemaSyncInEffect_thunks.pipings.txt +++ b/testdata/baselines/reference/effect-v4/schemaSyncInEffect_thunks.pipings.txt @@ -34,13 +34,13 @@ Node: Effect.sync(() => Schema.decodeSync(Person)({ name: "John", age: 30 })) Node Kind: KindCallExpression Subject: () => Schema.decodeSync(Person)({ name: "John", age: 30 }) -Subject Type: () => { readonly age: number; readonly name: string; } +Subject Type: () => { readonly name: string; readonly age: number; } Transformations (1): [0] kind: call callee: Effect.sync args: (constant) - outType: Effect<{ readonly age: number; readonly name: string; }, never, never> + outType: Effect<{ readonly name: string; readonly age: number; }, never, never> === Piping Flow === Location: 10:46 - 10:99 @@ -54,7 +54,7 @@ Transformations (1): [0] kind: call callee: Schema.decodeSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 12:33 - 15:3 @@ -62,13 +62,13 @@ Node: Effect.try({\n try: () => Schema.decodeSync(Person)({ name: "Jane", age: Node Kind: KindCallExpression Subject: {\n try: () => Schema.decodeSync(Person)({ name: "Jane", age: 25 }),\n catch: () => new ExampleError()\n} -Subject Type: { try: () => { readonly age: number; readonly name: string; }; catch: () => ExampleError; } +Subject Type: { try: () => { readonly name: string; readonly age: number; }; catch: () => ExampleError; } Transformations (1): [0] kind: call callee: Effect.try args: (constant) - outType: Effect<{ readonly age: number; readonly name: string; }, ExampleError, never> + outType: Effect<{ readonly name: string; readonly age: number; }, ExampleError, never> === Piping Flow === Location: 13:13 - 13:66 @@ -82,7 +82,7 @@ Transformations (1): [0] kind: call callee: Schema.decodeSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 17:34 - 17:117 @@ -90,13 +90,13 @@ Node: Effect.tryPromise(async () => Schema.encodeSync(Person)({ name: "Bob", age Node Kind: KindCallExpression Subject: async () => Schema.encodeSync(Person)({ name: "Bob", age: 40 }) -Subject Type: () => Promise<{ readonly age: number; readonly name: string; }> +Subject Type: () => Promise<{ readonly name: string; readonly age: number; }> Transformations (1): [0] kind: call callee: Effect.tryPromise args: (constant) - outType: Effect<{ readonly age: number; readonly name: string; }, UnknownError, never> + outType: Effect<{ readonly name: string; readonly age: number; }, UnknownError, never> === Piping Flow === Location: 17:64 - 17:116 @@ -110,7 +110,7 @@ Transformations (1): [0] kind: call callee: Schema.encodeSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 19:40 - 22:3 @@ -118,13 +118,13 @@ Node: Effect.tryPromise({\n try: async () => Schema.encodeUnknownSync(Person)({ Node Kind: KindCallExpression Subject: {\n try: async () => Schema.encodeUnknownSync(Person)({ name: "Carol", age: 50 }),\n catch: () => new ExampleError()\n} -Subject Type: { try: () => Promise<{ readonly age: number; readonly name: string; }>; catch: () => ExampleError; } +Subject Type: { try: () => Promise<{ readonly name: string; readonly age: number; }>; catch: () => ExampleError; } Transformations (1): [0] kind: call callee: Effect.tryPromise args: (constant) - outType: Effect<{ readonly age: number; readonly name: string; }, ExampleError, never> + outType: Effect<{ readonly name: string; readonly age: number; }, ExampleError, never> === Piping Flow === Location: 20:19 - 20:80 @@ -138,7 +138,7 @@ Transformations (1): [0] kind: call callee: Schema.encodeUnknownSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } === Piping Flow === Location: 24:48 - 26:2 @@ -146,13 +146,13 @@ Node: Effect.sync(\n () => () => Schema.decodeSync(Person)({ name: "Nested", ag Node Kind: KindCallExpression Subject: () => () => Schema.decodeSync(Person)({ name: "Nested", age: 10 }) -Subject Type: () => () => { readonly age: number; readonly name: string; } +Subject Type: () => () => { readonly name: string; readonly age: number; } Transformations (1): [0] kind: call callee: Effect.sync args: (constant) - outType: Effect<() => { readonly age: number; readonly name: string; }, never, never> + outType: Effect<() => { readonly name: string; readonly age: number; }, never, never> === Piping Flow === Location: 25:14 - 25:69 @@ -166,4 +166,4 @@ Transformations (1): [0] kind: call callee: Schema.decodeSync(Person) args: (constant) - outType: { readonly age: number; readonly name: string; } + outType: { readonly name: string; readonly age: number; } diff --git a/testdata/baselines/reference/inlayHints/effectInlayHintsDisabledPassthrough.baseline b/testdata/baselines/reference/inlayHints/effectInlayHintsDisabledPassthrough.baseline index a8ad3568..396c3dc9 100644 --- a/testdata/baselines/reference/inlayHints/effectInlayHintsDisabledPassthrough.baseline +++ b/testdata/baselines/reference/inlayHints/effectInlayHintsDisabledPassthrough.baseline @@ -53,11 +53,11 @@ export const sample = Effect.gen(function*() { "uri": "file:///node_modules/effect/dist/Effect.d.ts", "range": { "start": { - "line": 136, + "line": 146, "character": 17 }, "end": { - "line": 136, + "line": 146, "character": 23 } } diff --git a/testdata/tests/effect-v4-document-symbols/documentSymbolEffectStub.ts b/testdata/tests/effect-v4-document-symbols/documentSymbolEffectStub.ts index a093e799..a393c022 100644 --- a/testdata/tests/effect-v4-document-symbols/documentSymbolEffectStub.ts +++ b/testdata/tests/effect-v4-document-symbols/documentSymbolEffectStub.ts @@ -14,13 +14,13 @@ export class FileSystem extends Context.Service()("FileSystem", { } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -67,4 +67,4 @@ export class MySchemaClass extends Schema.Class("MySchemaClass")( export const MyUser = Schema.Struct({ name: Schema.String, age: Schema.Number -}) \ No newline at end of file +}) diff --git a/testdata/tests/effect-v4-document-symbols/package.json b/testdata/tests/effect-v4-document-symbols/package.json index fee60973..34749e29 100644 --- a/testdata/tests/effect-v4-document-symbols/package.json +++ b/testdata/tests/effect-v4-document-symbols/package.json @@ -2,7 +2,7 @@ "name": "effect-v4-document-symbols-tests", "private": true, "dependencies": { - "effect": "4.0.0-beta.46", + "effect": "4.0.0-beta.66", "@standard-schema/spec": "^1.1.0", "fast-check": "^4.4.0", "pure-rand": "^7.0.0", diff --git a/testdata/tests/effect-v4-refactors/layerMagic_build.ts b/testdata/tests/effect-v4-refactors/layerMagic_build.ts index 2244fe01..834c0a19 100644 --- a/testdata/tests/effect-v4-refactors/layerMagic_build.ts +++ b/testdata/tests/effect-v4-refactors/layerMagic_build.ts @@ -10,15 +10,15 @@ class FileSystem extends Context.Service()("FileSystem", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) - static bothInAndOut = Layer.effect(FileSystem, FileSystem.asEffect()) + static bothInAndOut = Layer.effect(FileSystem, FileSystem) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4-refactors/layerMagic_prepare.ts b/testdata/tests/effect-v4-refactors/layerMagic_prepare.ts index 9ac8783b..dc94cd85 100644 --- a/testdata/tests/effect-v4-refactors/layerMagic_prepare.ts +++ b/testdata/tests/effect-v4-refactors/layerMagic_prepare.ts @@ -12,12 +12,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4-refactors/layerMagic_prepareReuse.ts b/testdata/tests/effect-v4-refactors/layerMagic_prepareReuse.ts index ef1e27ed..9e7e70d4 100644 --- a/testdata/tests/effect-v4-refactors/layerMagic_prepareReuse.ts +++ b/testdata/tests/effect-v4-refactors/layerMagic_prepareReuse.ts @@ -12,12 +12,12 @@ class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4-refactors/package.json b/testdata/tests/effect-v4-refactors/package.json index 51c2aef9..b9b937ae 100644 --- a/testdata/tests/effect-v4-refactors/package.json +++ b/testdata/tests/effect-v4-refactors/package.json @@ -2,7 +2,7 @@ "name": "effect-v4-refactors-tests", "private": true, "dependencies": { - "effect": "4.0.0-beta.46", + "effect": "4.0.0-beta.66", "@standard-schema/spec": "^1.1.0", "fast-check": "^4.4.0", "pure-rand": "^7.0.0", diff --git a/testdata/tests/effect-v4/layerGraphDocumented.ts b/testdata/tests/effect-v4/layerGraphDocumented.ts index 7e4e8f01..3af31c02 100644 --- a/testdata/tests/effect-v4/layerGraphDocumented.ts +++ b/testdata/tests/effect-v4/layerGraphDocumented.ts @@ -22,7 +22,7 @@ export class FileSystem extends Context.Service()("FileSystem", { * In-memory caching layer for improved performance */ export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } @@ -31,7 +31,7 @@ export class Cache extends Context.Service()("Cache", { * Repository for user data access and persistence */ export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4/layerGraphDuplicated.ts b/testdata/tests/effect-v4/layerGraphDuplicated.ts index 83b4e4e9..a65602ee 100644 --- a/testdata/tests/effect-v4/layerGraphDuplicated.ts +++ b/testdata/tests/effect-v4/layerGraphDuplicated.ts @@ -7,13 +7,13 @@ class Database extends Context.Service()("Database", { } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } class EventsRepository extends Context.Service()("EventsRepository", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } @@ -25,19 +25,19 @@ class Analytics extends Context.Service()("Analytics", { } class UserService extends Context.Service()("UserService", { - make: Effect.as(Effect.andThen(UserRepository.asEffect(), Analytics.asEffect()), {}) + make: Effect.as(Effect.andThen(UserRepository, Analytics), {}) }) { static Default = Layer.effect(this, this.make) } class EventService extends Context.Service()("EventService", { - make: Effect.as(Effect.andThen(EventsRepository.asEffect(), Analytics.asEffect()), {}) + make: Effect.as(Effect.andThen(EventsRepository, Analytics), {}) }) { static Default = Layer.effect(this, this.make) } class AppService extends Context.Service()("AppService", { - make: Effect.as(Effect.andThen(UserService.asEffect(), EventService.asEffect()), {}) + make: Effect.as(Effect.andThen(UserService, EventService), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4/layerGraphEffect.ts b/testdata/tests/effect-v4/layerGraphEffect.ts index 13d0e041..bb34fefb 100644 --- a/testdata/tests/effect-v4/layerGraphEffect.ts +++ b/testdata/tests/effect-v4/layerGraphEffect.ts @@ -9,7 +9,7 @@ class DatabaseContext extends Context.Service()("DatabaseContex } export const AppLive = Layer.effectDiscard(Effect.gen(function*() { - const databaseContext = yield* DatabaseContext.asEffect() + const databaseContext = yield* DatabaseContext return yield* Effect.log(databaseContext.value) })).pipe(Layer.provide(DatabaseContext.Default)) diff --git a/testdata/tests/effect-v4/layerGraphFollowSymbols.ts b/testdata/tests/effect-v4/layerGraphFollowSymbols.ts index d7bc58bd..a8fb2074 100644 --- a/testdata/tests/effect-v4/layerGraphFollowSymbols.ts +++ b/testdata/tests/effect-v4/layerGraphFollowSymbols.ts @@ -31,12 +31,12 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4/layerGraphFollowSymbolsDeep.ts b/testdata/tests/effect-v4/layerGraphFollowSymbolsDeep.ts index 21a82fbb..a03445b6 100644 --- a/testdata/tests/effect-v4/layerGraphFollowSymbolsDeep.ts +++ b/testdata/tests/effect-v4/layerGraphFollowSymbolsDeep.ts @@ -31,7 +31,7 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4/layerGraphFollowSymbolsOff.ts b/testdata/tests/effect-v4/layerGraphFollowSymbolsOff.ts index f353e554..be9a72f5 100644 --- a/testdata/tests/effect-v4/layerGraphFollowSymbolsOff.ts +++ b/testdata/tests/effect-v4/layerGraphFollowSymbolsOff.ts @@ -35,12 +35,12 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4/layerGraphMultiple.ts b/testdata/tests/effect-v4/layerGraphMultiple.ts index cd39126b..0753167f 100644 --- a/testdata/tests/effect-v4/layerGraphMultiple.ts +++ b/testdata/tests/effect-v4/layerGraphMultiple.ts @@ -15,13 +15,13 @@ class Database extends Context.Service()("Database", { } class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } class EventsRepository extends Context.Service()("EventsRepository", { - make: Effect.as(Database.asEffect(), {}) + make: Effect.as(Database, {}) }) { static Default = Layer.effect(this, this.make) } @@ -33,19 +33,19 @@ class Analytics extends Context.Service()("Analytics", { } class UserService extends Context.Service()("UserService", { - make: Effect.as(Effect.andThen(UserRepository.asEffect(), Analytics.asEffect()), {}) + make: Effect.as(Effect.andThen(UserRepository, Analytics), {}) }) { static Default = Layer.effect(this, this.make) } class EventService extends Context.Service()("EventService", { - make: Effect.as(Effect.andThen(EventsRepository.asEffect(), Analytics.asEffect()), {}) + make: Effect.as(Effect.andThen(EventsRepository, Analytics), {}) }) { static Default = Layer.effect(this, this.make) } class AppService extends Context.Service()("AppService", { - make: Effect.as(Effect.andThen(UserService.asEffect(), EventService.asEffect()), {}) + make: Effect.as(Effect.andThen(UserService, EventService), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4/layerGraphSimple.ts b/testdata/tests/effect-v4/layerGraphSimple.ts index 724e5221..1be31b61 100644 --- a/testdata/tests/effect-v4/layerGraphSimple.ts +++ b/testdata/tests/effect-v4/layerGraphSimple.ts @@ -19,12 +19,12 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4/layerMergeAllWithDependencies.ts b/testdata/tests/effect-v4/layerMergeAllWithDependencies.ts index b2649666..ccaf4df9 100644 --- a/testdata/tests/effect-v4/layerMergeAllWithDependencies.ts +++ b/testdata/tests/effect-v4/layerMergeAllWithDependencies.ts @@ -11,17 +11,17 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } -const cachePassthrough = Layer.effect(Cache, Cache.asEffect()) +const cachePassthrough = Layer.effect(Cache, Cache) export const shouldNotWarn = Layer.mergeAll( DbConnection.Default, diff --git a/testdata/tests/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.ts b/testdata/tests/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.ts index 6733df89..17b68194 100644 --- a/testdata/tests/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.ts +++ b/testdata/tests/effect-v4/layerMergeAllWithDependenciesNonPropertyAccess.ts @@ -11,7 +11,7 @@ export class FileSystem extends Context.Service()("FileSystem", { static Default = Layer.effect(this, this.make) } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } diff --git a/testdata/tests/effect-v4/layerMergeAllWithDependencies_preview.ts b/testdata/tests/effect-v4/layerMergeAllWithDependencies_preview.ts index d045be59..ef9908dd 100644 --- a/testdata/tests/effect-v4/layerMergeAllWithDependencies_preview.ts +++ b/testdata/tests/effect-v4/layerMergeAllWithDependencies_preview.ts @@ -5,7 +5,7 @@ import { Effect, Layer, Context } from "effect" class A extends Context.Service
()("A", { make: Effect.succeed({}) }) { static Default = Layer.effect(this, this.make) } -class B extends Context.Service()("B", { make: Effect.as(A.asEffect(), {}) }) { +class B extends Context.Service()("B", { make: Effect.as(A, {}) }) { static Default = Layer.effect(this, this.make) } export const preview = Layer.mergeAll(A.Default, B.Default) diff --git a/testdata/tests/effect-v4/missingEffectContext_preview.ts b/testdata/tests/effect-v4/missingEffectContext_preview.ts index 5a81e7d6..c164b318 100644 --- a/testdata/tests/effect-v4/missingEffectContext_preview.ts +++ b/testdata/tests/effect-v4/missingEffectContext_preview.ts @@ -5,4 +5,4 @@ import { Effect, Context } from "effect" class Db extends Context.Service()("Db", { make: Effect.succeed({}) }) {} // @ts-expect-error -export const preview: Effect.Effect = Db.asEffect().pipe(Effect.asVoid) +export const preview: Effect.Effect = Db.pipe(Effect.asVoid) diff --git a/testdata/tests/effect-v4/missingEffectContext_sugg.ts b/testdata/tests/effect-v4/missingEffectContext_sugg.ts index f528dfe2..c8253cbd 100644 --- a/testdata/tests/effect-v4/missingEffectContext_sugg.ts +++ b/testdata/tests/effect-v4/missingEffectContext_sugg.ts @@ -13,13 +13,13 @@ export class FileSystem extends Context.Service()("FileSystem", { } export class Cache extends Context.Service()("Cache", { - make: Effect.as(FileSystem.asEffect(), {}) + make: Effect.as(FileSystem, {}) }) { static Default = Layer.effect(this, this.make) } export class UserRepository extends Context.Service()("UserRepository", { - make: Effect.as(Effect.andThen(DbConnection.asEffect(), Cache.asEffect()), {}) + make: Effect.as(Effect.andThen(DbConnection, Cache), {}) }) { static Default = Layer.effect(this, this.make) } @@ -40,4 +40,4 @@ program.pipe( Effect.provide(liveWithPipeable), Effect.scoped, Effect.runPromise -) \ No newline at end of file +) diff --git a/testdata/tests/effect-v4/missingReturnYieldStar_yieldable.ts b/testdata/tests/effect-v4/missingReturnYieldStar_yieldable.ts deleted file mode 100644 index 5d3144f1..00000000 --- a/testdata/tests/effect-v4/missingReturnYieldStar_yieldable.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Effect, Option } from "effect" - -export const shouldComplain = (n: number) => - Effect.gen(function*() { - if (n === 0) { - yield* Option.none() // should trigger because Option is yieldable - } - return n / 1 - }) diff --git a/testdata/tests/effect-v4/package.json b/testdata/tests/effect-v4/package.json index df9c54db..45dd6663 100644 --- a/testdata/tests/effect-v4/package.json +++ b/testdata/tests/effect-v4/package.json @@ -2,7 +2,7 @@ "name": "effect-v4-tests", "private": true, "dependencies": { - "effect": "4.0.0-beta.46", + "effect": "4.0.0-beta.66", "@standard-schema/spec": "^1.1.0", "fast-check": "^4.4.0", "pure-rand": "^7.0.0",