@effect-app/infra 4.0.0-beta.7 → 4.0.0-beta.70

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 (142) hide show
  1. package/CHANGELOG.md +447 -0
  2. package/dist/CUPS.d.ts +3 -3
  3. package/dist/CUPS.d.ts.map +1 -1
  4. package/dist/CUPS.js +3 -3
  5. package/dist/Emailer/Sendgrid.js +1 -1
  6. package/dist/Emailer/service.d.ts +3 -3
  7. package/dist/Emailer/service.d.ts.map +1 -1
  8. package/dist/Emailer/service.js +3 -3
  9. package/dist/MainFiberSet.d.ts +2 -2
  10. package/dist/MainFiberSet.d.ts.map +1 -1
  11. package/dist/MainFiberSet.js +3 -3
  12. package/dist/Model/Repository/internal/internal.d.ts +3 -3
  13. package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
  14. package/dist/Model/Repository/internal/internal.js +11 -7
  15. package/dist/Model/Repository/makeRepo.d.ts +2 -2
  16. package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
  17. package/dist/Model/Repository/makeRepo.js +1 -1
  18. package/dist/Model/query/dsl.d.ts +9 -9
  19. package/dist/Operations.d.ts +2 -2
  20. package/dist/Operations.d.ts.map +1 -1
  21. package/dist/Operations.js +3 -3
  22. package/dist/OperationsRepo.d.ts +2 -2
  23. package/dist/OperationsRepo.d.ts.map +1 -1
  24. package/dist/OperationsRepo.js +3 -3
  25. package/dist/QueueMaker/SQLQueue.d.ts +3 -5
  26. package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
  27. package/dist/QueueMaker/SQLQueue.js +9 -7
  28. package/dist/QueueMaker/memQueue.d.ts.map +1 -1
  29. package/dist/QueueMaker/memQueue.js +10 -9
  30. package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
  31. package/dist/QueueMaker/sbqueue.js +11 -9
  32. package/dist/RequestContext.d.ts +5 -5
  33. package/dist/RequestContext.d.ts.map +1 -1
  34. package/dist/RequestContext.js +4 -4
  35. package/dist/RequestFiberSet.d.ts +2 -2
  36. package/dist/RequestFiberSet.d.ts.map +1 -1
  37. package/dist/RequestFiberSet.js +5 -5
  38. package/dist/Store/ContextMapContainer.d.ts +3 -3
  39. package/dist/Store/ContextMapContainer.d.ts.map +1 -1
  40. package/dist/Store/ContextMapContainer.js +3 -3
  41. package/dist/Store/Cosmos.js +1 -1
  42. package/dist/Store/Disk.d.ts.map +1 -1
  43. package/dist/Store/Disk.js +3 -4
  44. package/dist/Store/Memory.d.ts +2 -2
  45. package/dist/Store/Memory.d.ts.map +1 -1
  46. package/dist/Store/Memory.js +4 -4
  47. package/dist/Store/service.d.ts +3 -3
  48. package/dist/Store/service.d.ts.map +1 -1
  49. package/dist/Store/service.js +4 -4
  50. package/dist/adapters/SQL/Model.d.ts +2 -5
  51. package/dist/adapters/SQL/Model.d.ts.map +1 -1
  52. package/dist/adapters/SQL/Model.js +21 -13
  53. package/dist/adapters/ServiceBus.d.ts +6 -6
  54. package/dist/adapters/ServiceBus.d.ts.map +1 -1
  55. package/dist/adapters/ServiceBus.js +9 -9
  56. package/dist/adapters/cosmos-client.d.ts +2 -2
  57. package/dist/adapters/cosmos-client.d.ts.map +1 -1
  58. package/dist/adapters/cosmos-client.js +3 -3
  59. package/dist/adapters/logger.d.ts.map +1 -1
  60. package/dist/adapters/memQueue.d.ts +2 -2
  61. package/dist/adapters/memQueue.d.ts.map +1 -1
  62. package/dist/adapters/memQueue.js +3 -3
  63. package/dist/adapters/mongo-client.d.ts +2 -2
  64. package/dist/adapters/mongo-client.d.ts.map +1 -1
  65. package/dist/adapters/mongo-client.js +3 -3
  66. package/dist/adapters/redis-client.d.ts +3 -3
  67. package/dist/adapters/redis-client.d.ts.map +1 -1
  68. package/dist/adapters/redis-client.js +3 -3
  69. package/dist/api/ContextProvider.d.ts +6 -6
  70. package/dist/api/ContextProvider.d.ts.map +1 -1
  71. package/dist/api/ContextProvider.js +6 -6
  72. package/dist/api/internal/auth.d.ts +1 -1
  73. package/dist/api/internal/events.d.ts.map +1 -1
  74. package/dist/api/internal/events.js +7 -5
  75. package/dist/api/layerUtils.d.ts +5 -5
  76. package/dist/api/layerUtils.d.ts.map +1 -1
  77. package/dist/api/layerUtils.js +5 -5
  78. package/dist/api/routing/middleware/RouterMiddleware.d.ts +3 -3
  79. package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
  80. package/dist/api/routing/schema/jwt.d.ts +1 -1
  81. package/dist/api/routing/schema/jwt.d.ts.map +1 -1
  82. package/dist/api/routing/schema/jwt.js +1 -1
  83. package/dist/api/routing.d.ts.map +1 -1
  84. package/dist/api/routing.js +1 -1
  85. package/dist/errorReporter.d.ts +1 -1
  86. package/dist/errorReporter.d.ts.map +1 -1
  87. package/dist/errorReporter.js +1 -1
  88. package/dist/fileUtil.js +1 -1
  89. package/dist/logger.d.ts.map +1 -1
  90. package/dist/rateLimit.js +1 -1
  91. package/examples/query.ts +28 -24
  92. package/package.json +16 -16
  93. package/src/CUPS.ts +2 -2
  94. package/src/Emailer/Sendgrid.ts +1 -1
  95. package/src/Emailer/service.ts +2 -2
  96. package/src/MainFiberSet.ts +2 -2
  97. package/src/Model/Repository/internal/internal.ts +11 -8
  98. package/src/Model/Repository/makeRepo.ts +2 -2
  99. package/src/Operations.ts +2 -2
  100. package/src/OperationsRepo.ts +2 -2
  101. package/src/QueueMaker/SQLQueue.ts +10 -10
  102. package/src/QueueMaker/memQueue.ts +41 -42
  103. package/src/QueueMaker/sbqueue.ts +65 -62
  104. package/src/RequestContext.ts +3 -3
  105. package/src/RequestFiberSet.ts +4 -4
  106. package/src/Store/ContextMapContainer.ts +2 -2
  107. package/src/Store/Cosmos.ts +10 -10
  108. package/src/Store/Disk.ts +2 -3
  109. package/src/Store/Memory.ts +4 -6
  110. package/src/Store/service.ts +3 -3
  111. package/src/adapters/SQL/Model.ts +76 -71
  112. package/src/adapters/ServiceBus.ts +8 -8
  113. package/src/adapters/cosmos-client.ts +2 -2
  114. package/src/adapters/memQueue.ts +2 -2
  115. package/src/adapters/mongo-client.ts +2 -2
  116. package/src/adapters/redis-client.ts +2 -2
  117. package/src/api/ContextProvider.ts +11 -11
  118. package/src/api/internal/events.ts +5 -4
  119. package/src/api/layerUtils.ts +8 -8
  120. package/src/api/routing/middleware/RouterMiddleware.ts +4 -4
  121. package/src/api/routing/schema/jwt.ts +2 -3
  122. package/src/api/routing.ts +4 -3
  123. package/src/errorReporter.ts +1 -1
  124. package/src/fileUtil.ts +1 -1
  125. package/src/rateLimit.ts +2 -2
  126. package/test/contextProvider.test.ts +5 -5
  127. package/test/controller.test.ts +9 -7
  128. package/test/dist/contextProvider.test.d.ts.map +1 -1
  129. package/test/dist/controller.test.d.ts.map +1 -1
  130. package/test/dist/fixtures.d.ts +16 -7
  131. package/test/dist/fixtures.d.ts.map +1 -1
  132. package/test/dist/fixtures.js +11 -9
  133. package/test/dist/query.test.d.ts.map +1 -1
  134. package/test/dist/rawQuery.test.d.ts.map +1 -1
  135. package/test/dist/requires.test.d.ts.map +1 -1
  136. package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
  137. package/test/fixtures.ts +10 -8
  138. package/test/query.test.ts +156 -10
  139. package/test/rawQuery.test.ts +19 -17
  140. package/test/requires.test.ts +6 -5
  141. package/test/rpc-multi-middleware.test.ts +73 -4
  142. package/tsconfig.json +0 -1
