@effect-app/infra 4.0.0-beta.25 → 4.0.0-beta.251
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.
- package/CHANGELOG.md +1900 -0
- package/_check.sh +1 -1
- package/dist/CUPS.d.ts +30 -11
- package/dist/CUPS.d.ts.map +1 -1
- package/dist/CUPS.js +35 -14
- package/dist/ContextProvider.d.ts +34 -0
- package/dist/ContextProvider.d.ts.map +1 -0
- package/dist/ContextProvider.js +40 -0
- package/dist/Emailer/Sendgrid.d.ts +111 -147
- package/dist/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/Emailer/Sendgrid.js +24 -19
- package/dist/Emailer/fake.d.ts +2 -2
- package/dist/Emailer/fake.d.ts.map +1 -1
- package/dist/Emailer/fake.js +4 -4
- package/dist/MainFiberSet.d.ts +12 -9
- package/dist/MainFiberSet.d.ts.map +1 -1
- package/dist/MainFiberSet.js +10 -6
- package/dist/QueueMaker/SQLQueue.d.ts +8 -9
- package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
- package/dist/QueueMaker/SQLQueue.js +138 -120
- package/dist/QueueMaker/errors.d.ts +5 -3
- package/dist/QueueMaker/errors.d.ts.map +1 -1
- package/dist/QueueMaker/errors.js +4 -2
- package/dist/QueueMaker/memQueue.d.ts +10 -6
- package/dist/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.js +84 -68
- package/dist/QueueMaker/sbqueue.d.ts +9 -5
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/QueueMaker/sbqueue.js +60 -58
- package/dist/RequestFiberSet.d.ts +10 -7
- package/dist/RequestFiberSet.d.ts.map +1 -1
- package/dist/RequestFiberSet.js +13 -8
- package/dist/SQL/Model.d.ts +468 -0
- package/dist/SQL/Model.d.ts.map +1 -0
- package/dist/SQL/Model.js +469 -0
- package/dist/SQL.d.ts +2 -0
- package/dist/SQL.d.ts.map +1 -0
- package/dist/{adapters/SQL.js → SQL.js} +1 -1
- package/dist/ServiceBus.d.ts +61 -0
- package/dist/ServiceBus.d.ts.map +1 -0
- package/dist/ServiceBus.js +108 -0
- package/dist/Store/Cosmos/query.d.ts +15 -4
- package/dist/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/Store/Cosmos/query.js +179 -41
- package/dist/Store/Cosmos.d.ts +3 -3
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +344 -246
- package/dist/Store/Disk.d.ts +5 -5
- package/dist/Store/Disk.d.ts.map +1 -1
- package/dist/Store/Disk.js +78 -38
- package/dist/Store/Memory.d.ts +7 -10
- package/dist/Store/Memory.d.ts.map +1 -1
- package/dist/Store/Memory.js +326 -66
- package/dist/Store/SQL/Pg.d.ts +4 -0
- package/dist/Store/SQL/Pg.d.ts.map +1 -0
- package/dist/Store/SQL/Pg.js +232 -0
- package/dist/Store/SQL/query.d.ts +49 -0
- package/dist/Store/SQL/query.d.ts.map +1 -0
- package/dist/Store/SQL/query.js +527 -0
- package/dist/Store/SQL.d.ts +21 -0
- package/dist/Store/SQL.d.ts.map +1 -0
- package/dist/Store/SQL.js +449 -0
- package/dist/Store/codeFilter.d.ts +5 -5
- package/dist/Store/codeFilter.d.ts.map +1 -1
- package/dist/Store/codeFilter.js +6 -3
- package/dist/Store/index.d.ts +7 -5
- package/dist/Store/index.d.ts.map +1 -1
- package/dist/Store/index.js +18 -5
- package/dist/Store/utils.d.ts +4 -3
- package/dist/Store/utils.d.ts.map +1 -1
- package/dist/Store/utils.js +5 -5
- package/dist/arbs.d.ts +2 -2
- package/dist/arbs.d.ts.map +1 -1
- package/dist/arbs.js +5 -3
- package/dist/codec.d.ts +5 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +5 -0
- package/dist/cosmos-client.d.ts +16 -0
- package/dist/cosmos-client.d.ts.map +1 -0
- package/dist/cosmos-client.js +11 -0
- package/dist/errorReporter.d.ts +7 -5
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +23 -27
- package/dist/errors.d.ts +1 -1
- package/dist/fileUtil.d.ts +2 -2
- package/dist/fileUtil.d.ts.map +1 -1
- package/dist/fileUtil.js +2 -2
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/internal/RequestContextMiddleware.d.ts +5 -0
- package/dist/internal/RequestContextMiddleware.d.ts.map +1 -0
- package/dist/internal/RequestContextMiddleware.js +45 -0
- package/dist/internal/auth.d.ts +53 -0
- package/dist/internal/auth.d.ts.map +1 -0
- package/dist/internal/auth.js +180 -0
- package/dist/internal/events.d.ts +11 -0
- package/dist/internal/events.d.ts.map +1 -0
- package/dist/internal/events.js +49 -0
- package/dist/internal/health.d.ts +3 -0
- package/dist/internal/health.d.ts.map +1 -0
- package/dist/internal/health.js +5 -0
- package/dist/layerUtils.d.ts +32 -0
- package/dist/layerUtils.d.ts.map +1 -0
- package/dist/layerUtils.js +17 -0
- package/dist/logger/jsonLogger.d.ts +2 -2
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +5 -3
- package/dist/logger/logFmtLogger.d.ts +2 -2
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +3 -3
- package/dist/logger/shared.d.ts +3 -3
- package/dist/logger/shared.d.ts.map +1 -1
- package/dist/logger/shared.js +5 -5
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/memQueue.d.ts +15 -0
- package/dist/memQueue.d.ts.map +1 -0
- package/dist/memQueue.js +21 -0
- package/dist/middlewares.d.ts +10 -0
- package/dist/middlewares.d.ts.map +1 -0
- package/dist/{api/middlewares.js → middlewares.js} +1 -1
- package/dist/mongo-client.d.ts +11 -0
- package/dist/mongo-client.d.ts.map +1 -0
- package/dist/mongo-client.js +15 -0
- package/dist/otel.d.ts +75 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/otel.js +65 -0
- package/dist/rateLimit.d.ts +12 -4
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +7 -12
- package/dist/redis-client.d.ts +42 -0
- package/dist/redis-client.d.ts.map +1 -0
- package/dist/redis-client.js +98 -0
- package/dist/reportError.d.ts +4 -0
- package/dist/reportError.d.ts.map +1 -0
- package/dist/reportError.js +28 -0
- package/dist/routing/middleware/RouterMiddleware.d.ts +16 -0
- package/dist/routing/middleware/RouterMiddleware.d.ts.map +1 -0
- package/dist/{api/routing → routing}/middleware/RouterMiddleware.js +1 -1
- package/dist/routing/middleware/middleware.d.ts +48 -0
- package/dist/routing/middleware/middleware.d.ts.map +1 -0
- package/dist/routing/middleware/middleware.js +128 -0
- package/dist/routing/middleware.d.ts +3 -0
- package/dist/routing/middleware.d.ts.map +1 -0
- package/dist/{api/routing → routing}/middleware.js +1 -2
- package/dist/routing/schema/jwt.d.ts +4 -0
- package/dist/routing/schema/jwt.d.ts.map +1 -0
- package/dist/routing/schema/jwt.js +13 -0
- package/dist/routing/tsort.d.ts +8 -0
- package/dist/routing/tsort.d.ts.map +1 -0
- package/dist/routing/tsort.js +51 -0
- package/dist/routing/utils.d.ts +19 -0
- package/dist/routing/utils.d.ts.map +1 -0
- package/dist/routing/utils.js +45 -0
- package/dist/routing.d.ts +184 -0
- package/dist/routing.d.ts.map +1 -0
- package/dist/routing.js +236 -0
- package/dist/test.d.ts +3 -3
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +2 -2
- package/dist/util.d.ts +3 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +14 -0
- package/dist/vitest.d.ts +1 -1
- package/examples/query.ts +47 -39
- package/package.json +119 -234
- package/src/CUPS.ts +52 -13
- package/src/{api/ContextProvider.ts → ContextProvider.ts} +19 -16
- package/src/Emailer/Sendgrid.ts +82 -59
- package/src/Emailer/fake.ts +3 -3
- package/src/MainFiberSet.ts +12 -10
- package/src/QueueMaker/SQLQueue.ts +153 -156
- package/src/QueueMaker/errors.ts +3 -1
- package/src/QueueMaker/memQueue.ts +113 -107
- package/src/QueueMaker/sbqueue.ts +78 -90
- package/src/RequestFiberSet.ts +13 -8
- package/src/{adapters/SQL → SQL}/Model.ts +42 -41
- package/src/ServiceBus.ts +219 -0
- package/src/Store/Cosmos/query.ts +216 -52
- package/src/Store/Cosmos.ts +493 -353
- package/src/Store/Disk.ts +109 -69
- package/src/Store/Memory.ts +365 -96
- package/src/Store/SQL/Pg.ts +363 -0
- package/src/Store/SQL/query.ts +603 -0
- package/src/Store/SQL.ts +735 -0
- package/src/Store/codeFilter.ts +8 -5
- package/src/Store/index.ts +21 -6
- package/src/Store/utils.ts +26 -24
- package/src/arbs.ts +5 -3
- package/src/{adapters/cosmos-client.ts → cosmos-client.ts} +5 -3
- package/src/errorReporter.ts +66 -76
- package/src/fileUtil.ts +1 -1
- package/src/index.ts +2 -1
- package/src/{api/internal → internal}/RequestContextMiddleware.ts +23 -6
- package/src/internal/auth.ts +272 -0
- package/src/{api/internal → internal}/events.ts +22 -13
- package/src/{api/layerUtils.ts → layerUtils.ts} +14 -10
- package/src/logger/jsonLogger.ts +4 -2
- package/src/logger/logFmtLogger.ts +2 -2
- package/src/logger/shared.ts +5 -4
- package/src/{adapters/memQueue.ts → memQueue.ts} +5 -4
- package/src/{adapters/mongo-client.ts → mongo-client.ts} +4 -2
- package/src/otel.ts +152 -0
- package/src/rateLimit.ts +34 -23
- package/src/{adapters/redis-client.ts → redis-client.ts} +7 -3
- package/src/{api/reportError.ts → reportError.ts} +3 -2
- package/src/{api/routing → routing}/middleware/RouterMiddleware.ts +5 -4
- package/src/{api/routing → routing}/middleware/middleware.ts +62 -17
- package/src/routing/middleware.ts +4 -0
- package/src/{api/routing → routing}/schema/jwt.ts +2 -1
- package/src/{api/routing → routing}/utils.ts +2 -1
- package/src/routing.ts +768 -0
- package/src/test.ts +2 -2
- package/test/auth.test.ts +101 -0
- package/test/contextProvider.test.ts +15 -12
- package/test/controller.test.ts +28 -32
- package/test/cosmos-query.test.ts +159 -0
- package/test/dist/auth.test.d.ts.map +1 -0
- package/test/dist/contextProvider.test.d.ts.map +1 -1
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/cosmos-query.test.d.ts.map +1 -0
- package/test/dist/date-query.test.d.ts.map +1 -0
- package/test/dist/fixtures.d.ts +30 -12
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +17 -10
- package/test/dist/query.test.d.ts.map +1 -1
- package/test/dist/rawQuery.test.d.ts.map +1 -1
- package/test/dist/repository-ext.test.d.ts.map +1 -0
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/dist/router-generator.test.d.ts.map +1 -0
- package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
- package/test/dist/rpc-context-map-streaming.test.d.ts.map +1 -0
- package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
- package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
- package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
- package/test/dist/sql-store.test.d.ts.map +1 -0
- package/test/fixtures.ts +16 -9
- package/test/layerUtils.test.ts +2 -2
- package/test/query.test.ts +903 -40
- package/test/rawQuery.test.ts +340 -22
- package/test/repository-ext.test.ts +62 -0
- package/test/requires.test.ts +10 -5
- package/test/router-generator.test.ts +187 -0
- package/test/routing-interruptibility.test.ts +66 -0
- package/test/rpc-context-map-streaming.test.ts +262 -0
- package/test/rpc-e2e-invalidation.test.ts +256 -0
- package/test/rpc-multi-middleware.test.ts +85 -10
- package/test/rpc-stream-fullstack.test.ts +304 -0
- package/test/sql-store.test.ts +1711 -0
- package/test/validateSample.test.ts +19 -14
- package/tsconfig.examples.json +1 -1
- package/tsconfig.json +2 -1
- package/tsconfig.json.bak +2 -2
- package/tsconfig.src.json +35 -35
- package/tsconfig.test.json +2 -2
- package/dist/Emailer/service.d.ts +0 -55
- package/dist/Emailer/service.d.ts.map +0 -1
- package/dist/Emailer/service.js +0 -6
- package/dist/Emailer.d.ts +0 -2
- package/dist/Emailer.d.ts.map +0 -1
- package/dist/Emailer.js +0 -2
- package/dist/Model/Repository/ext.d.ts +0 -41
- package/dist/Model/Repository/ext.d.ts.map +0 -1
- package/dist/Model/Repository/ext.js +0 -65
- package/dist/Model/Repository/internal/internal.d.ts +0 -59
- package/dist/Model/Repository/internal/internal.d.ts.map +0 -1
- package/dist/Model/Repository/internal/internal.js +0 -316
- package/dist/Model/Repository/legacy.d.ts +0 -19
- package/dist/Model/Repository/legacy.d.ts.map +0 -1
- package/dist/Model/Repository/legacy.js +0 -2
- package/dist/Model/Repository/makeRepo.d.ts +0 -49
- package/dist/Model/Repository/makeRepo.d.ts.map +0 -1
- package/dist/Model/Repository/makeRepo.js +0 -24
- package/dist/Model/Repository/service.d.ts +0 -89
- package/dist/Model/Repository/service.d.ts.map +0 -1
- package/dist/Model/Repository/service.js +0 -2
- package/dist/Model/Repository/validation.d.ts +0 -42
- package/dist/Model/Repository/validation.d.ts.map +0 -1
- package/dist/Model/Repository/validation.js +0 -32
- package/dist/Model/Repository.d.ts +0 -6
- package/dist/Model/Repository.d.ts.map +0 -1
- package/dist/Model/Repository.js +0 -6
- package/dist/Model/dsl.d.ts +0 -32
- package/dist/Model/dsl.d.ts.map +0 -1
- package/dist/Model/dsl.js +0 -44
- package/dist/Model/filter/filterApi.d.ts +0 -30
- package/dist/Model/filter/filterApi.d.ts.map +0 -1
- package/dist/Model/filter/filterApi.js +0 -2
- package/dist/Model/filter/types/errors.d.ts +0 -29
- package/dist/Model/filter/types/errors.d.ts.map +0 -1
- package/dist/Model/filter/types/errors.js +0 -2
- package/dist/Model/filter/types/fields.d.ts +0 -15
- package/dist/Model/filter/types/fields.d.ts.map +0 -1
- package/dist/Model/filter/types/fields.js +0 -2
- package/dist/Model/filter/types/path/common.d.ts +0 -316
- package/dist/Model/filter/types/path/common.d.ts.map +0 -1
- package/dist/Model/filter/types/path/common.js +0 -2
- package/dist/Model/filter/types/path/eager.d.ts +0 -95
- package/dist/Model/filter/types/path/eager.d.ts.map +0 -1
- package/dist/Model/filter/types/path/eager.js +0 -31
- package/dist/Model/filter/types/path/index.d.ts +0 -4
- package/dist/Model/filter/types/path/index.d.ts.map +0 -1
- package/dist/Model/filter/types/path/index.js +0 -3
- package/dist/Model/filter/types/utils.d.ts +0 -79
- package/dist/Model/filter/types/utils.d.ts.map +0 -1
- package/dist/Model/filter/types/utils.js +0 -2
- package/dist/Model/filter/types/validator.d.ts +0 -30
- package/dist/Model/filter/types/validator.d.ts.map +0 -1
- package/dist/Model/filter/types/validator.js +0 -2
- package/dist/Model/filter/types.d.ts +0 -5
- package/dist/Model/filter/types.d.ts.map +0 -1
- package/dist/Model/filter/types.js +0 -7
- package/dist/Model/query/dsl.d.ts +0 -248
- package/dist/Model/query/dsl.d.ts.map +0 -1
- package/dist/Model/query/dsl.js +0 -104
- package/dist/Model/query/new-kid-interpreter.d.ts +0 -28
- package/dist/Model/query/new-kid-interpreter.d.ts.map +0 -1
- package/dist/Model/query/new-kid-interpreter.js +0 -165
- package/dist/Model/query.d.ts +0 -15
- package/dist/Model/query.d.ts.map +0 -1
- package/dist/Model/query.js +0 -3
- package/dist/Model.d.ts +0 -4
- package/dist/Model.d.ts.map +0 -1
- package/dist/Model.js +0 -4
- package/dist/Operations.d.ts +0 -55
- package/dist/Operations.d.ts.map +0 -1
- package/dist/Operations.js +0 -102
- package/dist/OperationsRepo.d.ts +0 -41
- package/dist/OperationsRepo.d.ts.map +0 -1
- package/dist/OperationsRepo.js +0 -14
- package/dist/QueueMaker/service.d.ts +0 -11
- package/dist/QueueMaker/service.d.ts.map +0 -1
- package/dist/QueueMaker/service.js +0 -4
- package/dist/RequestContext.d.ts +0 -63
- package/dist/RequestContext.d.ts.map +0 -1
- package/dist/RequestContext.js +0 -49
- package/dist/Store/ContextMapContainer.d.ts +0 -14
- package/dist/Store/ContextMapContainer.d.ts.map +0 -1
- package/dist/Store/ContextMapContainer.js +0 -16
- package/dist/Store/service.d.ts +0 -108
- package/dist/Store/service.d.ts.map +0 -1
- package/dist/Store/service.js +0 -71
- package/dist/Store.d.ts +0 -2
- package/dist/Store.d.ts.map +0 -1
- package/dist/Store.js +0 -2
- package/dist/adapters/SQL/Model.d.ts +0 -479
- package/dist/adapters/SQL/Model.d.ts.map +0 -1
- package/dist/adapters/SQL/Model.js +0 -478
- package/dist/adapters/SQL.d.ts +0 -2
- package/dist/adapters/SQL.d.ts.map +0 -1
- package/dist/adapters/ServiceBus.d.ts +0 -58
- package/dist/adapters/ServiceBus.d.ts.map +0 -1
- package/dist/adapters/ServiceBus.js +0 -99
- package/dist/adapters/cosmos-client.d.ts +0 -14
- package/dist/adapters/cosmos-client.d.ts.map +0 -1
- package/dist/adapters/cosmos-client.js +0 -9
- package/dist/adapters/index.d.ts +0 -2
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -2
- package/dist/adapters/logger.d.ts +0 -9
- package/dist/adapters/logger.d.ts.map +0 -1
- package/dist/adapters/logger.js +0 -3
- package/dist/adapters/memQueue.d.ts +0 -13
- package/dist/adapters/memQueue.d.ts.map +0 -1
- package/dist/adapters/memQueue.js +0 -20
- package/dist/adapters/mongo-client.d.ts +0 -10
- package/dist/adapters/mongo-client.d.ts.map +0 -1
- package/dist/adapters/mongo-client.js +0 -13
- package/dist/adapters/redis-client.d.ts +0 -39
- package/dist/adapters/redis-client.d.ts.map +0 -1
- package/dist/adapters/redis-client.js +0 -94
- package/dist/api/ContextProvider.d.ts +0 -31
- package/dist/api/ContextProvider.d.ts.map +0 -1
- package/dist/api/ContextProvider.js +0 -38
- package/dist/api/codec.d.ts +0 -5
- package/dist/api/codec.d.ts.map +0 -1
- package/dist/api/codec.js +0 -5
- package/dist/api/internal/RequestContextMiddleware.d.ts +0 -5
- package/dist/api/internal/RequestContextMiddleware.d.ts.map +0 -1
- package/dist/api/internal/RequestContextMiddleware.js +0 -35
- package/dist/api/internal/auth.d.ts +0 -15
- package/dist/api/internal/auth.d.ts.map +0 -1
- package/dist/api/internal/auth.js +0 -47
- package/dist/api/internal/events.d.ts +0 -9
- package/dist/api/internal/events.d.ts.map +0 -1
- package/dist/api/internal/events.js +0 -42
- package/dist/api/internal/health.d.ts +0 -3
- package/dist/api/internal/health.d.ts.map +0 -1
- package/dist/api/internal/health.js +0 -5
- package/dist/api/layerUtils.d.ts +0 -24
- package/dist/api/layerUtils.d.ts.map +0 -1
- package/dist/api/layerUtils.js +0 -16
- package/dist/api/middlewares.d.ts +0 -10
- package/dist/api/middlewares.d.ts.map +0 -1
- package/dist/api/reportError.d.ts +0 -4
- package/dist/api/reportError.d.ts.map +0 -1
- package/dist/api/reportError.js +0 -27
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +0 -15
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +0 -1
- package/dist/api/routing/middleware/middleware.d.ts +0 -9
- package/dist/api/routing/middleware/middleware.d.ts.map +0 -1
- package/dist/api/routing/middleware/middleware.js +0 -92
- package/dist/api/routing/middleware.d.ts +0 -4
- package/dist/api/routing/middleware.d.ts.map +0 -1
- package/dist/api/routing/schema/jwt.d.ts +0 -4
- package/dist/api/routing/schema/jwt.d.ts.map +0 -1
- package/dist/api/routing/schema/jwt.js +0 -12
- package/dist/api/routing/tsort.d.ts +0 -8
- package/dist/api/routing/tsort.d.ts.map +0 -1
- package/dist/api/routing/tsort.js +0 -51
- package/dist/api/routing/utils.d.ts +0 -19
- package/dist/api/routing/utils.d.ts.map +0 -1
- package/dist/api/routing/utils.js +0 -44
- package/dist/api/routing.d.ts +0 -138
- package/dist/api/routing.d.ts.map +0 -1
- package/dist/api/routing.js +0 -166
- package/dist/api/setupRequest.d.ts +0 -12
- package/dist/api/setupRequest.d.ts.map +0 -1
- package/dist/api/setupRequest.js +0 -44
- package/dist/api/util.d.ts +0 -3
- package/dist/api/util.d.ts.map +0 -1
- package/dist/api/util.js +0 -14
- package/eslint.config.mjs +0 -24
- package/src/Emailer/service.ts +0 -52
- package/src/Emailer.ts +0 -1
- package/src/Model/Repository/ext.ts +0 -283
- package/src/Model/Repository/internal/internal.ts +0 -577
- package/src/Model/Repository/legacy.ts +0 -27
- package/src/Model/Repository/makeRepo.ts +0 -139
- package/src/Model/Repository/service.ts +0 -627
- package/src/Model/Repository/validation.ts +0 -31
- package/src/Model/Repository.ts +0 -5
- package/src/Model/dsl.ts +0 -128
- package/src/Model/filter/filterApi.ts +0 -60
- package/src/Model/filter/types/errors.ts +0 -47
- package/src/Model/filter/types/fields.ts +0 -50
- package/src/Model/filter/types/path/common.ts +0 -404
- package/src/Model/filter/types/path/eager.ts +0 -298
- package/src/Model/filter/types/path/index.ts +0 -4
- package/src/Model/filter/types/utils.ts +0 -128
- package/src/Model/filter/types/validator.ts +0 -46
- package/src/Model/filter/types.ts +0 -6
- package/src/Model/query/dsl.ts +0 -2110
- package/src/Model/query/new-kid-interpreter.ts +0 -210
- package/src/Model/query.ts +0 -13
- package/src/Model.ts +0 -3
- package/src/Operations.ts +0 -235
- package/src/OperationsRepo.ts +0 -16
- package/src/QueueMaker/service.ts +0 -17
- package/src/RequestContext.ts +0 -63
- package/src/Store/ContextMapContainer.ts +0 -20
- package/src/Store/service.ts +0 -184
- package/src/Store.ts +0 -1
- package/src/adapters/ServiceBus.ts +0 -209
- package/src/adapters/index.ts +0 -0
- package/src/adapters/logger.ts +0 -3
- package/src/api/internal/auth.ts +0 -68
- package/src/api/routing/middleware.ts +0 -6
- package/src/api/routing.ts +0 -598
- package/src/api/setupRequest.ts +0 -84
- /package/src/{adapters/SQL.ts → SQL.ts} +0 -0
- /package/src/{api/codec.ts → codec.ts} +0 -0
- /package/src/{api/internal → internal}/health.ts +0 -0
- /package/src/{api/middlewares.ts → middlewares.ts} +0 -0
- /package/src/{api/routing → routing}/tsort.ts +0 -0
- /package/src/{api/util.ts → util.ts} +0 -0
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import {
|
|
2
|
+
import type { NonEmptyReadonlyArray } from "effect-app/Array"
|
|
3
|
+
import * as Context from "effect-app/Context"
|
|
4
|
+
import * as Effect from "effect-app/Effect"
|
|
5
|
+
import * as Layer from "effect-app/Layer"
|
|
6
|
+
import { pipe } from "effect/Function"
|
|
7
|
+
import type * as Scope from "effect/Scope"
|
|
3
8
|
|
|
4
9
|
import { type HttpRouter } from "effect-app/http"
|
|
5
10
|
import { type EffectGenUtils } from "effect-app/utils/gen"
|
|
6
|
-
import { type Yieldable } from "effect/Effect"
|
|
7
11
|
import { type ContextTagWithDefault, type GetContext, type LayerUtils, mergeContexts } from "./layerUtils.js"
|
|
8
12
|
|
|
9
13
|
export interface ContextProviderId {
|
|
@@ -23,7 +27,7 @@ type TDepsArr<TDeps extends ReadonlyArray<any>> = {
|
|
|
23
27
|
// E = never => the context provided cannot trigger errors
|
|
24
28
|
// TODO: remove HttpLayerRouter.Provided - it's not even relevant outside of Http context, while ContextProviders are for anywhere. Only support Scope.Scope?
|
|
25
29
|
// _R extends HttpLayerRouter.Provided => the context provided can only have what HttpLayerRouter.Provided provides as requirements
|
|
26
|
-
ContextTagWithDefault.Base<Effect.Effect<
|
|
30
|
+
ContextTagWithDefault.Base<Effect.Effect<Context.Context<infer _1>, never, infer _R>> // & { _tag: infer _2 }>
|
|
27
31
|
? [_R] extends [HttpRouter.Provided] ? TDeps[K]
|
|
28
32
|
: `HttpLayerRouter.Provided is the only requirement ${TDeps[K]["Service"][
|
|
29
33
|
"_tag"
|
|
@@ -38,7 +42,7 @@ type TDepsArr<TDeps extends ReadonlyArray<any>> = {
|
|
|
38
42
|
> // & { _tag: infer _3 }
|
|
39
43
|
) // [_YW] extends [never] if no yield* is used and just some context is returned
|
|
40
44
|
? [_YW] extends [never] ? TDeps[K]
|
|
41
|
-
: [_YW] extends [
|
|
45
|
+
: [_YW] extends [Effect.Effect<any, never, infer _R>] ? [_R] extends [HttpRouter.Provided] ? TDeps[K]
|
|
42
46
|
: `HttpLayerRouter.Provided is the only requirement ${TDeps[K]["Service"][
|
|
43
47
|
"_tag"
|
|
44
48
|
]}'s returned effect can have`
|
|
@@ -58,9 +62,9 @@ export const mergeContextProviders = <
|
|
|
58
62
|
Effect.Effect<
|
|
59
63
|
// we need to merge all contexts into one
|
|
60
64
|
// v4: Service.Shape extracts the service value type (v3's Tag.Identifier)
|
|
61
|
-
|
|
65
|
+
Context.Context<GetContext<EffectGenUtils.Success<Context.Service.Shape<TDeps[number]>>>>,
|
|
62
66
|
never,
|
|
63
|
-
EffectGenUtils.
|
|
67
|
+
EffectGenUtils.Context<Context.Service.Shape<TDeps[number]>>
|
|
64
68
|
>,
|
|
65
69
|
LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"] }>,
|
|
66
70
|
LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"] }>
|
|
@@ -78,14 +82,14 @@ export const mergeContextProviders = <
|
|
|
78
82
|
handle: handle[Symbol.toStringTag] === "GeneratorFunction" ? Effect.fnUntraced(handle)() : handle
|
|
79
83
|
}
|
|
80
84
|
))
|
|
81
|
-
// services are effects which return some
|
|
85
|
+
// services are effects which return some Context.Context<...>
|
|
82
86
|
const context = yield* mergeContexts(services as any)
|
|
83
87
|
return context
|
|
84
88
|
})
|
|
85
89
|
}) as any
|
|
86
90
|
})
|
|
87
91
|
|
|
88
|
-
// Effect Rpc Middleware: for single tag providing, we could use Provides, for providing
|
|
92
|
+
// Effect Rpc Middleware: for single tag providing, we could use Provides, for providing Context or Layer (bad boy) we could use Wrap..
|
|
89
93
|
export const ContextProvider = <
|
|
90
94
|
ContextProviderA,
|
|
91
95
|
MakeContextProviderE,
|
|
@@ -97,9 +101,8 @@ export const ContextProvider = <
|
|
|
97
101
|
effect: Effect.Effect<
|
|
98
102
|
| Effect.Effect<ContextProviderA, never, ContextProviderR>
|
|
99
103
|
| (() => Generator<
|
|
100
|
-
|
|
101
|
-
ContextProviderA
|
|
102
|
-
any
|
|
104
|
+
Effect.Effect<any, never, ContextProviderR>,
|
|
105
|
+
ContextProviderA
|
|
103
106
|
>),
|
|
104
107
|
MakeContextProviderE,
|
|
105
108
|
MakeContextProviderR | Scope.Scope
|
|
@@ -107,7 +110,7 @@ export const ContextProvider = <
|
|
|
107
110
|
dependencies?: Dependencies
|
|
108
111
|
}
|
|
109
112
|
) => {
|
|
110
|
-
const ctx =
|
|
113
|
+
const ctx = Context.Service<
|
|
111
114
|
ContextProviderId,
|
|
112
115
|
Effect.Effect<ContextProviderA, never, ContextProviderR>
|
|
113
116
|
>(
|
|
@@ -146,17 +149,17 @@ export const MergedContextProvider = <
|
|
|
146
149
|
Effect.Effect<
|
|
147
150
|
// we need to merge all contexts into one
|
|
148
151
|
// v4: Service.Shape extracts the service value type (v3's Tag.Identifier)
|
|
149
|
-
|
|
152
|
+
Context.Context<GetContext<EffectGenUtils.Success<Context.Service.Shape<TDeps[number]>>>>,
|
|
150
153
|
never,
|
|
151
|
-
EffectGenUtils.
|
|
154
|
+
EffectGenUtils.Context<Context.Service.Shape<TDeps[number]>>
|
|
152
155
|
>,
|
|
153
156
|
LayerUtils.GetLayersError<{ [K in keyof TDeps]: TDeps[K]["Default"] }>,
|
|
154
157
|
// v4: Identifier here is correct — it's the nominal service identity for layer provide/exclude
|
|
155
158
|
| Exclude<
|
|
156
|
-
|
|
159
|
+
Context.Service.Identifier<TDeps[number]>,
|
|
157
160
|
LayerUtils.GetLayersSuccess<{ [K in keyof TDeps]: TDeps[K]["Default"] }>
|
|
158
161
|
>
|
|
159
162
|
| LayerUtils.GetLayersContext<{ [K in keyof TDeps]: TDeps[K]["Default"] }>
|
|
160
163
|
>
|
|
161
164
|
|
|
162
|
-
export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(
|
|
165
|
+
export const EmptyContextProvider = ContextProvider({ effect: Effect.succeed(Effect.succeed(Context.empty())) })
|
package/src/Emailer/Sendgrid.ts
CHANGED
|
@@ -1,63 +1,85 @@
|
|
|
1
|
-
import type { EmailData } from "@sendgrid/helpers/classes/email-address.js"
|
|
2
1
|
import type { MailContent } from "@sendgrid/helpers/classes/mail.js"
|
|
3
2
|
import sgMail from "@sendgrid/mail"
|
|
4
|
-
import
|
|
3
|
+
import * as Array from "effect-app/Array"
|
|
4
|
+
import * as Effect from "effect-app/Effect"
|
|
5
|
+
import { type EmailData, Emailer, type EmailMsg, type EmailMsgOptionalFrom, SendMailError } from "effect-app/Emailer"
|
|
5
6
|
import { dropUndefinedT } from "effect-app/utils"
|
|
7
|
+
import * as Equivalence from "effect/Equivalence"
|
|
8
|
+
import * as Redacted from "effect/Redacted"
|
|
6
9
|
import { inspect } from "util"
|
|
7
10
|
import { InfraLogger } from "../logger.js"
|
|
8
|
-
import { Emailer, type EmailMsg, type EmailMsgOptionalFrom, type SendgridConfig, SendMailError } from "./service.js"
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
export interface SendgridConfig {
|
|
13
|
+
defaultReplyTo?: EmailData
|
|
14
|
+
subjectPrefix: string
|
|
15
|
+
realMail: boolean
|
|
16
|
+
defaultFrom: EmailData
|
|
17
|
+
apiKey: Redacted.Redacted
|
|
18
|
+
/**
|
|
19
|
+
* Email address used for fake/test recipients. Use `{i}` as a placeholder for
|
|
20
|
+
* an auto-incrementing index to ensure uniqueness.
|
|
21
|
+
*
|
|
22
|
+
* @example "test+{i}@example.com"
|
|
23
|
+
*/
|
|
24
|
+
fakeMailAddress: string
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const makeSendgrid = (
|
|
28
|
+
{ apiKey, defaultFrom, defaultReplyTo, fakeMailAddress, realMail, subjectPrefix }: SendgridConfig
|
|
29
|
+
) =>
|
|
11
30
|
Effect.sync(() => {
|
|
12
31
|
sgMail.setApiKey(Redacted.value(apiKey))
|
|
13
32
|
|
|
14
33
|
return Emailer.of({
|
|
15
|
-
sendMail: Effect.fn("
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
34
|
+
sendMail: Effect.fn("Emailer.sendMail", { attributes: { "messaging.system": "sendgrid" } })(
|
|
35
|
+
function*(msg_: EmailMsgOptionalFrom) {
|
|
36
|
+
const replyTo = msg_.replyTo ?? (msg_.from ? undefined : defaultReplyTo)
|
|
37
|
+
const msg = dropUndefinedT({
|
|
38
|
+
...msg_,
|
|
39
|
+
from: msg_.from ?? defaultFrom,
|
|
40
|
+
replyTo
|
|
41
|
+
}) satisfies EmailMsg
|
|
42
|
+
const render = renderMessage(!realMail, fakeMailAddress)
|
|
22
43
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
44
|
+
const renderedMsg_ = render(msg)
|
|
45
|
+
const renderedMsg = {
|
|
46
|
+
...renderedMsg_ as Omit<typeof renderedMsg_, "content">,
|
|
47
|
+
subject: `${subjectPrefix}${renderedMsg_.subject}`,
|
|
48
|
+
..."content" in renderedMsg_
|
|
49
|
+
? { content: [...renderedMsg_.content] as [MailContent, ...MailContent[]] }
|
|
50
|
+
: {}
|
|
51
|
+
}
|
|
52
|
+
yield* InfraLogger.logDebug("Sending email").pipe(Effect.annotateLogs("msg", inspect(renderedMsg, false, 5)))
|
|
32
53
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
54
|
+
const ret = yield* Effect
|
|
55
|
+
.callback<
|
|
56
|
+
[sgMail.ClientResponse, Record<string, unknown>],
|
|
57
|
+
Error | sgMail.ResponseError
|
|
58
|
+
>(
|
|
59
|
+
(resume) =>
|
|
60
|
+
void sgMail.send(
|
|
61
|
+
renderedMsg as any, // sue me
|
|
62
|
+
msg.isMultiple ?? true,
|
|
63
|
+
(err, result) =>
|
|
64
|
+
err
|
|
65
|
+
? resume(Effect.fail(err))
|
|
66
|
+
: resume(Effect.sync(() => result))
|
|
67
|
+
)
|
|
68
|
+
)
|
|
69
|
+
.pipe(Effect.mapError((raw) => new SendMailError({ raw })))
|
|
49
70
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
// const event = {
|
|
72
|
+
// name: "EmailSent",
|
|
73
|
+
// properties: {
|
|
74
|
+
// templateId: msg.templateId
|
|
75
|
+
// }
|
|
76
|
+
// }
|
|
77
|
+
// yield* InfraLogger.logDebug("Tracking email event").annotateLogs("event", event.$$.pretty)
|
|
78
|
+
// const { trackEvent } = yield* AiContextService
|
|
79
|
+
// trackEvent(event)
|
|
80
|
+
return ret
|
|
81
|
+
}
|
|
82
|
+
)
|
|
61
83
|
})
|
|
62
84
|
})
|
|
63
85
|
|
|
@@ -68,23 +90,24 @@ export function Sendgrid(config: SendgridConfig) {
|
|
|
68
90
|
/**
|
|
69
91
|
* @hidden
|
|
70
92
|
*/
|
|
71
|
-
export function renderMessage(forceFake: boolean) {
|
|
93
|
+
export function renderMessage(forceFake: boolean, fakeMailAddress: string) {
|
|
72
94
|
let i = 0
|
|
73
95
|
const makeId = () => i++
|
|
96
|
+
const makeFakeEmail = () => fakeMailAddress.replace("{i}", String(makeId()))
|
|
74
97
|
return forceFake
|
|
75
98
|
? (msg: EmailMsg) =>
|
|
76
99
|
dropUndefinedT({
|
|
77
100
|
...msg,
|
|
78
|
-
to: msg.to && renderFake(msg.to,
|
|
79
|
-
cc: msg.cc && renderFake(msg.cc,
|
|
80
|
-
bcc: msg.bcc && renderFake(msg.bcc,
|
|
101
|
+
to: msg.to && renderFake(msg.to, makeFakeEmail),
|
|
102
|
+
cc: msg.cc && renderFake(msg.cc, makeFakeEmail),
|
|
103
|
+
bcc: msg.bcc && renderFake(msg.bcc, makeFakeEmail)
|
|
81
104
|
})
|
|
82
105
|
: (msg: EmailMsg) =>
|
|
83
106
|
dropUndefinedT({
|
|
84
107
|
...msg,
|
|
85
|
-
to: msg.to && renderFakeIfTest(msg.to,
|
|
86
|
-
cc: msg.cc && renderFakeIfTest(msg.cc,
|
|
87
|
-
bcc: msg.bcc && renderFakeIfTest(msg.bcc,
|
|
108
|
+
to: msg.to && renderFakeIfTest(msg.to, makeFakeEmail),
|
|
109
|
+
cc: msg.cc && renderFakeIfTest(msg.cc, makeFakeEmail),
|
|
110
|
+
bcc: msg.bcc && renderFakeIfTest(msg.bcc, makeFakeEmail)
|
|
88
111
|
})
|
|
89
112
|
}
|
|
90
113
|
|
|
@@ -100,10 +123,10 @@ export function isTestAddress(to: EmailData) {
|
|
|
100
123
|
)
|
|
101
124
|
}
|
|
102
125
|
|
|
103
|
-
function renderFake(addr: EmailData | readonly EmailData[],
|
|
126
|
+
function renderFake(addr: EmailData | readonly EmailData[], makeEmail: () => string) {
|
|
104
127
|
return {
|
|
105
128
|
name: renderMailData(addr),
|
|
106
|
-
email:
|
|
129
|
+
email: makeEmail()
|
|
107
130
|
}
|
|
108
131
|
}
|
|
109
132
|
const eq = Equivalence.mapInput(
|
|
@@ -117,14 +140,14 @@ function isEmailDataArray(md: EmailData | readonly EmailData[]): md is readonly
|
|
|
117
140
|
|
|
118
141
|
// TODO: should just not add any already added email address
|
|
119
142
|
// https://stackoverflow.com/a/53603076/11595834
|
|
120
|
-
function renderFakeIfTest(addr: EmailData | readonly EmailData[],
|
|
143
|
+
function renderFakeIfTest(addr: EmailData | readonly EmailData[], makeEmail: () => string) {
|
|
121
144
|
if (isEmailDataArray(addr)) {
|
|
122
145
|
return Array.dedupeWith(
|
|
123
|
-
addr.map((x) => (isTestAddress(x) ? renderFake(x,
|
|
146
|
+
addr.map((x) => (isTestAddress(x) ? renderFake(x, makeEmail) : x)),
|
|
124
147
|
eq
|
|
125
148
|
)
|
|
126
149
|
}
|
|
127
|
-
return isTestAddress(addr) ? renderFake(addr,
|
|
150
|
+
return isTestAddress(addr) ? renderFake(addr, makeEmail) : addr
|
|
128
151
|
}
|
|
129
152
|
|
|
130
153
|
function renderMailData(md: EmailData | readonly EmailData[]): string {
|
package/src/Emailer/fake.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as Effect from "effect-app/Effect"
|
|
2
|
+
import { Emailer } from "effect-app/Emailer"
|
|
2
3
|
import { pretty } from "effect-app/utils"
|
|
3
4
|
import { InfraLogger } from "../logger.js"
|
|
4
|
-
import { Emailer } from "./service.js"
|
|
5
5
|
|
|
6
6
|
const makeFake = InfraLogger
|
|
7
7
|
.logInfo("FAKE Emailer Service enabled")
|
|
8
8
|
.pipe(Effect.map(() =>
|
|
9
9
|
Emailer.of({
|
|
10
|
-
sendMail: Effect.fn("
|
|
10
|
+
sendMail: Effect.fn("Emailer.sendMail", { attributes: { "messaging.system": "fake" } })((msg) =>
|
|
11
11
|
InfraLogger
|
|
12
12
|
.logDebug(`Fake send mail`)
|
|
13
13
|
.pipe(Effect.annotateLogs("msg", pretty(msg)))
|
package/src/MainFiberSet.ts
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import * as Context from "effect-app/Context"
|
|
2
|
+
import * as Effect from "effect-app/Effect"
|
|
3
|
+
import * as Layer from "effect-app/Layer"
|
|
4
|
+
import * as Fiber from "effect/Fiber"
|
|
5
|
+
import * as FiberSet from "effect/FiberSet"
|
|
6
|
+
|
|
3
7
|
import { InfraLogger } from "./logger.js"
|
|
4
8
|
import { reportNonInterruptedFailureCause } from "./QueueMaker/errors.js"
|
|
5
9
|
import { setRootParentSpan } from "./RequestFiberSet.js"
|
|
6
10
|
|
|
7
11
|
const make = Effect.gen(function*() {
|
|
8
12
|
const set = yield* FiberSet.make<unknown, never>()
|
|
9
|
-
const add = (...fibers: Fiber.Fiber<never
|
|
10
|
-
|
|
11
|
-
const addAll = (fibers: readonly Fiber.Fiber<never, never>[]) =>
|
|
13
|
+
const add = (...fibers: Fiber.Fiber<never>[]) => Effect.sync(() => fibers.forEach((_) => FiberSet.addUnsafe(set, _)))
|
|
14
|
+
const addAll = (fibers: readonly Fiber.Fiber<never>[]) =>
|
|
12
15
|
Effect.sync(() => fibers.forEach((_) => FiberSet.addUnsafe(set, _)))
|
|
13
16
|
const join = FiberSet.size(set).pipe(
|
|
14
17
|
Effect.andThen((count) => InfraLogger.logDebug(`Joining ${count} current fibers on the MainFiberSet`)),
|
|
@@ -62,15 +65,14 @@ const make = Effect.gen(function*() {
|
|
|
62
65
|
* you should register these long running fibers in a FiberSet, and join them at the end of your main program.
|
|
63
66
|
* This way any errors will blow up the main program instead of fibers dying unknowingly.
|
|
64
67
|
*/
|
|
65
|
-
export class MainFiberSet extends
|
|
68
|
+
export class MainFiberSet extends Context.Service<MainFiberSet>()("MainFiberSet", { make }) {
|
|
66
69
|
static readonly Live = Layer.effect(this, this.make)
|
|
67
|
-
static readonly JoinLive = this.
|
|
70
|
+
static readonly JoinLive = this.pipe(
|
|
68
71
|
Effect.andThen((_) => _.join),
|
|
69
72
|
Layer.effectDiscard,
|
|
70
73
|
Layer.provide(this.Live)
|
|
71
74
|
)
|
|
72
|
-
static readonly run = <A, R>(self: Effect.Effect<A, never, R>) =>
|
|
73
|
-
this.asEffect().pipe(Effect.andThen((_) => _.run(self)))
|
|
75
|
+
static readonly run = <A, R>(self: Effect.Effect<A, never, R>) => this.pipe(Effect.andThen((_) => _.run(self)))
|
|
74
76
|
static readonly forkDaemonReport = <A, E, R>(self: Effect.Effect<A, E, R>) =>
|
|
75
|
-
this.
|
|
77
|
+
this.pipe(Effect.andThen((_) => _.forkDaemonReport(self)))
|
|
76
78
|
}
|