effect 4.0.0-beta.26 → 4.0.0-beta.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/Cause.d.ts +1 -1
  2. package/dist/Data.d.ts +2 -2
  3. package/dist/Data.js +2 -2
  4. package/dist/Effect.d.ts +31 -22
  5. package/dist/Effect.d.ts.map +1 -1
  6. package/dist/Effect.js +14 -11
  7. package/dist/Effect.js.map +1 -1
  8. package/dist/ErrorReporter.d.ts +2 -4
  9. package/dist/ErrorReporter.d.ts.map +1 -1
  10. package/dist/ErrorReporter.js +1 -3
  11. package/dist/ErrorReporter.js.map +1 -1
  12. package/dist/Layer.d.ts +112 -117
  13. package/dist/Layer.d.ts.map +1 -1
  14. package/dist/Layer.js +43 -44
  15. package/dist/Layer.js.map +1 -1
  16. package/dist/LayerMap.d.ts +4 -4
  17. package/dist/LayerMap.js +3 -3
  18. package/dist/ManagedRuntime.d.ts +1 -1
  19. package/dist/ManagedRuntime.js +1 -1
  20. package/dist/Metric.d.ts +2 -4
  21. package/dist/Metric.d.ts.map +1 -1
  22. package/dist/Metric.js +2 -4
  23. package/dist/Metric.js.map +1 -1
  24. package/dist/Schedule.d.ts +36 -36
  25. package/dist/Schedule.js +14 -14
  26. package/dist/index.d.ts +1 -1
  27. package/dist/index.js +1 -1
  28. package/dist/unstable/cli/CliError.d.ts +4 -4
  29. package/dist/unstable/cli/CliError.js +4 -4
  30. package/dist/unstable/cli/Primitive.d.ts +1 -1
  31. package/dist/unstable/cli/Primitive.js +1 -1
  32. package/dist/unstable/http/Headers.d.ts +16 -0
  33. package/dist/unstable/http/Headers.d.ts.map +1 -1
  34. package/dist/unstable/http/Headers.js +11 -0
  35. package/dist/unstable/http/Headers.js.map +1 -1
  36. package/dist/unstable/httpapi/HttpApiBuilder.js +5 -0
  37. package/dist/unstable/httpapi/HttpApiBuilder.js.map +1 -1
  38. package/dist/unstable/schema/Model.d.ts +21 -0
  39. package/dist/unstable/schema/Model.d.ts.map +1 -1
  40. package/dist/unstable/schema/Model.js +15 -0
  41. package/dist/unstable/schema/Model.js.map +1 -1
  42. package/package.json +1 -1
  43. package/src/Cause.ts +1 -1
  44. package/src/Data.ts +2 -2
  45. package/src/Effect.ts +31 -22
  46. package/src/ErrorReporter.ts +2 -4
  47. package/src/Layer.ts +112 -117
  48. package/src/LayerMap.ts +4 -4
  49. package/src/ManagedRuntime.ts +1 -1
  50. package/src/Metric.ts +2 -4
  51. package/src/Schedule.ts +36 -36
  52. package/src/index.ts +1 -1
  53. package/src/unstable/cli/CliError.ts +4 -4
  54. package/src/unstable/cli/Primitive.ts +1 -1
  55. package/src/unstable/http/Headers.ts +34 -0
  56. package/src/unstable/httpapi/HttpApiBuilder.ts +3 -0
  57. package/src/unstable/schema/Model.ts +31 -0
package/src/Layer.ts CHANGED
@@ -129,7 +129,7 @@ const MemoMapTypeId = "~effect/Layer/MemoMap"
129
129
  * const scope = yield* Effect.scope
130
130
  *
131
131
  * const dbLayer = Layer.succeed(Database)({
132
- * query: (sql: string) => Effect.succeed("result")
132
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
133
133
  * })
134
134
  * const services = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
135
135
  *
@@ -161,7 +161,7 @@ export interface MemoMap {
161
161
  * }>()("Database") {}
162
162
  *
163
163
  * const dbLayer = Layer.succeed(Database)({
164
- * query: (sql: string) => Effect.succeed("result")
164
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
165
165
  * })
166
166
  * const notALayer = { someProperty: "value" }
167
167
  *