package/dist/fileUtil.js CHANGED
@@ -73,4 +73,4 @@ export function withFileLock(filePath, action) {
73
73
  })
74
74
  .pipe(Effect.scoped);
75
75
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZmlsZVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHbkMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUNuQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFHdEMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsUUFBZ0I7SUFDbkQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNsSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBYztJQUVkLE9BQU8sQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLENB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
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZVV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZmlsZVV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFBO0FBQzNCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFHbkMsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzVCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQTtBQUNuQixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxRQUFRLE1BQU0saUJBQWlCLENBQUE7QUFHdEMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0FBQ3ZELENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsUUFBZ0I7SUFDbkQsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxRQUFnQjtJQUN2QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUNsSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsTUFBYztJQUVkLE9BQU8sQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLENB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
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;iBAC0O,GAAG;eAAkF,GAAG;eAAkF,GAAG;cAAiF,GAAG;eAAkF,GAAG;8DAA+G,GAAI;CAD5oB,CAAA"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW;iBACiO,GAAG;eAAkF,GAAG;eAAkF,GAAG;cAAiF,GAAG;eAAkF,GAAG;8DAA+G,GAAI;CADnoB,CAAA"}
package/dist/rateLimit.js CHANGED
@@ -66,4 +66,4 @@ export function naiveRateLimit(n, d) {
66
66
  .forEach(batch, forEachItem, { concurrency: n })
67
67
  .pipe(Effect.flatMap(forEachBatch))))));
68
68
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JhdGVMaW1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04sOEVBQThFO0FBQzlFLHVFQUF1RTtBQUN2RSxtRkFBbUY7QUFDbkYsK0JBQStCO0FBQy9CLE1BQU07QUFDTiw2RUFBNkU7QUFDN0Usd0dBQXdHO0FBQ3hHLHVCQUF1QjtBQUN2QixvQ0FBb0M7QUFDcEMscUJBQXFCO0FBQ3JCLG1EQUFtRDtBQUNuRCxnQ0FBZ0M7QUFDaEMsMkJBQTJCO0FBQzNCLHlDQUF5QztBQUN6Qyw0QkFBNEI7QUFDNUIscUNBQXFDO0FBQ3JDLGtCQUFrQjtBQUNsQixVQUFVO0FBQ1YsTUFBTTtBQUNOLElBQUk7QUFFSixPQUFPLEVBQUUsS0FBSyxFQUFpQixNQUFNLEVBQXNCLE1BQU0sWUFBWSxDQUFBO0FBRzdFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE9BQWUsRUFBRSxRQUEyQjtJQUNsRixPQUFPLENBQUMsSUFBZSxFQUF1RSxFQUFFO1FBQzlGLE9BQU8sQ0FBVSxNQUE4QixFQUFFLEVBQUUsQ0FDakQsTUFBTSxDQUFDLG1CQUFtQixDQUN4QixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2xCLE9BQU8sQ0FBQyxNQUFNLENBQUM7YUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUM5QyxDQUFDLENBQ0wsQ0FBQyxDQUNQLENBQUE7SUFDTCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsQ0FBUyxFQUNULFdBQXNGLEVBQ3RGLFlBQTJFO0lBRTNFLE9BQU8sQ0FBQyxLQUFrQixFQUFFLEVBQUUsQ0FDNUIsTUFBTSxDQUFDLE9BQU8sQ0FDWixLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFDeEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDUCxNQUFNO1NBQ0gsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO1NBQ3RFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBcUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQ3hFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUMzQixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxLQUFLLENBQ25CLENBQVMsRUFDVCxXQUFzRixFQUN0RixZQUEyRTtJQUUzRSxPQUFPLENBQUMsS0FBa0IsRUFBRSxFQUFFLENBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQ1osS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQ3hCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ1AsTUFBTTtTQUNILE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsQ0FBQztTQUN0RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN6RSxDQUFBO0FBQ0wsQ0FBQztBQUVELDZCQUE2QjtBQUM3QixlQUFlO0FBQ2YsV0FBVztBQUNYLE1BQU07QUFDTixzQ0FBc0M7QUFDdEMsNkJBQTZCO0FBQzdCLHVEQUF1RDtBQUN2RCxpRUFBaUU7QUFDakUsV0FBVztBQUNYLHFDQUFxQztBQUNyQyxzQkFBc0I7QUFDdEIsd0NBQXdDO0FBQ3hDLG1GQUFtRjtBQUNuRixzQkFBc0I7QUFDdEIsSUFBSTtBQUVKLE1BQU0sVUFBVSxjQUFjLENBQzVCLENBQVMsRUFDVCxDQUFvQjtJQUVwQixPQUFPLENBQUksS0FBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNqQyxXQUE2QyxFQUM3QyxZQUFtRCxFQUNuRCxFQUFFLENBQ0YsTUFBTSxDQUFDLE9BQU8sQ0FDWixLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsRUFDeEIsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDWCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNSLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSTtRQUNiLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUNsQixNQUFNO1NBQ0gsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDL0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FDdEMsQ0FBQyxDQUNQLENBQUMsQ0FBQTtBQUNOLENBQUMifQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JhdGVMaW1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQ04sOEVBQThFO0FBQzlFLHVFQUF1RTtBQUN2RSxtRkFBbUY7QUFDbkYsK0JBQStCO0FBQy9CLE1BQU07QUFDTiw2RUFBNkU7QUFDN0Usd0dBQXdHO0FBQ3hHLHVCQUF1QjtBQUN2QixvQ0FBb0M7QUFDcEMscUJBQXFCO0FBQ3JCLG1EQUFtRDtBQUNuRCxnQ0FBZ0M7QUFDaEMsMkJBQTJCO0FBQzNCLHlDQUF5QztBQUN6Qyw0QkFBNEI7QUFDNUIscUNBQXFDO0FBQ3JDLGtCQUFrQjtBQUNsQixVQUFVO0FBQ1YsTUFBTTtBQUNOLElBQUk7QUFFSixPQUFPLEVBQUUsS0FBSyxFQUFpQixNQUFNLEVBQXNCLE1BQU0sWUFBWSxDQUFBO0FBRzdFOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QixDQUFDLE9BQWUsRUFBRSxRQUEyQjtJQUNsRixPQUFPLENBQUMsSUFBZSxFQUF1RSxFQUFFO1FBQzlGLE9BQU8sQ0FBVSxNQUE4QixFQUFFLEVBQUUsQ0FDakQsTUFBTSxDQUFDLG1CQUFtQixDQUN4QixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQ2xCLE9BQU8sQ0FBQyxNQUFNLENBQUM7YUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUM5QyxDQUFDLENBQ0wsQ0FBQyxDQUNQLENBQUE7SUFDTCxDQUFDLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsQ0FBUyxFQUNULFdBQXNGLEVBQ3RG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
package/examples/query.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { Effect, Layer, ManagedRuntime, S, Schema } from "effect-app"
1
+ import { expectTypeOf } from "@effect/vitest"
2
+ import { Effect, Layer, ManagedRuntime, S } from "effect-app"
2
3
  import { makeRepo } from "../src/Model.js"