@@ -340,7 +340,7 @@ class MemoMapImpl implements MemoMap {
340
340
  * const scope = yield* Effect.scope
341
341
  *
342
342
  * const dbLayer = Layer.succeed(Database)({
343
- * query: (sql: string) => Effect.succeed("result")
343
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
344
344
  * })
345
345
  * const services = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
346
346
  *
@@ -370,7 +370,7 @@ export const makeMemoMapUnsafe = (): MemoMap => new MemoMapImpl()
370
370
  * const scope = yield* Effect.scope
371
371
  *
372
372
  * const dbLayer = Layer.succeed(Database)({
373
- * query: (sql: string) => Effect.succeed("result")
373
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
374
374
  * })
375
375
  * const services = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
376
376
  *
@@ -422,13 +422,13 @@ export class CurrentMemoMap extends ServiceMap.Service<CurrentMemoMap, MemoMap>(
422
422
  *
423
423
  * // Build database layer with memoization
424
424
  * const dbLayer = Layer.succeed(Database)({
425
- * query: (sql: string) => Effect.succeed("result")
425
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
426
426
  * })
427
427
  * const dbServices = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
428
428
  *
429
429
  * // Build logger layer with same memoization (reuses memo if same layer)
430
430
  * const loggerLayer = Layer.succeed(Logger)({
431
- * log: (msg: string) => Effect.sync(() => console.log(msg))
431
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
432
432
  * })
433
433
  * const loggerServices = yield* Layer.buildWithMemoMap(
434
434
  * loggerLayer,
@@ -470,13 +470,13 @@ export const buildWithMemoMap: {
470
470
  *
471
471
  * // Build database layer with memoization
472
472
  * const dbLayer = Layer.succeed(Database)({
473
- * query: (sql: string) => Effect.succeed("result")
473
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
474
474
  * })
475
475
  * const dbServices = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
476
476
  *
477
477
  * // Build logger layer with same memoization (reuses memo if same layer)
478
478
  * const loggerLayer = Layer.succeed(Logger)({
479
- * log: (msg: string) => Effect.sync(() => console.log(msg))
479
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
480
480
  * })
481
481
  * const loggerServices = yield* Layer.buildWithMemoMap(
482
482
  * loggerLayer,
@@ -518,13 +518,13 @@ export const buildWithMemoMap: {
518
518
  *
519
519
  * // Build database layer with memoization
520
520
  * const dbLayer = Layer.succeed(Database)({
521
- * query: (sql: string) => Effect.succeed("result")
521
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
522
522
  * })
523
523
  * const dbServices = yield* Layer.buildWithMemoMap(dbLayer, memoMap, scope)
524
524
  *
525
525
  * // Build logger layer with same memoization (reuses memo if same layer)
526
526
  * const loggerLayer = Layer.succeed(Logger)({
527
- * log: (msg: string) => Effect.sync(() => console.log(msg))
527
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
528
528
  * })
529
529
  * const loggerServices = yield* Layer.buildWithMemoMap(
530
530
  * loggerLayer,
@@ -568,7 +568,7 @@ export const buildWithMemoMap: {
568
568
  * // Build a layer to get its services
569
569
  * const program = Effect.gen(function*() {
570
570
  * const dbLayer = Layer.succeed(Database)({
571
- * query: (sql: string) => Effect.succeed("result")
571
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
572
572
  * })
573
573
  *
574
574
  * // Build the layer into ServiceMap - automatically manages scope and memoization
@@ -620,7 +620,7 @@ export const build = <RIn, E, ROut>(
620
620
  * scope,
621
621
  * Effect.sync(() => console.log("Database closed"))
622
622
  * )
623
- * return { query: (sql: string) => Effect.succeed(`Result: ${sql}`) }
623
+ * return { query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`)) }
624
624
  * }))
625
625
  *
626
626
  * // Build with specific scope - resources tied to this scope
@@ -661,7 +661,7 @@ export const buildWithScope: {
661
661
  * scope,
662
662
  * Effect.sync(() => console.log("Database closed"))
663
663
  * )
664
- * return { query: (sql: string) => Effect.succeed(`Result: ${sql}`) }
664
+ * return { query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`)) }
665
665
  * }))
666
666
  *
667
667
  * // Build with specific scope - resources tied to this scope
@@ -702,7 +702,7 @@ export const buildWithScope: {
702
702
  * scope,
703
703
  * Effect.sync(() => console.log("Database closed"))
704
704
  * )
705
- * return { query: (sql: string) => Effect.succeed(`Result: ${sql}`) }
705
+ * return { query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`)) }
706
706
  * }))
707
707
  *
708
708
  * // Build with specific scope - resources tied to this scope
@@ -747,11 +747,11 @@ export const buildWithScope: {
747
747
  *
748
748
  * // Create layers from concrete service implementations
749
749
  * const databaseLayer = Layer.succeed(Database)({
750
- * query: (sql: string) => Effect.succeed(`Query result: ${sql}`)
750
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Query result: ${sql}`))
751
751
  * })
752
752
  *
753
753
  * const loggerLayer = Layer.succeed(Logger)({
754
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
754
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
755
755
  * })
756
756
  *
757
757
  * // Use the layers in a program
@@ -790,11 +790,11 @@ export const succeed: {
790
790
  *
791
791
  * // Create layers from concrete service implementations
792
792
  * const databaseLayer = Layer.succeed(Database)({
793
- * query: (sql: string) => Effect.succeed(`Query result: ${sql}`)
793
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Query result: ${sql}`))
794
794
  * })
795
795
  *
796
796
  * const loggerLayer = Layer.succeed(Logger)({
797
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
797
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
798
798
  * })
799
799
  *
800
800
  * // Use the layers in a program
@@ -833,11 +833,11 @@ export const succeed: {
833
833
  *
834
834
  * // Create layers from concrete service implementations
835
835
  * const databaseLayer = Layer.succeed(Database)({
836
- * query: (sql: string) => Effect.succeed(`Query result: ${sql}`)
836
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Query result: ${sql}`))
837
837
  * })
838
838
  *
839
839
  * const loggerLayer = Layer.succeed(Logger)({
840
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
840
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
841
841
  * })
842
842
  *
843
843
  * // Use the layers in a program
@@ -886,7 +886,7 @@ export const succeed: {
886
886
  * }>()("Logger") {}
887
887
  *
888
888
  * const services = ServiceMap.make(Database, {
889
- * query: (sql: string) => Effect.succeed("result")
889
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
890
890
  * })
891
891
  * .pipe(
892
892
  * ServiceMap.add(Logger, {
@@ -1211,7 +1211,7 @@ export const effectDiscard = <X, E, R>(effect: Effect<X, E, R>): Layer<never, E,
1211
1211
  * }>()("Database") {}
1212
1212
  *
1213
1213
  * const layerEffect = Effect.succeed(
1214
- * Layer.succeed(Database)({ query: (sql: string) => Effect.succeed("result") })
1214
+ * Layer.succeed(Database)({ query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result")) })
1215
1215
  * )
1216
1216
  *
1217
1217
  * const unwrappedLayer = Layer.unwrap(layerEffect)
@@ -1263,10 +1263,10 @@ const mergeAllEffect = <Layers extends [Layer<never, any, any>, ...Array<Layer<n
1263
1263
  * }>()("Logger") {}
1264
1264
  *
1265
1265
  * const dbLayer = Layer.succeed(Database)({
1266
- * query: (sql: string) => Effect.succeed("result")
1266
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
1267
1267
  * })
1268
1268
  * const loggerLayer = Layer.succeed(Logger)({
1269
- * log: (msg: string) => Effect.sync(() => console.log(msg))
1269
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
1270
1270
  * })
1271
1271
  *
1272
1272
  * const mergedLayer = Layer.mergeAll(dbLayer, loggerLayer)
@@ -1302,10 +1302,10 @@ export const mergeAll = <Layers extends [Layer<never, any, any>, ...Array<Layer<
1302
1302
  * }>()("Logger") {}
1303
1303
  *
1304
1304
  * const dbLayer = Layer.succeed(Database)({
1305
- * query: (sql: string) => Effect.succeed("result")
1305
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
1306
1306
  * })
1307
1307
  * const loggerLayer = Layer.succeed(Logger)({
1308
- * log: (msg: string) => Effect.sync(() => console.log(msg))
1308
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
1309
1309
  * })
1310
1310
  *
1311
1311
  * const mergedLayer = Layer.merge(dbLayer, loggerLayer)
@@ -1334,10 +1334,10 @@ export const merge: {
1334
1334
  * }>()("Logger") {}
1335
1335
  *
1336
1336
  * const dbLayer = Layer.succeed(Database)({
1337
- * query: (sql: string) => Effect.succeed("result")
1337
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
1338
1338
  * })
1339
1339
  * const loggerLayer = Layer.succeed(Logger)({
1340
- * log: (msg: string) => Effect.sync(() => console.log(msg))
1340
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
1341
1341
  * })
1342
1342
  *
1343
1343
  * const mergedLayer = Layer.merge(dbLayer, loggerLayer)
@@ -1366,10 +1366,10 @@ export const merge: {
1366
1366
  * }>()("Logger") {}
1367
1367
  *
1368
1368
  * const dbLayer = Layer.succeed(Database)({
1369
- * query: (sql: string) => Effect.succeed("result")
1369
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
1370
1370
  * })
1371
1371
  * const loggerLayer = Layer.succeed(Logger)({
1372
- * log: (msg: string) => Effect.sync(() => console.log(msg))
1372
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
1373
1373
  * })
1374
1374
  *
1375
1375
  * const mergedLayer = Layer.merge(dbLayer, loggerLayer)
@@ -1405,10 +1405,10 @@ export const merge: {
1405
1405
  * }>()("Logger") {}
1406
1406
  *
1407
1407
  * const dbLayer = Layer.succeed(Database)({
1408
- * query: (sql: string) => Effect.succeed("result")
1408
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
1409
1409
  * })
1410
1410
  * const loggerLayer = Layer.succeed(Logger)({
1411
- * log: (msg: string) => Effect.sync(() => console.log(msg))
1411
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
1412
1412
  * })
1413
1413
  *
1414
1414
  * const mergedLayer = Layer.merge(dbLayer, loggerLayer)
@@ -1437,10 +1437,10 @@ export const merge: {
1437
1437
  * }>()("Logger") {}
1438
1438
  *
1439
1439
  * const dbLayer = Layer.succeed(Database)({
1440
- * query: (sql: string) => Effect.succeed("result")
1440
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed("result"))
1441
1441
  * })
1442
1442
  * const loggerLayer = Layer.succeed(Logger)({
1443
- * log: (msg: string) => Effect.sync(() => console.log(msg))
1443
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
1444
1444
  * })
1445
1445
  *
1446
1446
  * const mergedLayer = Layer.merge(dbLayer, loggerLayer)
@@ -1507,11 +1507,11 @@ const provideWith = (
1507
1507
  *
1508
1508
  * // Create dependency layers
1509
1509
  * const databaseLayer = Layer.succeed(Database)({
1510
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
1510
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
1511
1511
  * })
1512
1512
  *
1513
1513
  * const loggerLayer = Layer.succeed(Logger)({
1514
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
1514
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
1515
1515
  * })
1516
1516
  *
1517
1517
  * // UserService depends on Database and Logger
@@ -1520,8 +1520,7 @@ const provideWith = (
1520
1520
  * const logger = yield* Logger
1521
1521
  *
1522
1522
  * return {
1523
- * getUser: (id: string) =>
1524
- * Effect.gen(function*() {
1523
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
1525
1524
  * yield* logger.log(`Looking up user ${id}`)
1526
1525
  * const result = yield* database.query(
1527
1526
  * `SELECT * FROM users WHERE id = ${id}`
@@ -1575,11 +1574,11 @@ export const provide: {
1575
1574
  *
1576
1575
  * // Create dependency layers
1577
1576
  * const databaseLayer = Layer.succeed(Database)({
1578
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
1577
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
1579
1578
  * })
1580
1579
  *
1581
1580
  * const loggerLayer = Layer.succeed(Logger)({
1582
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
1581
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
1583
1582
  * })
1584
1583
  *
1585
1584
  * // UserService depends on Database and Logger
@@ -1588,8 +1587,7 @@ export const provide: {
1588
1587
  * const logger = yield* Logger
1589
1588
  *
1590
1589
  * return {
1591
- * getUser: (id: string) =>
1592
- * Effect.gen(function*() {
1590
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
1593
1591
  * yield* logger.log(`Looking up user ${id}`)
1594
1592
  * const result = yield* database.query(
1595
1593
  * `SELECT * FROM users WHERE id = ${id}`
@@ -1643,11 +1641,11 @@ export const provide: {
1643
1641
  *
1644
1642
  * // Create dependency layers
1645
1643
  * const databaseLayer = Layer.succeed(Database)({
1646
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
1644
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
1647
1645
  * })
1648
1646
  *
1649
1647
  * const loggerLayer = Layer.succeed(Logger)({
1650
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
1648
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
1651
1649
  * })
1652
1650
  *
1653
1651
  * // UserService depends on Database and Logger
@@ -1656,8 +1654,7 @@ export const provide: {
1656
1654
  * const logger = yield* Logger
1657
1655
  *
1658
1656
  * return {
1659
- * getUser: (id: string) =>
1660
- * Effect.gen(function*() {
1657
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
1661
1658
  * yield* logger.log(`Looking up user ${id}`)
1662
1659
  * const result = yield* database.query(
1663
1660
  * `SELECT * FROM users WHERE id = ${id}`
@@ -1718,11 +1715,11 @@ export const provide: {
1718
1715
  *
1719
1716
  * // Create dependency layers
1720
1717
  * const databaseLayer = Layer.succeed(Database)({
1721
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
1718
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
1722
1719
  * })
1723
1720
  *
1724
1721
  * const loggerLayer = Layer.succeed(Logger)({
1725
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
1722
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
1726
1723
  * })
1727
1724
  *
1728
1725
  * // UserService depends on Database and Logger
@@ -1731,8 +1728,7 @@ export const provide: {
1731
1728
  * const logger = yield* Logger
1732
1729
  *
1733
1730
  * return {
1734
- * getUser: (id: string) =>
1735
- * Effect.gen(function*() {
1731
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
1736
1732
  * yield* logger.log(`Looking up user ${id}`)
1737
1733
  * const result = yield* database.query(
1738
1734
  * `SELECT * FROM users WHERE id = ${id}`
@@ -1786,11 +1782,11 @@ export const provide: {
1786
1782
  *
1787
1783
  * // Create dependency layers
1788
1784
  * const databaseLayer = Layer.succeed(Database)({
1789
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
1785
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
1790
1786
  * })
1791
1787
  *
1792
1788
  * const loggerLayer = Layer.succeed(Logger)({
1793
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
1789
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
1794
1790
  * })
1795
1791
  *
1796
1792
  * // UserService depends on Database and Logger
@@ -1799,8 +1795,7 @@ export const provide: {
1799
1795
  * const logger = yield* Logger
1800
1796
  *
1801
1797
  * return {
1802
- * getUser: (id: string) =>
1803
- * Effect.gen(function*() {
1798
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
1804
1799
  * yield* logger.log(`Looking up user ${id}`)
1805
1800
  * const result = yield* database.query(
1806
1801
  * `SELECT * FROM users WHERE id = ${id}`
@@ -1864,11 +1859,11 @@ export const provide: {
1864
1859
  *
1865
1860
  * // Create dependency layers
1866
1861
  * const databaseLayer = Layer.succeed(Database)({
1867
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
1862
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
1868
1863
  * })
1869
1864
  *
1870
1865
  * const loggerLayer = Layer.succeed(Logger)({
1871
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
1866
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
1872
1867
  * })
1873
1868
  *
1874
1869
  * // UserService depends on Database and Logger
@@ -1877,8 +1872,7 @@ export const provide: {
1877
1872
  * const logger = yield* Logger
1878
1873
  *
1879
1874
  * return {
1880
- * getUser: (id: string) =>
1881
- * Effect.gen(function*() {
1875
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
1882
1876
  * yield* logger.log(`Looking up user ${id}`)
1883
1877
  * const result = yield* database.query(
1884
1878
  * `SELECT * FROM users WHERE id = ${id}`
@@ -1938,11 +1932,11 @@ export const provideMerge: {
1938
1932
  *
1939
1933
  * // Create dependency layers
1940
1934
  * const databaseLayer = Layer.succeed(Database)({
1941
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
1935
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
1942
1936
  * })
1943
1937
  *
1944
1938
  * const loggerLayer = Layer.succeed(Logger)({
1945
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
1939
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
1946
1940
  * })
1947
1941
  *
1948
1942
  * // UserService depends on Database and Logger
@@ -1951,8 +1945,7 @@ export const provideMerge: {
1951
1945
  * const logger = yield* Logger
1952
1946
  *
1953
1947
  * return {
1954
- * getUser: (id: string) =>
1955
- * Effect.gen(function*() {
1948
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
1956
1949
  * yield* logger.log(`Looking up user ${id}`)
1957
1950
  * const result = yield* database.query(
1958
1951
  * `SELECT * FROM users WHERE id = ${id}`
@@ -2012,11 +2005,11 @@ export const provideMerge: {
2012
2005
  *
2013
2006
  * // Create dependency layers
2014
2007
  * const databaseLayer = Layer.succeed(Database)({
2015
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
2008
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
2016
2009
  * })
2017
2010
  *
2018
2011
  * const loggerLayer = Layer.succeed(Logger)({
2019
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
2012
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
2020
2013
  * })
2021
2014
  *
2022
2015
  * // UserService depends on Database and Logger
@@ -2025,8 +2018,7 @@ export const provideMerge: {
2025
2018
  * const logger = yield* Logger
2026
2019
  *
2027
2020
  * return {
2028
- * getUser: (id: string) =>
2029
- * Effect.gen(function*() {
2021
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
2030
2022
  * yield* logger.log(`Looking up user ${id}`)
2031
2023
  * const result = yield* database.query(
2032
2024
  * `SELECT * FROM users WHERE id = ${id}`
@@ -2093,11 +2085,11 @@ export const provideMerge: {
2093
2085
  *
2094
2086
  * // Create dependency layers
2095
2087
  * const databaseLayer = Layer.succeed(Database)({
2096
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
2088
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
2097
2089
  * })
2098
2090
  *
2099
2091
  * const loggerLayer = Layer.succeed(Logger)({
2100
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
2092
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
2101
2093
  * })
2102
2094
  *
2103
2095
  * // UserService depends on Database and Logger
@@ -2106,8 +2098,7 @@ export const provideMerge: {
2106
2098
  * const logger = yield* Logger
2107
2099
  *
2108
2100
  * return {
2109
- * getUser: (id: string) =>
2110
- * Effect.gen(function*() {
2101
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
2111
2102
  * yield* logger.log(`Looking up user ${id}`)
2112
2103
  * const result = yield* database.query(
2113
2104
  * `SELECT * FROM users WHERE id = ${id}`
@@ -2167,11 +2158,11 @@ export const provideMerge: {
2167
2158
  *
2168
2159
  * // Create dependency layers
2169
2160
  * const databaseLayer = Layer.succeed(Database)({
2170
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
2161
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
2171
2162
  * })
2172
2163
  *
2173
2164
  * const loggerLayer = Layer.succeed(Logger)({
2174
- * log: (msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`))
2165
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(`[LOG] ${msg}`)))
2175
2166
  * })
2176
2167
  *
2177
2168
  * // UserService depends on Database and Logger
@@ -2180,8 +2171,7 @@ export const provideMerge: {
2180
2171
  * const logger = yield* Logger
2181
2172
  *
2182
2173
  * return {
2183
- * getUser: (id: string) =>
2184
- * Effect.gen(function*() {
2174
+ * getUser: Effect.fn("UserService.getUser")(function*(id: string) {
2185
2175
  * yield* logger.log(`Looking up user ${id}`)
2186
2176
  * const result = yield* database.query(
2187
2177
  * `SELECT * FROM users WHERE id = ${id}`
@@ -2263,18 +2253,19 @@ export const provideMerge: {
2263
2253
  *
2264
2254
  * // Create database layer based on config
2265
2255
  * const dbLayer = Layer.succeed(Database)({
2266
- * query: (sql: string) =>
2256
+ * query: Effect.fn("Database.query")((sql: string) =>
2267
2257
  * Effect.succeed(
2268
2258
  * `Querying ${config.dbUrl}: ${sql}`
2269
- * )
2259
+ * ))
2270
2260
  * })
2271
2261
  *
2272
2262
  * // Create logger layer based on config
2273
2263
  * const loggerLayer = Layer.succeed(Logger)({
2274
- * log: (msg: string) =>
2264
+ * log: Effect.fn("Logger.log")((msg: string) =>
2275
2265
  * config.logLevel === "debug"
2276
2266
  * ? Effect.sync(() => console.log(`[DEBUG] ${msg}`))
2277
2267
  * : Effect.sync(() => console.log(msg))
2268
+ * )
2278
2269
  * })
2279
2270
  *
2280
2271
  * // Return combined layer
@@ -2333,18 +2324,19 @@ export const flatMap: {
2333
2324
  *
2334
2325
  * // Create database layer based on config
2335
2326
  * const dbLayer = Layer.succeed(Database)({
2336
- * query: (sql: string) =>
2327
+ * query: Effect.fn("Database.query")((sql: string) =>
2337
2328
  * Effect.succeed(
2338
2329
  * `Querying ${config.dbUrl}: ${sql}`
2339
- * )
2330
+ * ))
2340
2331
  * })
2341
2332
  *
2342
2333
  * // Create logger layer based on config
2343
2334
  * const loggerLayer = Layer.succeed(Logger)({
2344
- * log: (msg: string) =>
2335
+ * log: Effect.fn("Logger.log")((msg: string) =>
2345
2336
  * config.logLevel === "debug"
2346
2337
  * ? Effect.sync(() => console.log(`[DEBUG] ${msg}`))
2347
2338
  * : Effect.sync(() => console.log(msg))
2339
+ * )
2348
2340
  * })
2349
2341
  *
2350
2342
  * // Return combined layer
@@ -2403,18 +2395,19 @@ export const flatMap: {
2403
2395
  *
2404
2396
  * // Create database layer based on config
2405
2397
  * const dbLayer = Layer.succeed(Database)({
2406
- * query: (sql: string) =>
2398
+ * query: Effect.fn("Database.query")((sql: string) =>
2407
2399
  * Effect.succeed(
2408
2400
  * `Querying ${config.dbUrl}: ${sql}`
2409
- * )
2401
+ * ))
2410
2402
  * })
2411
2403
  *
2412
2404
  * // Create logger layer based on config
2413
2405
  * const loggerLayer = Layer.succeed(Logger)({
2414
- * log: (msg: string) =>
2406
+ * log: Effect.fn("Logger.log")((msg: string) =>
2415
2407
  * config.logLevel === "debug"
2416
2408
  * ? Effect.sync(() => console.log(`[DEBUG] ${msg}`))
2417
2409
  * : Effect.sync(() => console.log(msg))
2410
+ * )
2418
2411
  * })
2419
2412
  *
2420
2413
  * // Return combined layer
@@ -2475,10 +2468,10 @@ export const flatMap: {
2475
2468
  * // Simulate a database connection that might fail
2476
2469
  * const shouldFail = Math.random() > 0.5
2477
2470
  * if (shouldFail) {
2478
- * yield* Effect.fail(new DatabaseError({ message: "Connection failed" }))
2471
+ * return yield* new DatabaseError({ message: "Connection failed" })
2479
2472
  * }
2480
2473
  *
2481
- * return { query: (sql: string) => Effect.succeed(`Result: ${sql}`) }
2474
+ * return { query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`)) }
2482
2475
  * }))
2483
2476
  *
2484
2477
  * // Convert failures to fiber death - removes error from type
@@ -2682,8 +2675,8 @@ export const catchTag: {
2682
2675
  *
2683
2676
  * // Primary database layer that might fail
2684
2677
  * const primaryDatabaseLayer = Layer.effect(Database)(Effect.gen(function*() {
2685
- * yield* Effect.fail(new DatabaseError({ message: "Primary DB unreachable" }))
2686
- * return { query: (sql: string) => Effect.succeed(`Primary: ${sql}`) }
2678
+ * return yield* new DatabaseError({ message: "Primary DB unreachable" })
2679
+ * return { query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Primary: ${sql}`)) }
2687
2680
  * }))
2688
2681
  *
2689
2682
  * // Fallback layers for different error causes
@@ -2692,11 +2685,12 @@ export const catchTag: {
2692
2685
  * // For any cause/error, fallback to in-memory database
2693
2686
  * return Layer.mergeAll(
2694
2687
  * Layer.succeed(Database)({
2695
- * query: (sql: string) => Effect.succeed(`Memory: ${sql}`)
2688
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Memory: ${sql}`))
2696
2689
  * }),
2697
2690
  * Layer.succeed(Logger)({
2698
- * log: (msg: string) =>
2691
+ * log: Effect.fn("Logger.log")((msg: string) =>
2699
2692
  * Effect.sync(() => console.log(`[FALLBACK] ${msg}`))
2693
+ * )
2700
2694
  * })
2701
2695
  * )
2702
2696
  * })
@@ -2739,8 +2733,8 @@ export const catchCause: {
2739
2733
  *
2740
2734
  * // Primary database layer that might fail
2741
2735
  * const primaryDatabaseLayer = Layer.effect(Database)(Effect.gen(function*() {
2742
- * yield* Effect.fail(new DatabaseError({ message: "Primary DB unreachable" }))
2743
- * return { query: (sql: string) => Effect.succeed(`Primary: ${sql}`) }
2736
+ * return yield* new DatabaseError({ message: "Primary DB unreachable" })
2737
+ * return { query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Primary: ${sql}`)) }
2744
2738
  * }))
2745
2739
  *
2746
2740
  * // Fallback layers for different error causes
@@ -2749,11 +2743,12 @@ export const catchCause: {
2749
2743
  * // For any cause/error, fallback to in-memory database
2750
2744
  * return Layer.mergeAll(
2751
2745
  * Layer.succeed(Database)({
2752
- * query: (sql: string) => Effect.succeed(`Memory: ${sql}`)
2746
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Memory: ${sql}`))
2753
2747
  * }),
2754
2748
  * Layer.succeed(Logger)({
2755
- * log: (msg: string) =>
2749
+ * log: Effect.fn("Logger.log")((msg: string) =>
2756
2750
  * Effect.sync(() => console.log(`[FALLBACK] ${msg}`))
2751
+ * )
2757
2752
  * })
2758
2753
  * )
2759
2754
  * })
@@ -2796,8 +2791,8 @@ export const catchCause: {
2796
2791
  *
2797
2792
  * // Primary database layer that might fail
2798
2793
  * const primaryDatabaseLayer = Layer.effect(Database)(Effect.gen(function*() {
2799
- * yield* Effect.fail(new DatabaseError({ message: "Primary DB unreachable" }))
2800
- * return { query: (sql: string) => Effect.succeed(`Primary: ${sql}`) }
2794
+ * return yield* new DatabaseError({ message: "Primary DB unreachable" })
2795
+ * return { query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Primary: ${sql}`)) }
2801
2796
  * }))
2802
2797
  *
2803
2798
  * // Fallback layers for different error causes
@@ -2806,11 +2801,12 @@ export const catchCause: {
2806
2801
  * // For any cause/error, fallback to in-memory database
2807
2802
  * return Layer.mergeAll(
2808
2803
  * Layer.succeed(Database)({
2809
- * query: (sql: string) => Effect.succeed(`Memory: ${sql}`)
2804
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Memory: ${sql}`))
2810
2805
  * }),
2811
2806
  * Layer.succeed(Logger)({
2812
- * log: (msg: string) =>
2807
+ * log: Effect.fn("Logger.log")((msg: string) =>
2813
2808
  * Effect.sync(() => console.log(`[FALLBACK] ${msg}`))
2809
+ * )
2814
2810
  * })
2815
2811
  * )
2816
2812
  * })
@@ -2925,10 +2921,11 @@ export const updateService: {
2925
2921
  * const ref = yield* Ref.make(0)
2926
2922
  * return {
2927
2923
  * count: 0,
2928
- * increment: () =>
2924
+ * increment: Effect.fn("Counter.increment")(() =>
2929
2925
  * Ref.update(ref, (n) => n + 1).pipe(
2930
2926
  * Effect.flatMap(() => Ref.get(ref))
2931
2927
  * )
2928
+ * )
2932
2929
  * }
2933
2930
  * }))
2934
2931
  *
@@ -2983,13 +2980,11 @@ export const fresh = <A, E, R>(self: Layer<A, E, R>): Layer<A, E, R> =>
2983
2980
  * yield* Console.log("Starting HTTP server...")
2984
2981
  *
2985
2982
  * return {
2986
- * start: () =>
2987
- * Effect.gen(function*() {
2983
+ * start: Effect.fn("HttpServer.start")(function*() {
2988
2984
  * yield* Console.log("Server listening on port 3000")
2989
2985
  * return "Server started"
2990
2986
  * }),
2991
- * stop: () =>
2992
- * Effect.gen(function*() {
2987
+ * stop: Effect.fn("HttpServer.stop")(function*() {
2993
2988
  * yield* Console.log("Server stopped gracefully")
2994
2989
  * return "Server stopped"
2995
2990
  * })
@@ -2997,7 +2992,7 @@ export const fresh = <A, E, R>(self: Layer<A, E, R>): Layer<A, E, R> =>
2997
2992
  * }))
2998
2993
  *
2999
2994
  * const loggerLayer = Layer.succeed(Logger)({
3000
- * log: (msg: string) => Console.log(`[LOG] ${msg}`)
2995
+ * log: Effect.fn("Logger.log")((msg: string) => Console.log(`[LOG] ${msg}`))
3001
2996
  * })
3002
2997
  *
3003
2998
  * // Application layer combining all services
@@ -3268,7 +3263,7 @@ export interface SpanOptions extends Tracer.SpanOptions {
3268
3263
  * yield* Console.log((parentSpan as Tracer.Span).name) // "database-init"
3269
3264
  *
3270
3265
  * return {
3271
- * query: (sql: string) => Effect.succeed(`Result: ${sql}`)
3266
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`))
3272
3267
  * }
3273
3268
  * })).pipe(Layer.provide(Layer.span("database-init")))
3274
3269
  *
@@ -3327,7 +3322,7 @@ export const span = (
3327
3322
  * yield* Console.log(parentSpan.spanId) // "42"
3328
3323
  *
3329
3324
  * return {
3330
- * query: (sql: string) => Effect.succeed(`Result: ${sql}`)
3325
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`))
3331
3326
  * }
3332
3327
  * })
3333
3328
  * ).pipe(Layer.provide(Layer.parentSpan(Tracer.externalSpan({
@@ -3367,14 +3362,14 @@ export const parentSpan = (span: Tracer.AnySpan): Layer<Tracer.ParentSpan> =>
3367
3362
  * yield* Effect.log("Connecting to database")
3368
3363
  * yield* Effect.sleep("100 millis")
3369
3364
  * return {
3370
- * query: (sql: string) => Effect.succeed(`Result: ${sql}`)
3365
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`))
3371
3366
  * }
3372
3367
  * })).pipe(Layer.withSpan("database-initialization", {
3373
3368
  * attributes: { dbType: "postgres" }
3374
3369
  * }))
3375
3370
  *
3376
3371
  * const loggerLayer = Layer.succeed(Logger, {
3377
- * log: (msg: string) => Effect.sync(() => console.log(msg))
3372
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
3378
3373
  * }).pipe(Layer.withSpan("logger-initialization"))
3379
3374
  *
3380
3375
  * // Combine traced layers
@@ -3426,14 +3421,14 @@ export const withSpan: {
3426
3421
  * yield* Effect.log("Connecting to database")
3427
3422
  * yield* Effect.sleep("100 millis")
3428
3423
  * return {
3429
- * query: (sql: string) => Effect.succeed(`Result: ${sql}`)
3424
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`))
3430
3425
  * }
3431
3426
  * })).pipe(Layer.withSpan("database-initialization", {
3432
3427
  * attributes: { dbType: "postgres" }
3433
3428
  * }))
3434
3429
  *
3435
3430
  * const loggerLayer = Layer.succeed(Logger, {
3436
- * log: (msg: string) => Effect.sync(() => console.log(msg))
3431
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
3437
3432
  * }).pipe(Layer.withSpan("logger-initialization"))
3438
3433
  *
3439
3434
  * // Combine traced layers
@@ -3487,14 +3482,14 @@ export const withSpan: {
3487
3482
  * yield* Effect.log("Connecting to database")
3488
3483
  * yield* Effect.sleep("100 millis")
3489
3484
  * return {
3490
- * query: (sql: string) => Effect.succeed(`Result: ${sql}`)
3485
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`Result: ${sql}`))
3491
3486
  * }
3492
3487
  * })).pipe(Layer.withSpan("database-initialization", {
3493
3488
  * attributes: { dbType: "postgres" }
3494
3489
  * }))
3495
3490
  *
3496
3491
  * const loggerLayer = Layer.succeed(Logger, {
3497
- * log: (msg: string) => Effect.sync(() => console.log(msg))
3492
+ * log: Effect.fn("Logger.log")((msg: string) => Effect.sync(() => console.log(msg)))
3498
3493
  * }).pipe(Layer.withSpan("logger-initialization"))
3499
3494
  *
3500
3495
  * // Combine traced layers
@@ -3576,14 +3571,14 @@ export const withSpan: {
3576
3571
  * const DatabaseLayer = Layer.effect(Database, Effect.gen(function*() {
3577
3572
  * yield* Effect.log("Connecting to database")
3578
3573
  * return {
3579
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
3574
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
3580
3575
  * }
3581
3576
  * }))
3582
3577
  *
3583
3578
  * const CacheLayer = Layer.effect(Cache, Effect.gen(function*() {
3584
3579
  * yield* Effect.log("Connecting to cache")
3585
3580
  * return {
3586
- * get: (key: string) => Effect.succeed(`Cache: ${key}`)
3581
+ * get: Effect.fn("Cache.get")((key: string) => Effect.succeed(`Cache: ${key}`))
3587
3582
  * }
3588
3583
  * }))
3589
3584
  *
@@ -3636,14 +3631,14 @@ export const withParentSpan: {
3636
3631
  * const DatabaseLayer = Layer.effect(Database, Effect.gen(function*() {
3637
3632
  * yield* Effect.log("Connecting to database")
3638
3633
  * return {
3639
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
3634
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
3640
3635
  * }
3641
3636
  * }))
3642
3637
  *
3643
3638
  * const CacheLayer = Layer.effect(Cache, Effect.gen(function*() {
3644
3639
  * yield* Effect.log("Connecting to cache")
3645
3640
  * return {
3646
- * get: (key: string) => Effect.succeed(`Cache: ${key}`)
3641
+ * get: Effect.fn("Cache.get")((key: string) => Effect.succeed(`Cache: ${key}`))
3647
3642
  * }
3648
3643
  * }))
3649
3644
  *
@@ -3698,14 +3693,14 @@ export const withParentSpan: {
3698
3693
  * const DatabaseLayer = Layer.effect(Database, Effect.gen(function*() {
3699
3694
  * yield* Effect.log("Connecting to database")
3700
3695
  * return {
3701
- * query: (sql: string) => Effect.succeed(`DB: ${sql}`)
3696
+ * query: Effect.fn("Database.query")((sql: string) => Effect.succeed(`DB: ${sql}`))
3702
3697
  * }
3703
3698
  * }))
3704
3699
  *
3705
3700
  * const CacheLayer = Layer.effect(Cache, Effect.gen(function*() {
3706
3701
  * yield* Effect.log("Connecting to cache")
3707
3702
  * return {
3708
- * get: (key: string) => Effect.succeed(`Cache: ${key}`)
3703
+ * get: Effect.fn("Cache.get")((key: string) => Effect.succeed(`Cache: ${key}`))
3709
3704
  * }
3710
3705
  * }))
3711
3706
  *