3
- import { and, make, one, or, order, page, project, QueryWhere, where } from "../src/Model/query.js"
4
+ import { and, make, one, or, order, page, project, type QueryWhere, where } from "../src/Model/query.js"
4
5
  import { MemoryStoreLive } from "../src/Store/Memory.js"
5
- import { expectTypeOf } from "@effect/vitest"
6
6
 
7
7
  const str = S.Struct({ _tag: S.Literal("string"), value: S.String })
8
- const num = S.Struct({ _tag: S.Literal("number"), value: S.Number })
8
+ const num = S.Struct({ _tag: S.Literal("number"), value: S.Finite })
9
9
  const someUnion = S.Union(str, num)
10
10
 
11
11
  export class Something extends S.TaggedClass<Something>()("Something", {
@@ -100,31 +100,35 @@ const rt = ManagedRuntime.make(SomethingRepo.Test)
100
100
  rt.runFork(program)
101
101
 
102
102
  const test1 = make<Union.Encoded>().pipe(
103
- where("union._tag", "string"),
103
+ where("union._tag", "string")
104
104
  )
105
105
 
106
- expectTypeOf(test1).toEqualTypeOf<QueryWhere<Union.Encoded, {
107
- readonly _tag: "Something";
108
- readonly id: string;
109
- readonly displayName: string;
110
- readonly n: string;
106
+ expectTypeOf(test1).toEqualTypeOf<
107
+ QueryWhere<Union.Encoded, {
108
+ readonly _tag: "Something"
109
+ readonly id: string
110
+ readonly displayName: string
111
+ readonly n: string
111
112
  readonly union: {
112
- readonly _tag: "string";
113
- readonly value: string;
114
- };
115
- }>>()
113
+ readonly _tag: "string"
114
+ readonly value: string
115
+ }
116
+ }>
117
+ >()
116
118
 
117
119
  const testneq1 = make<Union.Encoded>().pipe(
118
- where("union._tag", "neq", "string"),
120
+ where("union._tag", "neq", "string")
119
121
  )
120
122
 
121
- expectTypeOf(testneq1).toEqualTypeOf<QueryWhere<Union.Encoded, {
122
- readonly _tag: "Something";
123
- readonly id: string;
124
- readonly displayName: string;
125
- readonly n: string;
123
+ expectTypeOf(testneq1).toEqualTypeOf<
124
+ QueryWhere<Union.Encoded, {
125
+ readonly _tag: "Something"
126
+ readonly id: string
127
+ readonly displayName: string
128
+ readonly n: string
126
129
  readonly union: {
127
- readonly _tag: "number";
128
- readonly value: number;
129
- };
130
- }>>()
130
+ readonly _tag: "number"
131
+ readonly value: number
132
+ }
133
+ }>
134
+ >()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/infra",
3
- "version": "4.0.0-beta.7",
3
+ "version": "4.0.0-beta.70",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -8,46 +8,46 @@
8
8
  "change-case": "^5.4.4",
9
9
  "cross-fetch": "^4.1.0",
10
10
  "express-oauth2-jwt-bearer": "^1.7.4",
11
- "fast-check": "~4.5.3",
11
+ "fast-check": "~4.6.0",
12
12
  "path-parser": "^6.1.0",
13
13
  "proper-lockfile": "^4.1.2",
14
14
  "pure-rand": "7.0.1",
15
15
  "query-string": "^9.3.1",
16
- "effect-app": "4.0.0-beta.6"
16
+ "effect-app": "4.0.0-beta.70"
17
17
  },
18
18
  "devDependencies": {
19
- "@azure/cosmos": "^4.9.1",
19
+ "@azure/cosmos": "^4.9.2",
20
20
  "@azure/service-bus": "^7.9.5",
21
- "@sentry/node": "10.40.0",
22
- "@sentry/opentelemetry": "10.40.0",
21
+ "@sentry/node": "10.47.0",
22
+ "@sentry/opentelemetry": "10.47.0",
23
23
  "@types/express": "^5.0.6",
24
- "@types/node": "25.3.3",
24
+ "@types/node": "25.5.2",
25
25
  "@types/proper-lockfile": "^4.1.4",
26
26
  "@types/redis": "^2.8.32",
27
27
  "@types/redlock": "^4.0.8",
28
28
  "express": "^5.2.1",
29
29
  "jwks-rsa": "2.1.4",
30
30
  "jwt-decode": "^4.0.0",
31
- "mongodb": "7.1.0",
31
+ "mongodb": "7.1.1",
32
32
  "redis": "^3.1.2",
33
33
  "redlock": "^4.2.0",
34
34
  "strip-ansi": "^7.2.0",
35
- "typescript": "~5.9.3",
36
- "vitest": "^4.0.18",
37
- "@effect-app/eslint-shared-config": "0.5.7-beta.1"
35
+ "typescript": "~6.0.2",
36
+ "vitest": "^4.1.3",
37
+ "@effect-app/eslint-shared-config": "0.5.7-beta.7"
38
38
  },
39
39
  "peerDependencies": {
40
- "@azure/cosmos": "^4.9.1",
40
+ "@azure/cosmos": "^4.9.2",
41
41
  "@azure/service-bus": "^7.9.5",
42
- "@effect/vitest": "^4.0.0-beta.25",
42
+ "@effect/vitest": "^4.0.0-beta.46",
43
43
  "@sendgrid/helpers": "^8.0.0",
44
44
  "@sendgrid/mail": "^8.1.6",
45
- "@sentry/node": "10.40.0",
46
- "@sentry/opentelemetry": "10.40.0",
45
+ "@sentry/node": "10.47.0",
46
+ "@sentry/opentelemetry": "10.47.0",
47
47
  "jwt-decode": "^4.0.0",
48
48
  "redis": "^3.1.2",
49
49
  "redlock": "^4.2.0",
50
- "effect": "^4.0.0-beta.25",
50
+ "effect": "^4.0.0-beta.46",
51
51
  "express": "^5.2.1"
52
52
  },
53
53
  "typesVersions": {
package/src/CUPS.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { type FileOptions, tempFile } from "@effect-app/infra/fileUtil"
2
2
  import cp from "child_process"
3
- import { Config, Effect, Layer, Option, Predicate, S, ServiceMap } from "effect-app"
3
+ import { Config, Context, Effect, Layer, Option, Predicate, S } from "effect-app"
4
4
  import { pretty } from "effect-app/utils"
5
5
  import fs from "fs"
6
6
  import os from "os"
@@ -100,7 +100,7 @@ export const CUPSConfig = Config.all({
100
100
  )
101
101
  })
102
102
 
103
- export class CUPS extends ServiceMap.Service<CUPS>()("effect-app/CUPS", {
103
+ export class CUPS extends Context.Service<CUPS>()("effect-app/CUPS", {
104
104
  make: Effect.gen(function*() {
105
105
  const config = yield* CUPSConfig
106
106
  const serverUrl = Option.getOrUndefined(config.server)
@@ -42,7 +42,7 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
42
42
  (err, result) =>
43
43
  err
44
44
  ? resume(Effect.fail(err))
45
- : resume(Effect.sync(() => result!))
45
+ : resume(Effect.sync(() => result))
46
46
  )
47
47
  )
48
48
  .pipe(Effect.mapError((raw) => new SendMailError({ raw })))
@@ -1,13 +1,13 @@
1
1
  import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js"
2
2
  import type { ResponseError } from "@sendgrid/mail"
3
- import { Data, type Effect, type NonEmptyReadonlyArray, type Redacted, ServiceMap } from "effect-app"
3
+ import { Context, Data, type Effect, type NonEmptyReadonlyArray, type Redacted } from "effect-app"
4
4
  import type { Email } from "effect-app/Schema"
5
5
 
6
6
  export class SendMailError extends Data.TaggedError("SendMailError")<{
7
7
  readonly raw: Error | ResponseError
8
8
  }> {}
9
9
 
10
- export class Emailer extends ServiceMap.Opaque<Emailer, {
10
+ export class Emailer extends Context.Opaque<Emailer, {
11
11
  sendMail: (msg: EmailMsgOptionalFrom) => Effect.Effect<void, SendMailError>
12
12
  }>()("effect-app/Emailer") {}
13
13
 
@@ -1,4 +1,4 @@
1
- import { Effect, Fiber, FiberSet, Layer, ServiceMap } from "effect-app"
1
+ import { Context, Effect, Fiber, FiberSet, Layer } from "effect-app"
2
2
  import type {} from "effect/Scope"
3
3
  import { InfraLogger } from "./logger.js"
4
4
  import { reportNonInterruptedFailureCause } from "./QueueMaker/errors.js"
@@ -62,7 +62,7 @@ const make = Effect.gen(function*() {
62
62
  * you should register these long running fibers in a FiberSet, and join them at the end of your main program.
63
63
  * This way any errors will blow up the main program instead of fibers dying unknowingly.
64
64
  */
65
- export class MainFiberSet extends ServiceMap.Service<MainFiberSet>()("MainFiberSet", { make }) {
65
+ export class MainFiberSet extends Context.Service<MainFiberSet>()("MainFiberSet", { make }) {
66
66
  static readonly Live = Layer.effect(this, this.make)
67
67
  static readonly JoinLive = this.asEffect().pipe(
68
68
  Effect.andThen((_) => _.join),
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import type {} from "effect/Equal"
3
3
  import type {} from "effect/Hash"
4
- import { Array, Chunk, Effect, Equivalence, flow, type NonEmptyReadonlyArray, Option, pipe, Pipeable, PubSub, Result, S, SchemaAST, ServiceMap, Unify } from "effect-app"
4
+ import { Array, Chunk, Context, Effect, Equivalence, flow, type NonEmptyReadonlyArray, Option, pipe, Pipeable, PubSub, Result, S, SchemaAST, Unify } from "effect-app"
5
5
  import { toNonEmptyArray } from "effect-app/Array"
6
6
  import { NotFoundError } from "effect-app/client/errors"
7
7
  import { flatMapOption } from "effect-app/Effect"
@@ -55,14 +55,14 @@ export function makeRepoInternal<
55
55
 
56
56
  function make<RInitial = never, E = never, RPublish = never, RCtx = never>(
57
57
  args: [Evt] extends [never] ? {
58
- schemaContext?: ServiceMap.ServiceMap<RCtx>
58
+ schemaContext?: Context.Context<RCtx>
59
59
  makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined
60
60
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
61
61
  partitionValue?: (e?: Encoded) => string
62
62
  }
63
63
  }
64
64
  : {
65
- schemaContext?: ServiceMap.ServiceMap<RCtx>
65
+ schemaContext?: Context.Context<RCtx>
66
66
  publishEvents: (evt: NonEmptyReadonlyArray<Evt>) => Effect.Effect<void, never, RPublish>
67
67
  makeInitial?: Effect.Effect<readonly T[], E, RInitial> | undefined
68
68
  config?: Omit<StoreConfig<Encoded>, "partitionValue"> & {
@@ -72,7 +72,7 @@ export function makeRepoInternal<
72
72
  ) {
73
73
  return Effect
74
74
  .gen(function*() {
75
- const rctx: ServiceMap.ServiceMap<RCtx> = args.schemaContext ?? ServiceMap.empty() as any
75
+ const rctx: Context.Context<RCtx> = args.schemaContext ?? Context.empty() as any
76
76
  const provideRctx = Effect.provide(rctx)
77
77
  const encodeMany = flow(
78
78
  S.encodeEffect(S.Array(schema)),
@@ -113,11 +113,14 @@ export function makeRepoInternal<
113
113
  let ast = _.ast
114
114
  if (ast._tag === "Declaration") ast = ast.typeParameters[0]!
115
115
 
116
- // In v4, to get the encoded (from) side of a schema, use SchemaAST.toEncoded
117
116
  const pickIdFromAst = (a: SchemaAST.AST) => {
118
- const encoded = SchemaAST.toEncoded(a)
119
- if (SchemaAST.isObjects(encoded)) {
120
- const field = encoded.propertySignatures.find((_) => _.name === idKey)
117
+ // Unwrap Declaration (e.g. TaggedClass) to get the underlying Objects AST
118
+ let inner = a
119
+ if (inner._tag === "Declaration") inner = inner.typeParameters[0]!
120
+ // Pick from the original AST to preserve the full encoding chain (e.g. decodeTo transformations).
121
+ // Using toEncoded would lose transformation info needed to encode Type -> Encoded.
122
+ if (SchemaAST.isObjects(inner)) {
123
+ const field = inner.propertySignatures.find((_) => _.name === idKey)
121
124
  if (field) {
122
125
  return S.Struct({ [idKey]: S.make(field.type) }) as unknown as Codec<T, Encoded>
123
126
  }
@@ -7,7 +7,7 @@
7
7
  // import type { ParserEnv } from "effect-app/Schema/custom/Parser"
8
8
  import type {} from "effect/Equal"
9
9
  import type {} from "effect/Hash"
10
- import { Effect, type NonEmptyReadonlyArray, type S, type ServiceMap } from "effect-app"
10
+ import { type Context, Effect, type NonEmptyReadonlyArray, type S } from "effect-app"
11
11
  import type { StoreConfig, StoreMaker } from "../../Store.js"
12
12
  import type { FieldValues } from "../filter/types.js"
13
13
  import { type ExtendedRepository, extendRepo } from "./ext.js"
@@ -52,7 +52,7 @@ export interface RepositoryOptions<
52
52
  * Optional context to be provided to Schema decode/encode.
53
53
  * Useful for effectful transformations like XWithItems, where items is a transformation retrieving elements from another database table or other source.
54
54
  */
55
- schemaContext?: ServiceMap.ServiceMap<RCtx>
55
+ schemaContext?: Context.Context<RCtx>
56
56
 
57
57
  overrides?: (
58
58
  repo: Repository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>
package/src/Operations.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { reportError } from "@effect-app/infra/errorReporter"
2
2
  import { subHours } from "date-fns"
3
- import { Cause, copy, Duration, Effect, Exit, type Fiber, Layer, Option, S, Schedule, ServiceMap } from "effect-app"
3
+ import { Cause, Context, copy, Duration, Effect, Exit, type Fiber, Layer, Option, S, Schedule } from "effect-app"
4
4
  import { annotateLogscoped } from "effect-app/Effect"
5
5
  import { dual, pipe } from "effect-app/Function"
6
6
  import { Operation, OperationFailure, OperationId, type OperationProgress, OperationSuccess } from "effect-app/Operations"
@@ -189,7 +189,7 @@ const make = Effect.gen(function*() {
189
189
  }
190
190
  })
191
191
 
192
- export class Operations extends ServiceMap.Opaque<Operations>()("effect-app/Operations", { make }) {
192
+ export class Operations extends Context.Opaque<Operations>()("effect-app/Operations", { make }) {
193
193
  private static readonly CleanupLive = this
194
194
  .use((_) =>
195
195
  _.cleanup.pipe(
@@ -1,8 +1,8 @@
1
- import { Effect, ServiceMap } from "effect-app"
1
+ import { Context, Effect } from "effect-app"
2
2
  import { Operation } from "effect-app/Operations"
3
3
  import { makeRepo } from "./Model.js"
4
4
 
5
- export class OperationsRepo extends ServiceMap.Service<OperationsRepo>()(
5
+ export class OperationsRepo extends Context.Service<OperationsRepo>()(
6
6
  "OperationRepo",
7
7
  {
8
8
  make: Effect.gen(function*() {
@@ -1,16 +1,15 @@
1
1
  import { getRequestContext, setupRequestContextWithCustomSpan } from "@effect-app/infra/api/setupRequest"
2
2
  import { reportNonInterruptedFailure } from "@effect-app/infra/QueueMaker/errors"
3
3
  import { type QueueBase, QueueMeta } from "@effect-app/infra/QueueMaker/service"
4
- import { SqlClient } from "effect/unstable/sql"
5
4
  import { subMinutes } from "date-fns"
6
- import { Effect, Fiber, Option, S, Tracer } from "effect-app"
7
- import type { NonEmptyString255 } from "effect-app/Schema"
5
+ import { Effect, Fiber, type NonEmptyReadonlyArray, Option, S, Tracer } from "effect-app"
6
+ import { type NonEmptyString255 } from "effect-app/Schema"
8
7
  import { pretty } from "effect-app/utils"
9
- import type { NonEmptyReadonlyArray } from "effect-app"
8
+ import { SqlClient } from "effect/unstable/sql"
10
9
  import { SQLModel } from "../adapters/SQL.js"
11
10
  import { InfraLogger } from "../logger.js"
12
11
 
13
- export const QueueId = S.Number.pipe(S.brand("QueueId"))
12
+ export const QueueId = S.Finite.pipe(S.brand("QueueId"))
14
13
  export type QueueId = typeof QueueId.Type
15
14
 
16
15
  // TODO: let the model track and Auto Generate versionColumn on every update instead
@@ -79,14 +78,14 @@ export function makeSQLQueue<
79
78
 
80
79
  const q = {
81
80
  offer: Effect.fnUntraced(function*(body: Evt, meta: typeof QueueMeta.Type) {
82
- yield* queueRepo.insertVoid({
81
+ yield* queueRepo.insertVoid(Queue.insert.make({
83
82
  body,
84
83
  meta,
85
84
  name: queueName,
86
85
  processingAt: Option.none(),
87
86
  finishedAt: Option.none(),
88
87
  etag: crypto.randomUUID()
89
- })
88
+ }))
90
89
  }),
91
90
  take: Effect.gen(function*() {
92
91
  while (true) {
@@ -95,15 +94,16 @@ export function makeSQLQueue<
95
94
  const dec = yield* decodeDrain(first)
96
95
  const { createdAt, updatedAt, ...rest } = dec
97
96
  return yield* drainRepo.update(
98
- { ...rest, processingAt: Option.some(new Date()) } // auto in lib , etag: crypto.randomUUID()
97
+ Drain.update.make({ ...rest, processingAt: Option.some(new Date()) }) // auto in lib , etag: crypto.randomUUID()
99
98
  )
100
99
  }
101
100
  if (first) return first
102
101
  yield* Effect.sleep(250)
103
102
  }
104
103
  }),
105
- finish: ({ createdAt, updatedAt, ...q }: Drain) =>
106
- drainRepo.updateVoid({ ...q, finishedAt: Option.some(new Date()) }) // auto in lib , etag: crypto.randomUUID()
104
+ finish: Effect.fn(function*({ createdAt, updatedAt, ...q }: Drain) {
105
+ return yield* drainRepo.updateVoid(Drain.update.make({ ...q, finishedAt: Option.some(new Date()) })) // auto in lib , etag: crypto.randomUUID()
106
+ })
107
107
  }
108
108
  const queue = {
109
109
  publish: (...messages: NonEmptyReadonlyArray<Evt>) =>
@@ -1,12 +1,11 @@
1
1
  import { Cause, Tracer } from "effect"
2
- import { Effect, Fiber, flow, S } from "effect-app"
3
- import * as Q from "effect/Queue"
2
+ import { Effect, Fiber, flow, type NonEmptyReadonlyArray, S } from "effect-app"
4
3
  import { pretty } from "effect-app/utils"
4
+ import * as Q from "effect/Queue"
5
5
  import { MemQueue } from "../adapters/memQueue.js"
6
6
  import { getRequestContext, setupRequestContextWithCustomSpan } from "../api/setupRequest.js"
7
7
  import { InfraLogger } from "../logger.js"
8
8
  import { reportNonInterruptedFailure, reportNonInterruptedFailureCause } from "./errors.js"
9
- import type { NonEmptyReadonlyArray } from "effect-app"
10
9
  import { type QueueBase, QueueMeta } from "./service.js"
11
10
 
12
11
  export function makeMemQueue<
@@ -26,8 +25,12 @@ export function makeMemQueue<
26
25
  const qDrain = yield* mem.getOrCreateQueue(queueDrainName)
27
26
 
28
27
  const wireSchema = S.Struct({ body: schema, meta: QueueMeta })
28
+ const wireSchemaJson = S.fromJsonString(S.toCodecJson(wireSchema))
29
+ const encodePublish = S.encodeEffect(wireSchemaJson)
29
30
  const drainW = S.Struct({ body: drainSchema, meta: QueueMeta })
30
- const parseDrain = flow(S.decodeUnknownEffect(drainW), Effect.orDie)
31
+ const drainWJson = S.fromJsonString(S.toCodecJson(drainW))
32
+
33
+ const parseDrain = flow(S.decodeUnknownEffect(drainWJson), Effect.orDie)
31
34
 
32
35
  const queue = {
33
36
  publish: (...messages: NonEmptyReadonlyArray<Evt>) =>
@@ -37,10 +40,8 @@ export function makeMemQueue<
37
40
  Effect
38
41
  .forEach(messages, (m) =>
39
42
  // we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
40
- S.encodeEffect(wireSchema)({ body: m, meta: requestContext }).pipe(
43
+ encodePublish({ body: m, meta: requestContext }).pipe(
41
44
  Effect.orDie,
42
- Effect
43
- .map(JSON.stringify),
44
45
  // .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
45
46
  Effect.flatMap((_) => Q.offer(q, _))
46
47
  ), { discard: true })
@@ -58,42 +59,40 @@ export function makeMemQueue<
58
59
  const reportError = reportNonInterruptedFailureCause({ name: "MemQueue.drain." + queueDrainName })
59
60
  const processMessage = (msg: string) =>
60
61
  // we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
61
- Effect
62
- .sync(() => JSON.parse(msg))
63
- .pipe(
64
- Effect.flatMap(parseDrain),
65
- Effect.orDie,
66
- Effect
67
- .flatMap(({ body, meta }) => {
68
- let effect = InfraLogger
69
- .logDebug(`[${queueDrainName}] Processing incoming message`)
70
- .pipe(
71
- Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }),
72
- Effect.andThen(handleEvent(body)),
73
- silenceAndReportError,
74
- (_) =>
75
- setupRequestContextWithCustomSpan(
76
- _,
77
- meta,
78
- `queue.drain: ${queueDrainName}.${body._tag}`,
79
- {
80
- captureStackTrace: false,
81
- kind: "consumer",
82
- attributes: {
83
- "queue.name": queueDrainName,
84
- "queue.sessionId": sessionId,
85
- "queue.input": body
86
- }
62
+ parseDrain(msg).pipe(
63
+ Effect.orDie,
64
+ Effect
65
+ .flatMap(({ body, meta }) => {
66
+ let effect = InfraLogger
67
+ .logDebug(`[${queueDrainName}] Processing incoming message`)
68
+ .pipe(
69
+ Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }),
70
+ Effect.andThen(handleEvent(body)),
71
+ silenceAndReportError,
72
+ (_) =>
73
+ setupRequestContextWithCustomSpan(
74
+ _,
75
+ meta,
76
+ `queue.drain: ${queueDrainName}.${body._tag}`,
77
+ {
78
+ captureStackTrace: false,
79
+ kind: "consumer",
80
+ attributes: {
81
+ "queue.name": queueDrainName,
82
+ "queue.sessionId": sessionId,
83
+ "queue.input": body
87
84
  }
88
- )
89
- )
90
- if (meta.span) {
91
- effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span))
92
- }
93
- return effect
94
- })
95
- )
96
- return Q.take(qDrain)
85
+ }
86
+ )
87
+ )
88
+ if (meta.span) {
89
+ effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span))
90
+ }
91
+ return effect
92
+ })
93
+ )
94
+ return Q
95
+ .take(qDrain)
97
96
  .pipe(
98
97
  Effect
99
98
  .flatMap((x) =>