@effect-app/infra 2.7.0 → 2.8.0
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 +19 -0
- package/_cjs/{services/CUPS.cjs → CUPS.cjs} +1 -1
- package/_cjs/CUPS.cjs.map +1 -0
- package/_cjs/{services/Emailer → Emailer}/Sendgrid.cjs +1 -1
- package/_cjs/Emailer/Sendgrid.cjs.map +1 -0
- package/_cjs/{services/Emailer → Emailer}/fake.cjs +1 -1
- package/_cjs/Emailer/fake.cjs.map +1 -0
- package/_cjs/Emailer/service.cjs.map +1 -0
- package/_cjs/Emailer.cjs.map +1 -0
- package/_cjs/{services/MainFiberSet.cjs → MainFiberSet.cjs} +1 -1
- package/_cjs/MainFiberSet.cjs.map +1 -0
- package/_cjs/{services → Model}/Repository/ext.cjs +1 -1
- package/_cjs/Model/Repository/ext.cjs.map +1 -0
- package/_cjs/{services → Model}/Repository/legacy.cjs +2 -3
- package/_cjs/Model/Repository/legacy.cjs.map +1 -0
- package/_cjs/{services/RepositoryBase.cjs → Model/Repository/makeRepo.cjs} +10 -12
- package/_cjs/Model/Repository/makeRepo.cjs.map +1 -0
- package/_cjs/Model/Repository/service.cjs.map +1 -0
- package/_cjs/{services → Model}/Repository.cjs +12 -10
- package/_cjs/Model/Repository.cjs.map +1 -0
- package/_cjs/Model/dsl.cjs.map +1 -0
- package/_cjs/Model/filter/filterApi.cjs +6 -0
- package/_cjs/Model/filter/filterApi.cjs.map +1 -0
- package/_cjs/Model/filter/types/errors.cjs.map +1 -0
- package/_cjs/Model/filter/types/fields.cjs.map +1 -0
- package/_cjs/Model/filter/types/path/common.cjs.map +1 -0
- package/_cjs/Model/filter/types/path/eager.cjs.map +1 -0
- package/_cjs/Model/filter/types/path/index.cjs.map +1 -0
- package/_cjs/Model/filter/types/utils.cjs.map +1 -0
- package/_cjs/Model/filter/types/validator.cjs.map +1 -0
- package/_cjs/Model/filter/types.cjs.map +1 -0
- package/_cjs/Model/query/dsl.cjs.map +1 -0
- package/_cjs/Model/query/new-kid-interpreter.cjs.map +1 -0
- package/_cjs/Model/query.cjs.map +1 -0
- package/_cjs/Model.cjs +23 -2
- package/_cjs/Model.cjs.map +1 -1
- package/_cjs/{services/Operations.cjs → Operations.cjs} +3 -3
- package/_cjs/Operations.cjs.map +1 -0
- package/_cjs/{services/OperationsRepo.cjs → OperationsRepo.cjs} +2 -2
- package/_cjs/OperationsRepo.cjs.map +1 -0
- package/_cjs/{services/QueueMaker → QueueMaker}/SQLQueue.cjs +3 -3
- package/_cjs/QueueMaker/SQLQueue.cjs.map +1 -0
- package/_cjs/QueueMaker/errors.cjs.map +1 -0
- package/_cjs/{services/QueueMaker → QueueMaker}/memQueue.cjs +2 -2
- package/_cjs/QueueMaker/memQueue.cjs.map +1 -0
- package/_cjs/{services/QueueMaker → QueueMaker}/sbqueue.cjs +2 -2
- package/_cjs/QueueMaker/sbqueue.cjs.map +1 -0
- package/_cjs/{services/QueueMaker → QueueMaker}/service.cjs +1 -1
- package/_cjs/QueueMaker/service.cjs.map +1 -0
- package/_cjs/{services/RequestFiberSet.cjs → RequestFiberSet.cjs} +2 -2
- package/_cjs/RequestFiberSet.cjs.map +1 -0
- package/_cjs/Store/ContextMapContainer.cjs.map +1 -0
- package/_cjs/{services/Store → Store}/Cosmos/query.cjs +1 -1
- package/_cjs/Store/Cosmos/query.cjs.map +1 -0
- package/_cjs/{services/Store → Store}/Cosmos.cjs +2 -2
- package/_cjs/Store/Cosmos.cjs.map +1 -0
- package/_cjs/{services/Store → Store}/Disk.cjs +1 -1
- package/_cjs/Store/Disk.cjs.map +1 -0
- package/_cjs/{services/Store → Store}/Memory.cjs +1 -1
- package/_cjs/Store/Memory.cjs.map +1 -0
- package/_cjs/Store/codeFilter.cjs.map +1 -0
- package/_cjs/Store/index.cjs.map +1 -0
- package/_cjs/Store/service.cjs.map +1 -0
- package/_cjs/{services/Store → Store}/utils.cjs +1 -1
- package/_cjs/Store/utils.cjs.map +1 -0
- package/_cjs/Store.cjs.map +1 -0
- package/_cjs/adapters/SQL/Model.cjs.map +1 -0
- package/_cjs/adapters/SQL.cjs.map +1 -0
- package/_cjs/adapters/ServiceBus.cjs.map +1 -0
- package/_cjs/adapters/cosmos-client.cjs.map +1 -0
- package/_cjs/adapters/index.cjs.map +1 -0
- package/_cjs/adapters/logger.cjs.map +1 -0
- package/_cjs/adapters/memQueue.cjs.map +1 -0
- package/_cjs/adapters/mongo-client.cjs.map +1 -0
- package/_cjs/adapters/redis-client.cjs.map +1 -0
- package/_cjs/api/setupRequest.cjs +2 -2
- package/_cjs/arbs.cjs.map +1 -0
- package/_cjs/logger/shared.cjs +1 -1
- package/_cjs/logger/shared.cjs.map +1 -1
- package/_cjs/test.cjs +1 -1
- package/dist/CUPS.d.ts.map +1 -0
- package/dist/CUPS.js +116 -0
- package/dist/Emailer/Sendgrid.d.ts.map +1 -0
- package/dist/Emailer/Sendgrid.js +99 -0
- package/dist/Emailer/fake.d.ts.map +1 -0
- package/dist/Emailer/fake.js +18 -0
- package/dist/{services/Emailer → Emailer}/service.d.ts +1 -1
- package/dist/Emailer/service.d.ts.map +1 -0
- package/dist/{services/Emailer → Emailer}/service.js +1 -1
- package/dist/Emailer.d.ts.map +1 -0
- package/dist/{services/Emailer.js → Emailer.js} +1 -1
- package/dist/MainFiberSet.d.ts.map +1 -0
- package/dist/MainFiberSet.js +54 -0
- package/dist/{services → Model}/Repository/ext.d.ts +12 -12
- package/dist/Model/Repository/ext.d.ts.map +1 -0
- package/dist/Model/Repository/ext.js +61 -0
- package/dist/{services → Model}/Repository/legacy.d.ts +53 -53
- package/dist/Model/Repository/legacy.d.ts.map +1 -0
- package/dist/Model/Repository/legacy.js +123 -0
- package/dist/{services/RepositoryBase.d.ts → Model/Repository/makeRepo.d.ts} +22 -22
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
- package/dist/Model/Repository/makeRepo.js +254 -0
- package/dist/{services → Model}/Repository/service.d.ts +8 -8
- package/dist/Model/Repository/service.d.ts.map +1 -0
- package/dist/{services → Model}/Repository/service.js +1 -1
- package/dist/{services → Model}/Repository.d.ts +1 -1
- package/dist/Model/Repository.d.ts.map +1 -0
- package/dist/Model/Repository.js +5 -0
- package/dist/Model/dsl.d.ts.map +1 -0
- package/dist/Model/dsl.js +46 -0
- package/dist/{services/Store/filterApi/query.d.ts → Model/filter/filterApi.d.ts} +1 -1
- package/dist/Model/filter/filterApi.d.ts.map +1 -0
- package/dist/Model/filter/filterApi.js +2 -0
- package/dist/Model/filter/types/errors.d.ts.map +1 -0
- package/dist/{filter → Model/filter}/types/errors.js +1 -1
- package/dist/Model/filter/types/fields.d.ts.map +1 -0
- package/dist/{filter → Model/filter}/types/fields.js +1 -1
- package/dist/Model/filter/types/path/common.d.ts.map +1 -0
- package/dist/{filter → Model/filter}/types/path/common.js +1 -1
- package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
- package/dist/{filter → Model/filter}/types/path/eager.js +1 -1
- package/dist/Model/filter/types/path/index.d.ts.map +1 -0
- package/dist/{filter → Model/filter}/types/path/index.js +1 -1
- package/dist/Model/filter/types/utils.d.ts.map +1 -0
- package/dist/{filter → Model/filter}/types/utils.js +1 -1
- package/dist/Model/filter/types/validator.d.ts.map +1 -0
- package/dist/{filter → Model/filter}/types/validator.js +1 -1
- package/dist/Model/filter/types.d.ts.map +1 -0
- package/dist/{filter → Model/filter}/types.js +1 -1
- package/dist/{services → Model}/query/dsl.d.ts +6 -6
- package/dist/Model/query/dsl.d.ts.map +1 -0
- package/dist/Model/query/dsl.js +95 -0
- package/dist/{services → Model}/query/new-kid-interpreter.d.ts +4 -4
- package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
- package/dist/Model/query/new-kid-interpreter.js +133 -0
- package/dist/Model/query.d.ts.map +1 -0
- package/dist/{services → Model}/query.js +1 -1
- package/dist/Model.d.ts +3 -1
- package/dist/Model.d.ts.map +1 -1
- package/dist/Model.js +4 -2
- package/dist/Operations.d.ts.map +1 -0
- package/dist/Operations.js +102 -0
- package/dist/{services/OperationsRepo.d.ts → OperationsRepo.d.ts} +1 -1
- package/dist/OperationsRepo.d.ts.map +1 -0
- package/dist/OperationsRepo.js +14 -0
- package/dist/QueueMaker/SQLQueue.d.ts.map +1 -0
- package/dist/QueueMaker/SQLQueue.js +136 -0
- package/dist/QueueMaker/errors.d.ts.map +1 -0
- package/dist/QueueMaker/errors.js +20 -0
- package/dist/QueueMaker/memQueue.d.ts.map +1 -0
- package/dist/QueueMaker/memQueue.js +78 -0
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -0
- package/dist/QueueMaker/sbqueue.js +102 -0
- package/dist/{services/QueueMaker → QueueMaker}/service.d.ts +1 -1
- package/dist/QueueMaker/service.d.ts.map +1 -0
- package/dist/QueueMaker/service.js +4 -0
- package/dist/RequestFiberSet.d.ts.map +1 -0
- package/dist/RequestFiberSet.js +79 -0
- package/dist/Store/ContextMapContainer.d.ts.map +1 -0
- package/dist/{services/Store → Store}/ContextMapContainer.js +1 -1
- package/dist/{services/Store → Store}/Cosmos/query.d.ts +1 -1
- package/dist/Store/Cosmos/query.d.ts.map +1 -0
- package/dist/Store/Cosmos/query.js +164 -0
- package/dist/Store/Cosmos.d.ts.map +1 -0
- package/dist/Store/Cosmos.js +258 -0
- package/dist/Store/Disk.d.ts.map +1 -0
- package/dist/Store/Disk.js +109 -0
- package/dist/Store/Memory.d.ts.map +1 -0
- package/dist/Store/Memory.js +170 -0
- package/dist/{services/Store → Store}/codeFilter.d.ts +1 -1
- package/dist/Store/codeFilter.d.ts.map +1 -0
- package/dist/Store/codeFilter.js +117 -0
- package/dist/Store/index.d.ts.map +1 -0
- package/dist/Store/index.js +28 -0
- package/dist/{services/Store → Store}/service.d.ts +5 -5
- package/dist/Store/service.d.ts.map +1 -0
- package/dist/{services/Store → Store}/service.js +1 -1
- package/dist/{services/Store → Store}/utils.d.ts +1 -1
- package/dist/Store/utils.d.ts.map +1 -0
- package/dist/Store/utils.js +44 -0
- package/dist/Store.d.ts.map +1 -0
- package/dist/{services/Store.js → Store.js} +1 -1
- package/dist/{services/adapters → adapters}/SQL/Model.d.ts +23 -23
- package/dist/adapters/SQL/Model.d.ts.map +1 -0
- package/dist/adapters/SQL/Model.js +508 -0
- package/dist/adapters/SQL.d.ts.map +1 -0
- package/dist/{services/adapters → adapters}/SQL.js +1 -1
- package/dist/adapters/ServiceBus.d.ts.map +1 -0
- package/dist/adapters/ServiceBus.js +73 -0
- package/dist/adapters/cosmos-client.d.ts.map +1 -0
- package/dist/adapters/cosmos-client.js +8 -0
- package/dist/{services/adapters → adapters}/index.d.ts.map +1 -1
- package/dist/{services/adapters → adapters}/index.js +1 -1
- package/dist/adapters/logger.d.ts.map +1 -0
- package/dist/{services/adapters → adapters}/logger.js +1 -1
- package/dist/adapters/memQueue.d.ts.map +1 -0
- package/dist/adapters/memQueue.js +24 -0
- package/dist/adapters/mongo-client.d.ts.map +1 -0
- package/dist/adapters/mongo-client.js +12 -0
- package/dist/adapters/redis-client.d.ts.map +1 -0
- package/dist/adapters/redis-client.js +93 -0
- package/dist/api/setupRequest.js +3 -3
- package/dist/arbs.d.ts.map +1 -0
- package/dist/arbs.js +21 -0
- package/dist/logger/shared.js +2 -2
- package/dist/test.d.ts +1 -1
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +3 -3
- package/examples/query.ts +3 -3
- package/package.json +352 -362
- package/src/{services/CUPS.ts → CUPS.ts} +1 -1
- package/src/{services/Emailer → Emailer}/Sendgrid.ts +1 -1
- package/src/{services/Emailer → Emailer}/fake.ts +1 -1
- package/src/{services/MainFiberSet.ts → MainFiberSet.ts} +1 -1
- package/src/{services → Model}/Repository/ext.ts +23 -11
- package/src/{services → Model}/Repository/legacy.ts +78 -51
- package/src/{services/RepositoryBase.ts → Model/Repository/makeRepo.ts} +40 -38
- package/src/{services → Model}/Repository/service.ts +9 -8
- package/src/{services → Model}/Repository.ts +1 -1
- package/src/{services → Model}/query/dsl.ts +24 -6
- package/src/{services → Model}/query/new-kid-interpreter.ts +3 -3
- package/src/Model.ts +3 -1
- package/src/{services/Operations.ts → Operations.ts} +3 -3
- package/src/{services/OperationsRepo.ts → OperationsRepo.ts} +1 -1
- package/src/{services/QueueMaker → QueueMaker}/SQLQueue.ts +4 -4
- package/src/{services/QueueMaker → QueueMaker}/memQueue.ts +2 -2
- package/src/{services/QueueMaker → QueueMaker}/sbqueue.ts +2 -2
- package/src/{services/QueueMaker → QueueMaker}/service.ts +1 -1
- package/src/{services/RequestFiberSet.ts → RequestFiberSet.ts} +2 -2
- package/src/{services/Store → Store}/Cosmos/query.ts +2 -2
- package/src/{services/Store → Store}/Cosmos.ts +2 -2
- package/src/{services/Store → Store}/Disk.ts +1 -1
- package/src/{services/Store → Store}/Memory.ts +1 -1
- package/src/{services/Store → Store}/codeFilter.ts +1 -1
- package/src/{services/Store → Store}/service.ts +4 -4
- package/src/{services/Store → Store}/utils.ts +1 -1
- package/src/api/setupRequest.ts +2 -2
- package/src/logger/shared.ts +1 -1
- package/src/test.ts +2 -2
- package/test/dist/query.test.d.ts.map +1 -1
- package/test/query.test.ts +32 -5
- package/_cjs/_ext/Array.cjs +0 -22
- package/_cjs/_ext/Array.cjs.map +0 -1
- package/_cjs/filter/types/errors.cjs.map +0 -1
- package/_cjs/filter/types/fields.cjs.map +0 -1
- package/_cjs/filter/types/path/common.cjs.map +0 -1
- package/_cjs/filter/types/path/eager.cjs.map +0 -1
- package/_cjs/filter/types/path/index.cjs.map +0 -1
- package/_cjs/filter/types/utils.cjs.map +0 -1
- package/_cjs/filter/types/validator.cjs.map +0 -1
- package/_cjs/filter/types.cjs.map +0 -1
- package/_cjs/services/CUPS.cjs.map +0 -1
- package/_cjs/services/Emailer/Sendgrid.cjs.map +0 -1
- package/_cjs/services/Emailer/fake.cjs.map +0 -1
- package/_cjs/services/Emailer/service.cjs.map +0 -1
- package/_cjs/services/Emailer.cjs.map +0 -1
- package/_cjs/services/MainFiberSet.cjs.map +0 -1
- package/_cjs/services/Operations.cjs.map +0 -1
- package/_cjs/services/OperationsRepo.cjs.map +0 -1
- package/_cjs/services/QueueMaker/SQLQueue.cjs.map +0 -1
- package/_cjs/services/QueueMaker/errors.cjs.map +0 -1
- package/_cjs/services/QueueMaker/memQueue.cjs.map +0 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +0 -1
- package/_cjs/services/QueueMaker/service.cjs.map +0 -1
- package/_cjs/services/Repository/dsl.cjs.map +0 -1
- package/_cjs/services/Repository/ext.cjs.map +0 -1
- package/_cjs/services/Repository/legacy.cjs.map +0 -1
- package/_cjs/services/Repository/service.cjs.map +0 -1
- package/_cjs/services/Repository.cjs.map +0 -1
- package/_cjs/services/RepositoryBase.cjs.map +0 -1
- package/_cjs/services/RequestFiberSet.cjs.map +0 -1
- package/_cjs/services/Store/ContextMapContainer.cjs.map +0 -1
- package/_cjs/services/Store/Cosmos/query.cjs.map +0 -1
- package/_cjs/services/Store/Cosmos.cjs.map +0 -1
- package/_cjs/services/Store/Disk.cjs.map +0 -1
- package/_cjs/services/Store/Memory.cjs.map +0 -1
- package/_cjs/services/Store/codeFilter.cjs.map +0 -1
- package/_cjs/services/Store/filterApi/query.cjs +0 -6
- package/_cjs/services/Store/filterApi/query.cjs.map +0 -1
- package/_cjs/services/Store/index.cjs.map +0 -1
- package/_cjs/services/Store/service.cjs.map +0 -1
- package/_cjs/services/Store/utils.cjs.map +0 -1
- package/_cjs/services/Store.cjs.map +0 -1
- package/_cjs/services/adapters/SQL/Model.cjs.map +0 -1
- package/_cjs/services/adapters/SQL.cjs.map +0 -1
- package/_cjs/services/adapters/ServiceBus.cjs.map +0 -1
- package/_cjs/services/adapters/cosmos-client.cjs.map +0 -1
- package/_cjs/services/adapters/index.cjs.map +0 -1
- package/_cjs/services/adapters/logger.cjs.map +0 -1
- package/_cjs/services/adapters/memQueue.cjs.map +0 -1
- package/_cjs/services/adapters/mongo-client.cjs.map +0 -1
- package/_cjs/services/adapters/redis-client.cjs.map +0 -1
- package/_cjs/services/query/dsl.cjs.map +0 -1
- package/_cjs/services/query/new-kid-interpreter.cjs.map +0 -1
- package/_cjs/services/query.cjs.map +0 -1
- package/_cjs/test/arbs.cjs.map +0 -1
- package/dist/_ext/Array.d.ts +0 -13
- package/dist/_ext/Array.d.ts.map +0 -1
- package/dist/_ext/Array.js +0 -15
- package/dist/filter/types/errors.d.ts.map +0 -1
- package/dist/filter/types/fields.d.ts.map +0 -1
- package/dist/filter/types/path/common.d.ts.map +0 -1
- package/dist/filter/types/path/eager.d.ts.map +0 -1
- package/dist/filter/types/path/index.d.ts.map +0 -1
- package/dist/filter/types/utils.d.ts.map +0 -1
- package/dist/filter/types/validator.d.ts.map +0 -1
- package/dist/filter/types.d.ts.map +0 -1
- package/dist/services/CUPS.d.ts.map +0 -1
- package/dist/services/CUPS.js +0 -116
- package/dist/services/Emailer/Sendgrid.d.ts.map +0 -1
- package/dist/services/Emailer/Sendgrid.js +0 -99
- package/dist/services/Emailer/fake.d.ts.map +0 -1
- package/dist/services/Emailer/fake.js +0 -18
- package/dist/services/Emailer/service.d.ts.map +0 -1
- package/dist/services/Emailer.d.ts.map +0 -1
- package/dist/services/MainFiberSet.d.ts.map +0 -1
- package/dist/services/MainFiberSet.js +0 -54
- package/dist/services/Operations.d.ts.map +0 -1
- package/dist/services/Operations.js +0 -102
- package/dist/services/OperationsRepo.d.ts.map +0 -1
- package/dist/services/OperationsRepo.js +0 -14
- package/dist/services/QueueMaker/SQLQueue.d.ts.map +0 -1
- package/dist/services/QueueMaker/SQLQueue.js +0 -136
- package/dist/services/QueueMaker/errors.d.ts.map +0 -1
- package/dist/services/QueueMaker/errors.js +0 -20
- package/dist/services/QueueMaker/memQueue.d.ts.map +0 -1
- package/dist/services/QueueMaker/memQueue.js +0 -78
- package/dist/services/QueueMaker/sbqueue.d.ts.map +0 -1
- package/dist/services/QueueMaker/sbqueue.js +0 -102
- package/dist/services/QueueMaker/service.d.ts.map +0 -1
- package/dist/services/QueueMaker/service.js +0 -4
- package/dist/services/Repository/dsl.d.ts.map +0 -1
- package/dist/services/Repository/dsl.js +0 -46
- package/dist/services/Repository/ext.d.ts.map +0 -1
- package/dist/services/Repository/ext.js +0 -61
- package/dist/services/Repository/legacy.d.ts.map +0 -1
- package/dist/services/Repository/legacy.js +0 -124
- package/dist/services/Repository/service.d.ts.map +0 -1
- package/dist/services/Repository.d.ts.map +0 -1
- package/dist/services/Repository.js +0 -5
- package/dist/services/RepositoryBase.d.ts.map +0 -1
- package/dist/services/RepositoryBase.js +0 -256
- package/dist/services/RequestFiberSet.d.ts.map +0 -1
- package/dist/services/RequestFiberSet.js +0 -79
- package/dist/services/Store/ContextMapContainer.d.ts.map +0 -1
- package/dist/services/Store/Cosmos/query.d.ts.map +0 -1
- package/dist/services/Store/Cosmos/query.js +0 -164
- package/dist/services/Store/Cosmos.d.ts.map +0 -1
- package/dist/services/Store/Cosmos.js +0 -258
- package/dist/services/Store/Disk.d.ts.map +0 -1
- package/dist/services/Store/Disk.js +0 -109
- package/dist/services/Store/Memory.d.ts.map +0 -1
- package/dist/services/Store/Memory.js +0 -170
- package/dist/services/Store/codeFilter.d.ts.map +0 -1
- package/dist/services/Store/codeFilter.js +0 -117
- package/dist/services/Store/filterApi/query.d.ts.map +0 -1
- package/dist/services/Store/filterApi/query.js +0 -2
- package/dist/services/Store/index.d.ts.map +0 -1
- package/dist/services/Store/index.js +0 -28
- package/dist/services/Store/service.d.ts.map +0 -1
- package/dist/services/Store/utils.d.ts.map +0 -1
- package/dist/services/Store/utils.js +0 -44
- package/dist/services/Store.d.ts.map +0 -1
- package/dist/services/adapters/SQL/Model.d.ts.map +0 -1
- package/dist/services/adapters/SQL/Model.js +0 -508
- package/dist/services/adapters/SQL.d.ts.map +0 -1
- package/dist/services/adapters/ServiceBus.d.ts.map +0 -1
- package/dist/services/adapters/ServiceBus.js +0 -73
- package/dist/services/adapters/cosmos-client.d.ts.map +0 -1
- package/dist/services/adapters/cosmos-client.js +0 -8
- package/dist/services/adapters/logger.d.ts.map +0 -1
- package/dist/services/adapters/memQueue.d.ts.map +0 -1
- package/dist/services/adapters/memQueue.js +0 -24
- package/dist/services/adapters/mongo-client.d.ts.map +0 -1
- package/dist/services/adapters/mongo-client.js +0 -12
- package/dist/services/adapters/redis-client.d.ts.map +0 -1
- package/dist/services/adapters/redis-client.js +0 -93
- package/dist/services/query/dsl.d.ts.map +0 -1
- package/dist/services/query/dsl.js +0 -95
- package/dist/services/query/new-kid-interpreter.d.ts.map +0 -1
- package/dist/services/query/new-kid-interpreter.js +0 -133
- package/dist/services/query.d.ts.map +0 -1
- package/dist/test/arbs.d.ts.map +0 -1
- package/dist/test/arbs.js +0 -21
- package/src/_ext/Array.ts +0 -22
- /package/_cjs/{services/Emailer → Emailer}/service.cjs +0 -0
- /package/_cjs/{services/Emailer.cjs → Emailer.cjs} +0 -0
- /package/_cjs/{services → Model}/Repository/service.cjs +0 -0
- /package/_cjs/{services/Repository → Model}/dsl.cjs +0 -0
- /package/_cjs/{filter → Model/filter}/types/errors.cjs +0 -0
- /package/_cjs/{filter → Model/filter}/types/fields.cjs +0 -0
- /package/_cjs/{filter → Model/filter}/types/path/common.cjs +0 -0
- /package/_cjs/{filter → Model/filter}/types/path/eager.cjs +0 -0
- /package/_cjs/{filter → Model/filter}/types/path/index.cjs +0 -0
- /package/_cjs/{filter → Model/filter}/types/utils.cjs +0 -0
- /package/_cjs/{filter → Model/filter}/types/validator.cjs +0 -0
- /package/_cjs/{filter → Model/filter}/types.cjs +0 -0
- /package/_cjs/{services → Model}/query/dsl.cjs +0 -0
- /package/_cjs/{services → Model}/query/new-kid-interpreter.cjs +0 -0
- /package/_cjs/{services → Model}/query.cjs +0 -0
- /package/_cjs/{services/QueueMaker → QueueMaker}/errors.cjs +0 -0
- /package/_cjs/{services/Store → Store}/ContextMapContainer.cjs +0 -0
- /package/_cjs/{services/Store → Store}/codeFilter.cjs +0 -0
- /package/_cjs/{services/Store → Store}/index.cjs +0 -0
- /package/_cjs/{services/Store → Store}/service.cjs +0 -0
- /package/_cjs/{services/Store.cjs → Store.cjs} +0 -0
- /package/_cjs/{services/adapters → adapters}/SQL/Model.cjs +0 -0
- /package/_cjs/{services/adapters → adapters}/SQL.cjs +0 -0
- /package/_cjs/{services/adapters → adapters}/ServiceBus.cjs +0 -0
- /package/_cjs/{services/adapters → adapters}/cosmos-client.cjs +0 -0
- /package/_cjs/{services/adapters → adapters}/index.cjs +0 -0
- /package/_cjs/{services/adapters → adapters}/logger.cjs +0 -0
- /package/_cjs/{services/adapters → adapters}/memQueue.cjs +0 -0
- /package/_cjs/{services/adapters → adapters}/mongo-client.cjs +0 -0
- /package/_cjs/{services/adapters → adapters}/redis-client.cjs +0 -0
- /package/_cjs/{test/arbs.cjs → arbs.cjs} +0 -0
- /package/dist/{services/CUPS.d.ts → CUPS.d.ts} +0 -0
- /package/dist/{services/Emailer → Emailer}/Sendgrid.d.ts +0 -0
- /package/dist/{services/Emailer → Emailer}/fake.d.ts +0 -0
- /package/dist/{services/Emailer.d.ts → Emailer.d.ts} +0 -0
- /package/dist/{services/MainFiberSet.d.ts → MainFiberSet.d.ts} +0 -0
- /package/dist/{services/Repository → Model}/dsl.d.ts +0 -0
- /package/dist/{filter → Model/filter}/types/errors.d.ts +0 -0
- /package/dist/{filter → Model/filter}/types/fields.d.ts +0 -0
- /package/dist/{filter → Model/filter}/types/path/common.d.ts +0 -0
- /package/dist/{filter → Model/filter}/types/path/eager.d.ts +0 -0
- /package/dist/{filter → Model/filter}/types/path/index.d.ts +0 -0
- /package/dist/{filter → Model/filter}/types/utils.d.ts +0 -0
- /package/dist/{filter → Model/filter}/types/validator.d.ts +0 -0
- /package/dist/{filter → Model/filter}/types.d.ts +0 -0
- /package/dist/{services → Model}/query.d.ts +0 -0
- /package/dist/{services/Operations.d.ts → Operations.d.ts} +0 -0
- /package/dist/{services/QueueMaker → QueueMaker}/SQLQueue.d.ts +0 -0
- /package/dist/{services/QueueMaker → QueueMaker}/errors.d.ts +0 -0
- /package/dist/{services/QueueMaker → QueueMaker}/memQueue.d.ts +0 -0
- /package/dist/{services/QueueMaker → QueueMaker}/sbqueue.d.ts +0 -0
- /package/dist/{services/RequestFiberSet.d.ts → RequestFiberSet.d.ts} +0 -0
- /package/dist/{services/Store → Store}/ContextMapContainer.d.ts +0 -0
- /package/dist/{services/Store → Store}/Cosmos.d.ts +0 -0
- /package/dist/{services/Store → Store}/Disk.d.ts +0 -0
- /package/dist/{services/Store → Store}/Memory.d.ts +0 -0
- /package/dist/{services/Store → Store}/index.d.ts +0 -0
- /package/dist/{services/Store.d.ts → Store.d.ts} +0 -0
- /package/dist/{services/adapters → adapters}/SQL.d.ts +0 -0
- /package/dist/{services/adapters → adapters}/ServiceBus.d.ts +0 -0
- /package/dist/{services/adapters → adapters}/cosmos-client.d.ts +0 -0
- /package/dist/{services/adapters → adapters}/index.d.ts +0 -0
- /package/dist/{services/adapters → adapters}/logger.d.ts +0 -0
- /package/dist/{services/adapters → adapters}/memQueue.d.ts +0 -0
- /package/dist/{services/adapters → adapters}/mongo-client.d.ts +0 -0
- /package/dist/{services/adapters → adapters}/redis-client.d.ts +0 -0
- /package/dist/{test/arbs.d.ts → arbs.d.ts} +0 -0
- /package/src/{services/Emailer → Emailer}/service.ts +0 -0
- /package/src/{services/Emailer.ts → Emailer.ts} +0 -0
- /package/src/{services/Repository → Model}/dsl.ts +0 -0
- /package/src/{services/Store/filterApi/query.ts → Model/filter/filterApi.ts} +0 -0
- /package/src/{filter → Model/filter}/types/errors.ts +0 -0
- /package/src/{filter → Model/filter}/types/fields.ts +0 -0
- /package/src/{filter → Model/filter}/types/path/common.ts +0 -0
- /package/src/{filter → Model/filter}/types/path/eager.ts +0 -0
- /package/src/{filter → Model/filter}/types/path/index.ts +0 -0
- /package/src/{filter → Model/filter}/types/utils.ts +0 -0
- /package/src/{filter → Model/filter}/types/validator.ts +0 -0
- /package/src/{filter → Model/filter}/types.ts +0 -0
- /package/src/{services → Model}/query.ts +0 -0
- /package/src/{services/QueueMaker → QueueMaker}/errors.ts +0 -0
- /package/src/{services/Store → Store}/ContextMapContainer.ts +0 -0
- /package/src/{services/Store → Store}/index.test.ts.bak +0 -0
- /package/src/{services/Store → Store}/index.ts +0 -0
- /package/src/{services/Store.ts → Store.ts} +0 -0
- /package/src/{services/adapters → adapters}/SQL/Model.ts +0 -0
- /package/src/{services/adapters → adapters}/SQL.ts +0 -0
- /package/src/{services/adapters → adapters}/ServiceBus.ts +0 -0
- /package/src/{services/adapters → adapters}/cosmos-client.ts +0 -0
- /package/src/{services/adapters → adapters}/index.ts +0 -0
- /package/src/{services/adapters → adapters}/logger.ts +0 -0
- /package/src/{services/adapters → adapters}/memQueue.ts +0 -0
- /package/src/{services/adapters → adapters}/mongo-client.ts +0 -0
- /package/src/{services/adapters → adapters}/redis-client.ts +0 -0
- /package/src/{test/arbs.ts → arbs.ts} +0 -0
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { reportError } from "@effect-app/infra/errorReporter";
|
|
2
|
-
import { subHours } from "date-fns";
|
|
3
|
-
import { Cause, Context, copy, Duration, Effect, Exit, Layer, Option, S, Schedule } from "effect-app";
|
|
4
|
-
import { annotateLogscoped } from "effect-app/Effect";
|
|
5
|
-
import { dual, pipe } from "effect-app/Function";
|
|
6
|
-
import { Operation, OperationFailure, OperationId, OperationSuccess } from "effect-app/Operations";
|
|
7
|
-
import { NonEmptyString2k } from "effect-app/Schema";
|
|
8
|
-
import * as Scope from "effect/Scope";
|
|
9
|
-
import { setupRequestContextFromCurrent } from "../api/setupRequest.js";
|
|
10
|
-
import { batch } from "../rateLimit.js";
|
|
11
|
-
import { MainFiberSet } from "./MainFiberSet.js";
|
|
12
|
-
import { OperationsRepo } from "./OperationsRepo.js";
|
|
13
|
-
import { where } from "./query.js";
|
|
14
|
-
import { RequestFiberSet } from "./RequestFiberSet.js";
|
|
15
|
-
const reportAppError = reportError("Operations.Cleanup");
|
|
16
|
-
const make = Effect.gen(function* () {
|
|
17
|
-
const repo = yield* OperationsRepo;
|
|
18
|
-
const reqFiberSet = yield* RequestFiberSet;
|
|
19
|
-
const makeOp = Effect.sync(() => OperationId.make());
|
|
20
|
-
const register = (title) => Effect.tap(makeOp, (id) => Effect.andThen(annotateLogscoped("operationId", id), Effect.acquireRelease(addOp(id, title), (_, exit) => finishOp(id, exit))));
|
|
21
|
-
const cleanup = Effect.sync(() => subHours(new Date(), 1)).pipe(Effect.andThen((before) => repo.query(where("updatedAt", "lt", before.toISOString()))), Effect.andThen((ops) => pipe(ops, batch(100, Effect.succeed, (items) => repo.removeAndPublish(items)))), setupRequestContextFromCurrent("Operations.cleanup"));
|
|
22
|
-
function addOp(id, title) {
|
|
23
|
-
return repo.save(new Operation({ id, title })).pipe(Effect.orDie);
|
|
24
|
-
}
|
|
25
|
-
function findOp(id) {
|
|
26
|
-
return repo.find(id);
|
|
27
|
-
}
|
|
28
|
-
function finishOp(id, exit) {
|
|
29
|
-
return Effect
|
|
30
|
-
.flatMap(repo.get(id).pipe(Effect.orDie), (_) => repo
|
|
31
|
-
.save(copy(_, {
|
|
32
|
-
updatedAt: new Date(),
|
|
33
|
-
result: Exit.isSuccess(exit)
|
|
34
|
-
? new OperationSuccess()
|
|
35
|
-
: new OperationFailure({
|
|
36
|
-
message: Cause.isInterrupted(exit.cause)
|
|
37
|
-
? NonEmptyString2k("Interrupted")
|
|
38
|
-
: Cause.isDie(exit.cause)
|
|
39
|
-
? NonEmptyString2k("Unknown error")
|
|
40
|
-
: Cause
|
|
41
|
-
.failureOption(exit.cause)
|
|
42
|
-
.pipe(Option.flatMap((_) => typeof _ === "object" && _ !== null && "message" in _ && S.is(NonEmptyString2k)(_.message)
|
|
43
|
-
? Option.some(_.message)
|
|
44
|
-
: Option.none()), Option.getOrNull)
|
|
45
|
-
})
|
|
46
|
-
}))
|
|
47
|
-
.pipe(Effect.orDie));
|
|
48
|
-
}
|
|
49
|
-
function update(id, progress) {
|
|
50
|
-
return Effect.flatMap(repo.get(id).pipe(Effect.orDie), (_) => repo.save(copy(_, { updatedAt: new Date(), progress })).pipe(Effect.orDie));
|
|
51
|
-
}
|
|
52
|
-
function fork(self, fnc, title) {
|
|
53
|
-
return Effect
|
|
54
|
-
.flatMap(Scope.make(), (scope) => register(title)
|
|
55
|
-
.pipe(Scope.extend(scope), Effect.flatMap((id) => reqFiberSet
|
|
56
|
-
.forkDaemonReportUnexpected(Scope.use(self(id).pipe(Effect.withSpan(title, { captureStackTrace: false })), scope))
|
|
57
|
-
.pipe(Effect.map((fiber) => ({ fiber, id })))), Effect.tap(({ id }) => Effect.interruptible(fnc(id)).pipe(Effect.forkScoped, Scope.extend(scope)))));
|
|
58
|
-
}
|
|
59
|
-
const fork2 = dual(2, (self, title) => Effect.flatMap(Scope.make(), (scope) => register(title)
|
|
60
|
-
.pipe(Scope.extend(scope), Effect
|
|
61
|
-
.flatMap((id) => reqFiberSet
|
|
62
|
-
.forkDaemonReportUnexpected(Scope.use(self(id).pipe(Effect.withSpan(title, { captureStackTrace: false })), scope))
|
|
63
|
-
.pipe(Effect.map((fiber) => ({ fiber, id })))))));
|
|
64
|
-
const forkOperation = dual(2, (self, title) => Effect.flatMap(Scope.make(), (scope) => register(title)
|
|
65
|
-
.pipe(Scope.extend(scope), Effect
|
|
66
|
-
.flatMap((id) => reqFiberSet
|
|
67
|
-
.forkDaemonReportUnexpected(Scope.use(self.pipe(Effect.withSpan(title, { captureStackTrace: false })), scope))
|
|
68
|
-
.pipe(Effect.map((fiber) => ({ fiber, id })))))));
|
|
69
|
-
function forkOperationFunction(fnc, title) {
|
|
70
|
-
return (inp) => fnc(inp).pipe((_) => forkOperation(_, title));
|
|
71
|
-
}
|
|
72
|
-
return {
|
|
73
|
-
cleanup,
|
|
74
|
-
register,
|
|
75
|
-
fork,
|
|
76
|
-
fork2,
|
|
77
|
-
forkOperation,
|
|
78
|
-
forkOperationFunction,
|
|
79
|
-
all: repo.all,
|
|
80
|
-
find: findOp,
|
|
81
|
-
update
|
|
82
|
-
};
|
|
83
|
-
});
|
|
84
|
-
export class Operations extends Context.TagMakeId("effect-app/Operations", make)() {
|
|
85
|
-
static CleanupLive = this
|
|
86
|
-
.use((_) => _.cleanup.pipe(Effect.exit, Effect
|
|
87
|
-
.flatMap((_) => {
|
|
88
|
-
if (Exit.isSuccess(_)) {
|
|
89
|
-
return Effect.void;
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
return reportAppError(_.cause);
|
|
93
|
-
}
|
|
94
|
-
}), Effect.schedule(Schedule.fixed(Duration.minutes(20))), Effect.map((_) => _), MainFiberSet.run))
|
|
95
|
-
.pipe(Layer.effectDiscard, Layer.provide(MainFiberSet.Live));
|
|
96
|
-
static Live = this.CleanupLive.pipe(Layer.provideMerge(this.toLayer()), Layer.provide(RequestFiberSet.Live));
|
|
97
|
-
static forkOperation = (title) => (self) => this.use((_) => _.forkOperation(self, title));
|
|
98
|
-
static forkOperationFunction = (fnc, title) => (inp) => this.use((_) => _.forkOperationFunction(fnc, title)(inp));
|
|
99
|
-
static fork = (self, fnc, title) => this.use((_) => _.fork(self, fnc, title));
|
|
100
|
-
static fork2 = (title) => (self) => this.use((_) => _.fork2(self, title));
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9PcGVyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBRW5DLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDckQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUVoRCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2xHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3BELE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBQ3JDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDaEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXRELE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0FB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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OperationsRepo.d.ts","sourceRoot":"","sources":["../../src/services/OperationsRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;;;;AAGjD,qBAAa,cAAe,SAAQ,mBAWnC;CAAG"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect-app";
|
|
2
|
-
import { Operation } from "effect-app/Operations";
|
|
3
|
-
import { makeRepo } from "./RepositoryBase.js";
|
|
4
|
-
export class OperationsRepo extends Effect.Service()("OperationRepo", {
|
|
5
|
-
effect: Effect.gen(function* () {
|
|
6
|
-
return yield* makeRepo("Operation", Operation, {
|
|
7
|
-
config: {
|
|
8
|
-
allowNamespace: () => true
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
})
|
|
12
|
-
}) {
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uc1JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvT3BlcmF0aW9uc1JlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRTlDLE1BQU0sT0FBTyxjQUFlLFNBQVEsTUFBTSxDQUFDLE9BQU8sRUFBa0IsQ0FDbEUsZUFBZSxFQUNmO0lBQ0UsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUU7WUFDN0MsTUFBTSxFQUFFO2dCQUNOLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJO2FBQzNCO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQyxDQUFDO0NBQ0gsQ0FDRjtDQUFHIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SQLQueue.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/SQLQueue.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,OAAO,EAAE,MAAM,EAAiB,CAAC,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAK1D,eAAO,MAAM,OAAO;;aAAoC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAGzC,wBAAgB,YAAY,CAC1B,GAAG,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5C,QAAQ,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACjD,IAAI,EACJ,SAAS,EAET,SAAS,EAAE,iBAAiB,EAC5B,cAAc,EAAE,iBAAiB,EACjC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;;YA0G9B,MAAM,EAAE,MAAM,eACP,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,cAC/C,MAAM;+BA6DzB"}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { getRequestContext, setupRequestContext } from "@effect-app/infra/api/setupRequest";
|
|
2
|
-
import { reportNonInterruptedFailure } from "@effect-app/infra/services/QueueMaker/errors";
|
|
3
|
-
import { QueueMeta } from "@effect-app/infra/services/QueueMaker/service";
|
|
4
|
-
import { SqlClient } from "@effect/sql";
|
|
5
|
-
import { randomUUID } from "crypto";
|
|
6
|
-
import { subMinutes } from "date-fns";
|
|
7
|
-
import { Effect, Fiber, Option, S, Tracer } from "effect-app";
|
|
8
|
-
import { pretty } from "effect-app/utils";
|
|
9
|
-
import { InfraLogger } from "../../logger.js";
|
|
10
|
-
import { SQLModel } from "../adapters/SQL.js";
|
|
11
|
-
export const QueueId = S.Number.pipe(S.brand("QueueId"));
|
|
12
|
-
// TODO: let the model track and Auto Generate versionColumn on every update instead
|
|
13
|
-
export function makeSQLQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
14
|
-
return Effect.gen(function* () {
|
|
15
|
-
const base = {
|
|
16
|
-
id: SQLModel.Generated(QueueId),
|
|
17
|
-
meta: SQLModel.JsonFromString(QueueMeta),
|
|
18
|
-
name: S.NonEmptyString255,
|
|
19
|
-
createdAt: SQLModel.DateTimeInsert,
|
|
20
|
-
updatedAt: SQLModel.DateTimeUpdate,
|
|
21
|
-
// TODO: at+owner
|
|
22
|
-
processingAt: SQLModel.FieldOption(S.Date),
|
|
23
|
-
finishedAt: SQLModel.FieldOption(S.Date),
|
|
24
|
-
etag: S.String // TODO: use a SQLModel thing that auto updates it?
|
|
25
|
-
// TODO: record locking.. / optimistic locking
|
|
26
|
-
// rowVersion: SQLModel.DateTimeFromNumberWithNow
|
|
27
|
-
};
|
|
28
|
-
class Queue extends SQLModel.Class("Queue")({
|
|
29
|
-
body: SQLModel.JsonFromString(schema),
|
|
30
|
-
...base
|
|
31
|
-
}) {
|
|
32
|
-
}
|
|
33
|
-
class Drain extends SQLModel.Class("Drain")({
|
|
34
|
-
body: SQLModel.JsonFromString(drainSchema),
|
|
35
|
-
...base
|
|
36
|
-
}) {
|
|
37
|
-
}
|
|
38
|
-
const sql = yield* SqlClient.SqlClient;
|
|
39
|
-
const queueRepo = yield* SQLModel.makeRepository(Queue, {
|
|
40
|
-
tableName: "queue",
|
|
41
|
-
spanPrefix: "QueueRepo",
|
|
42
|
-
idColumn: "id",
|
|
43
|
-
versionColumn: "etag"
|
|
44
|
-
});
|
|
45
|
-
const drainRepo = yield* SQLModel.makeRepository(Drain, {
|
|
46
|
-
tableName: "queue",
|
|
47
|
-
spanPrefix: "DrainRepo",
|
|
48
|
-
idColumn: "id",
|
|
49
|
-
versionColumn: "etag"
|
|
50
|
-
});
|
|
51
|
-
const decodeDrain = S.decode(Drain);
|
|
52
|
-
const drain = Effect
|
|
53
|
-
.sync(() => subMinutes(new Date(), 15))
|
|
54
|
-
.pipe(Effect
|
|
55
|
-
.andThen((limit) => sql `SELECT *
|
|
56
|
-
FROM queue
|
|
57
|
-
WHERE name = ${queueDrainName} AND finishedAt IS NULL AND (processingAt IS NULL OR processingAt < ${limit.getTime()})
|
|
58
|
-
LIMIT 1`));
|
|
59
|
-
const q = {
|
|
60
|
-
offer: (body, meta) => Effect.gen(function* () {
|
|
61
|
-
yield* queueRepo.insertVoid(Queue.insert.make({
|
|
62
|
-
body,
|
|
63
|
-
meta,
|
|
64
|
-
name: queueName,
|
|
65
|
-
processingAt: Option.none(),
|
|
66
|
-
finishedAt: Option.none(),
|
|
67
|
-
etag: randomUUID()
|
|
68
|
-
}));
|
|
69
|
-
}),
|
|
70
|
-
take: Effect.gen(function* () {
|
|
71
|
-
while (true) {
|
|
72
|
-
const [first] = yield* drain.pipe(Effect.withTracerEnabled(false)); // disable sql tracer otherwise we spam it..
|
|
73
|
-
if (first) {
|
|
74
|
-
const dec = yield* decodeDrain(first);
|
|
75
|
-
const { createdAt, updatedAt, ...rest } = dec;
|
|
76
|
-
return yield* drainRepo.update(Drain.update.make({ ...rest, processingAt: Option.some(new Date()) }) // auto in lib , etag: randomUUID()
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
if (first)
|
|
80
|
-
return first;
|
|
81
|
-
yield* Effect.sleep(250);
|
|
82
|
-
}
|
|
83
|
-
}),
|
|
84
|
-
finish: ({ createdAt, updatedAt, ...q }) => drainRepo.updateVoid(Drain.update.make({ ...q, finishedAt: Option.some(new Date()) })) // auto in lib , etag: randomUUID()
|
|
85
|
-
};
|
|
86
|
-
return {
|
|
87
|
-
publish: (...messages) => Effect
|
|
88
|
-
.gen(function* () {
|
|
89
|
-
const requestContext = yield* getRequestContext;
|
|
90
|
-
return yield* Effect
|
|
91
|
-
.forEach(messages, (m) => q.offer(m, requestContext), {
|
|
92
|
-
discard: true
|
|
93
|
-
});
|
|
94
|
-
})
|
|
95
|
-
.pipe(Effect.withSpan("queue.publish: " + queueName, {
|
|
96
|
-
captureStackTrace: false,
|
|
97
|
-
kind: "producer",
|
|
98
|
-
attributes: { "message_tags": messages.map((_) => _._tag) }
|
|
99
|
-
})),
|
|
100
|
-
drain: (handleEvent, sessionId) => Effect.gen(function* () {
|
|
101
|
-
const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
|
|
102
|
-
const processMessage = (msg) => Effect
|
|
103
|
-
.succeed(msg)
|
|
104
|
-
.pipe(Effect
|
|
105
|
-
.flatMap(({ body, meta }) => {
|
|
106
|
-
let effect = InfraLogger
|
|
107
|
-
.logInfo(`[${queueDrainName}] Processing incoming message`)
|
|
108
|
-
.pipe(Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }), Effect.zipRight(handleEvent(body)), silenceAndReportError, (_) => setupRequestContext(_, meta), Effect
|
|
109
|
-
.withSpan(`queue.drain: ${queueDrainName}.${body._tag}`, {
|
|
110
|
-
captureStackTrace: false,
|
|
111
|
-
kind: "consumer",
|
|
112
|
-
attributes: {
|
|
113
|
-
"queue.name": queueDrainName,
|
|
114
|
-
"queue.sessionId": sessionId,
|
|
115
|
-
"queue.input": body
|
|
116
|
-
}
|
|
117
|
-
}));
|
|
118
|
-
if (meta.span) {
|
|
119
|
-
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
120
|
-
}
|
|
121
|
-
return effect;
|
|
122
|
-
}));
|
|
123
|
-
return yield* q
|
|
124
|
-
.take
|
|
125
|
-
.pipe(Effect.flatMap((x) => processMessage(x).pipe(Effect.uninterruptible, Effect.fork, Effect.flatMap(Fiber.join), Effect.tap(q.finish(x)))), silenceAndReportError, Effect.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
126
|
-
attributes: {
|
|
127
|
-
"queue.type": "sql",
|
|
128
|
-
"queue.name": queueDrainName,
|
|
129
|
-
"queue.sessionId": sessionId
|
|
130
|
-
}
|
|
131
|
-
}), Effect.forever);
|
|
132
|
-
})
|
|
133
|
-
};
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvUXVldWVNYWtlci9TUUxRdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUMzRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQTtBQUUxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0NBQStDLENBQUE7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFN0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUd4RCxvRkFBb0Y7QUFDcEYsTUFBTSxVQUFVLFlBQVksQ0FNMUIsU0FBNEIsRUFDNUIsY0FBaUMsRUFDakMsTUFBMkIsRUFDM0IsV0FBMEM7SUFFMUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRztZQUNYLEVBQUUsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZ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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAIhD,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iGACnD,CAAA;AAElC,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAEnE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAUrE;AAED,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACxE,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,KAAG,MAAM,CAAC,IAAI,CAAC,CAM1C"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { reportError } from "@effect-app/infra/errorReporter";
|
|
2
|
-
import { Cause, Effect, Exit } from "effect-app";
|
|
3
|
-
const reportQueueError_ = reportError("Queue");
|
|
4
|
-
export const reportQueueError = (cause, extras) => reportQueueError_(cause, extras);
|
|
5
|
-
export function reportNonInterruptedFailure(context) {
|
|
6
|
-
const report = reportNonInterruptedFailureCause(context);
|
|
7
|
-
return (inp) => inp.pipe(Effect.onExit(Exit.match({
|
|
8
|
-
onFailure: report,
|
|
9
|
-
onSuccess: () => Effect.void
|
|
10
|
-
})), Effect.exit);
|
|
11
|
-
}
|
|
12
|
-
export function reportNonInterruptedFailureCause(context) {
|
|
13
|
-
return (cause) => {
|
|
14
|
-
if (Cause.isInterrupted(cause)) {
|
|
15
|
-
return Effect.failCause(cause);
|
|
16
|
-
}
|
|
17
|
-
return reportQueueError(cause, context);
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1F1ZXVlTWFrZXIvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQTtBQUM3RCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFaEQsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUE7QUFFOUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBSSxLQUFlLEVBQUUsTUFBZ0MsRUFBRSxFQUFFLENBQ3ZGLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtBQUVsQyxNQUFNLFVBQVUsMkJBQTJCLENBQUMsT0FBaUM7SUFDM0UsTUFBTSxNQUFNLEdBQUcsZ0NBQWdDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDeEQsT0FBTyxDQUFVLEdBQW9CLEVBQWdDLEVBQUUsQ0FDckUsR0FBRyxDQUFDLElBQUksQ0FDTixNQUFNLENBQUMsTUFBTSxDQUNYLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDVCxTQUFTLEVBQUUsTUFBTTtRQUNqQixTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUk7S0FDN0IsQ0FBQyxDQUNILEVBQ0QsTUFBTSxDQUFDLElBQUksQ0FDWixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxPQUFpQztJQUNoRixPQUFPLENBQUksS0FBZSxFQUFnQixFQUFFO1FBQzFDLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQy9CLE9BQU8sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFxQixDQUFDLENBQUE7UUFDaEQsQ0FBQztRQUNELE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3pDLENBQUMsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memQueue.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/memQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAe,CAAC,EAAE,MAAM,YAAY,CAAA;AAInD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAIlD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5C,QAAQ,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACjD,IAAI,EACJ,SAAS,EAET,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;;YAkC9B,MAAM,EAAE,MAAM,eACP,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,cAC/C,MAAM;oBA8DzB"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { Tracer } from "effect";
|
|
2
|
-
import { Effect, Fiber, flow, S } from "effect-app";
|
|
3
|
-
import { pretty } from "effect-app/utils";
|
|
4
|
-
import { getRequestContext, setupRequestContext } from "../../api/setupRequest.js";
|
|
5
|
-
import { InfraLogger } from "../../logger.js";
|
|
6
|
-
import { MemQueue } from "../adapters/memQueue.js";
|
|
7
|
-
import { reportNonInterruptedFailure } from "./errors.js";
|
|
8
|
-
import { QueueMeta } from "./service.js";
|
|
9
|
-
/**
|
|
10
|
-
* @tsplus static QueueMaker.Ops makeMem
|
|
11
|
-
*/
|
|
12
|
-
export function makeMemQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
13
|
-
return Effect.gen(function* () {
|
|
14
|
-
const mem = yield* MemQueue;
|
|
15
|
-
const q = yield* mem.getOrCreateQueue(queueName);
|
|
16
|
-
const qDrain = yield* mem.getOrCreateQueue(queueDrainName);
|
|
17
|
-
const wireSchema = S.Struct({ body: schema, meta: QueueMeta });
|
|
18
|
-
const drainW = S.Struct({ body: drainSchema, meta: QueueMeta });
|
|
19
|
-
const parseDrain = flow(S.decodeUnknown(drainW), Effect.orDie);
|
|
20
|
-
return {
|
|
21
|
-
publish: (...messages) => Effect
|
|
22
|
-
.gen(function* () {
|
|
23
|
-
const requestContext = yield* getRequestContext;
|
|
24
|
-
return yield* Effect
|
|
25
|
-
.forEach(messages, (m) =>
|
|
26
|
-
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
27
|
-
S.encode(wireSchema)({ body: m, meta: requestContext }).pipe(Effect.orDie, Effect
|
|
28
|
-
.andThen(JSON.stringify),
|
|
29
|
-
// .tap((msg) => info("Publishing Mem Message: " + utils.inspect(msg)))
|
|
30
|
-
Effect.flatMap((_) => q.offer(_))), { discard: true });
|
|
31
|
-
})
|
|
32
|
-
.pipe(Effect.withSpan("queue.publish: " + queueName, {
|
|
33
|
-
captureStackTrace: false,
|
|
34
|
-
kind: "producer",
|
|
35
|
-
attributes: { "message_tags": messages.map((_) => _._tag) }
|
|
36
|
-
})),
|
|
37
|
-
drain: (handleEvent, sessionId) => Effect.gen(function* () {
|
|
38
|
-
const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName });
|
|
39
|
-
const processMessage = (msg) =>
|
|
40
|
-
// we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
41
|
-
Effect
|
|
42
|
-
.sync(() => JSON.parse(msg))
|
|
43
|
-
.pipe(Effect.flatMap(parseDrain), Effect.orDie, Effect
|
|
44
|
-
.flatMap(({ body, meta }) => {
|
|
45
|
-
let effect = InfraLogger
|
|
46
|
-
.logInfo(`[${queueDrainName}] Processing incoming message`)
|
|
47
|
-
.pipe(Effect.annotateLogs({ body: pretty(body), meta: pretty(meta) }), Effect.zipRight(handleEvent(body)), silenceAndReportError, (_) => setupRequestContext(_, meta), Effect
|
|
48
|
-
.withSpan(`queue.drain: ${queueDrainName}.${body._tag}`, {
|
|
49
|
-
captureStackTrace: false,
|
|
50
|
-
kind: "consumer",
|
|
51
|
-
attributes: {
|
|
52
|
-
"queue.name": queueDrainName,
|
|
53
|
-
"queue.sessionId": sessionId,
|
|
54
|
-
"queue.input": body
|
|
55
|
-
}
|
|
56
|
-
}));
|
|
57
|
-
if (meta.span) {
|
|
58
|
-
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
59
|
-
}
|
|
60
|
-
return effect;
|
|
61
|
-
}));
|
|
62
|
-
return yield* qDrain
|
|
63
|
-
.take
|
|
64
|
-
.pipe(Effect.flatMap((x) => processMessage(x).pipe(Effect.uninterruptible, Effect.fork, Effect.flatMap(Fiber.join))),
|
|
65
|
-
// TODO: normally a failed item would be returned to the queue and retried up to X times.
|
|
66
|
-
// .flatMap(_ => _._tag === "Failure" && !isInterrupted ? qDrain.offer(x) : Effect.unit) // TODO: retry count tracking and max retries.
|
|
67
|
-
silenceAndReportError, Effect.withSpan(`queue.drain: ${queueDrainName}`, {
|
|
68
|
-
attributes: {
|
|
69
|
-
"queue.type": "mem",
|
|
70
|
-
"queue.name": queueDrainName,
|
|
71
|
-
"queue.sessionId": sessionId
|
|
72
|
-
}
|
|
73
|
-
}), Effect.forever);
|
|
74
|
-
})
|
|
75
|
-
};
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvUXVldWVNYWtlci9tZW1RdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ2xGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbEQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3pELE9BQU8sRUFBa0IsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FNMUIsU0FBaUIsRUFDakIsY0FBc0IsRUFDdEIsTUFBMkIsRUFDM0IsV0FBMEM7SUFFMUMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUE7UUFDM0IsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ2hELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUUxRCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVB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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sbqueue.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/sbqueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAS,MAAM,EAAQ,KAAK,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAIjD,OAAO,EAIL,yBAAyB,EAE1B,MAAM,2BAA2B,CAAA;AAIlC;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC1C,QAAQ,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC/C,IAAI,EACJ,SAAS,EAET,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;YAoB9B,MAAM,EAAE,MAAM,eACP,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,cAC/C,MAAM;;qFAqGzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,wGAI1F"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { Tracer } from "effect";
|
|
2
|
-
import { Cause, Effect, flow, Layer, S } from "effect-app";
|
|
3
|
-
import { pretty } from "effect-app/utils";
|
|
4
|
-
import { getRequestContext, setupRequestContext } from "../../api/setupRequest.js";
|
|
5
|
-
import { InfraLogger } from "../../logger.js";
|
|
6
|
-
import { LiveSender, LiveServiceBusClient, Sender, ServiceBusReceiverFactory, subscribe } from "../adapters/ServiceBus.js";
|
|
7
|
-
import { reportNonInterruptedFailure, reportNonInterruptedFailureCause, reportQueueError } from "./errors.js";
|
|
8
|
-
import { QueueMeta } from "./service.js";
|
|
9
|
-
/**
|
|
10
|
-
* @tsplus static QueueMaker.Ops makeServiceBus
|
|
11
|
-
*/
|
|
12
|
-
export function makeServiceBusQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
13
|
-
const wireSchema = S.Struct({
|
|
14
|
-
body: schema,
|
|
15
|
-
meta: QueueMeta
|
|
16
|
-
});
|
|
17
|
-
const drainW = S.Struct({ body: drainSchema, meta: QueueMeta });
|
|
18
|
-
const parseDrain = flow(S.decodeUnknown(drainW), Effect.orDie);
|
|
19
|
-
return Effect.gen(function* () {
|
|
20
|
-
const s = yield* Sender;
|
|
21
|
-
const receiver = yield* ServiceBusReceiverFactory;
|
|
22
|
-
const silenceAndReportError = reportNonInterruptedFailure({ name: "ServiceBusQueue.drain." + queueDrainName });
|
|
23
|
-
const reportError = reportNonInterruptedFailureCause({ name: "ServiceBusQueue.drain." + queueDrainName });
|
|
24
|
-
// TODO: or do async?
|
|
25
|
-
// This will make sure that the host receives the error (MainFiberSet.join), who will then interrupt everything and commence a shutdown and restart of app
|
|
26
|
-
// const deferred = yield* Deferred.make<never, ServiceBusError | Error>()
|
|
27
|
-
return {
|
|
28
|
-
drain: (handleEvent, sessionId) => Effect
|
|
29
|
-
.gen(function* () {
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
-
function processMessage(messageBody) {
|
|
32
|
-
return Effect
|
|
33
|
-
.sync(() => JSON.parse(messageBody))
|
|
34
|
-
.pipe(Effect.flatMap((x) => parseDrain(x)), Effect.orDie, Effect
|
|
35
|
-
.flatMap(({ body, meta }) => {
|
|
36
|
-
let effect = InfraLogger
|
|
37
|
-
.logInfo(`[${queueDrainName}] Processing incoming message`)
|
|
38
|
-
.pipe(Effect.annotateLogs({
|
|
39
|
-
body: pretty(body),
|
|
40
|
-
meta: pretty(meta)
|
|
41
|
-
}), Effect.zipRight(handleEvent(body)), Effect.orDie)
|
|
42
|
-
// we silenceAndReportError here, so that the error is reported, and moves into the Exit.
|
|
43
|
-
.pipe(silenceAndReportError, (_) => setupRequestContext(_, meta), Effect
|
|
44
|
-
.withSpan(`queue.drain: ${queueDrainName}${sessionId ? `#${sessionId}` : ""}.${body._tag}`, {
|
|
45
|
-
captureStackTrace: false,
|
|
46
|
-
kind: "consumer",
|
|
47
|
-
attributes: {
|
|
48
|
-
"queue.name": queueDrainName,
|
|
49
|
-
"queue.sessionId": sessionId,
|
|
50
|
-
"queue.input": body
|
|
51
|
-
}
|
|
52
|
-
}));
|
|
53
|
-
if (meta.span) {
|
|
54
|
-
effect = Effect.withParentSpan(effect, Tracer.externalSpan(meta.span));
|
|
55
|
-
}
|
|
56
|
-
return effect;
|
|
57
|
-
}), Effect
|
|
58
|
-
// we reportError here, so that we report the error only, and keep flowing
|
|
59
|
-
.tapErrorCause(reportError));
|
|
60
|
-
}
|
|
61
|
-
return yield* subscribe({
|
|
62
|
-
processMessage: (x) => processMessage(x.body).pipe(Effect.uninterruptible),
|
|
63
|
-
processError: (err) => reportQueueError(Cause.fail(err.error))
|
|
64
|
-
// Deferred.completeWith(
|
|
65
|
-
// deferred,
|
|
66
|
-
// reportFatalQueueError(Cause.fail(err.error))
|
|
67
|
-
// .pipe(Effect.andThen(Effect.fail(err.error)))
|
|
68
|
-
// )
|
|
69
|
-
}, sessionId)
|
|
70
|
-
.pipe(Effect.provideService(ServiceBusReceiverFactory, receiver));
|
|
71
|
-
})
|
|
72
|
-
// .pipe(Effect.andThen(Deferred.await(deferred).pipe(Effect.orDie))),
|
|
73
|
-
.pipe(Effect.andThen(Effect.never)),
|
|
74
|
-
publish: (...messages) => Effect
|
|
75
|
-
.gen(function* () {
|
|
76
|
-
const requestContext = yield* getRequestContext;
|
|
77
|
-
return yield* Effect
|
|
78
|
-
.promise((abortSignal) => s.sendMessages(messages.map((m) => ({
|
|
79
|
-
body: JSON.stringify(S.encodeSync(wireSchema)({
|
|
80
|
-
body: m,
|
|
81
|
-
meta: requestContext
|
|
82
|
-
})),
|
|
83
|
-
messageId: m.id, /* correllationid: requestId */
|
|
84
|
-
contentType: "application/json",
|
|
85
|
-
sessionId: "sessionId" in m ? m.sessionId : undefined
|
|
86
|
-
})), { abortSignal }));
|
|
87
|
-
})
|
|
88
|
-
.pipe(Effect.withSpan("queue.publish: " + queueName, {
|
|
89
|
-
captureStackTrace: false,
|
|
90
|
-
kind: "producer",
|
|
91
|
-
attributes: { "message_tags": messages.map((_) => _._tag) }
|
|
92
|
-
}))
|
|
93
|
-
};
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* @tsplus static QueueMaker.Ops makeServiceBusLayers
|
|
98
|
-
*/
|
|
99
|
-
export function makeServiceBusLayers(url, queueName, queueDrainName) {
|
|
100
|
-
return Layer.merge(ServiceBusReceiverFactory.Live(queueDrainName), LiveSender(queueName)).pipe(Layer.provide(LiveServiceBusClient(url)));
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2JxdWV1ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9RdWV1ZU1ha2VyL3NicXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUUxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDbEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sRUFDTCxVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLE1BQU0sRUFDTix5QkFBeUIsRUFDekIsU0FBUyxFQUNWLE1BQU0sMkJBQTJCLENBQUE7QUFDbEMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLGdDQUFnQyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdHLE9BQU8sRUFBa0IsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRXhEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQU1qQyxTQUFpQixFQUNqQixjQUFzQixFQUN0QixNQUEyQixFQUMzQixXQUEwQztJQUUxQyxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQzFCLElBQUksRUFBRSxNQUFNO1FBQ1osSUFBSSxFQUFFLFNBQVM7S0FDaEIsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDL0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENB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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/services/QueueMaker/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,SAAS,CAAC,GAAG,EAAE,QAAQ;IACtC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EACpB,eAAe,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAC/D,SAAS,CAAC,EAAE,MAAM,KACf,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,CAAA;IACzC,OAAO,EAAE,CACP,GAAG,QAAQ,EAAE,qBAAqB,CAAC,GAAG,CAAC,KACpC,MAAM,CAAC,IAAI,CAAC,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;CAAG;AACjC,eAAO,MAAM,UAAU,EAAE,aAAkB,CAAA;AAE3C,eAAO,MAAM,SAAS,uBAAiB,CAAA"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { RequestContext } from "../../RequestContext.js";
|
|
2
|
-
export const QueueMaker = {};
|
|
3
|
-
export const QueueMeta = RequestContext;
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9RdWV1ZU1ha2VyL3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBZ0J4RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWtCLEVBQUUsQ0FBQTtBQUUzQyxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFBIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/dsl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { Effect } from "effect-app";
|
|
2
|
-
import { toNonEmptyArray } from "effect-app/Array";
|
|
3
|
-
import { get, logMany, set } from "effect-app/Pure";
|
|
4
|
-
export const AnyPureDSL = {
|
|
5
|
-
get: get(),
|
|
6
|
-
set: set,
|
|
7
|
-
log: (...evt) => logMany(evt)
|
|
8
|
-
};
|
|
9
|
-
const anyDSL = makeDSL();
|
|
10
|
-
export function makeAllDSL() {
|
|
11
|
-
const dsl = anyDSL;
|
|
12
|
-
return dsl;
|
|
13
|
-
}
|
|
14
|
-
export function makeOneDSL() {
|
|
15
|
-
return anyDSL;
|
|
16
|
-
}
|
|
17
|
-
export function makeDSL() {
|
|
18
|
-
const dsl = AnyPureDSL;
|
|
19
|
-
function modify(pure) {
|
|
20
|
-
return dsl.get.pipe(Effect.flatMap((items) => pure(items, dsl)));
|
|
21
|
-
}
|
|
22
|
-
function update(pure) {
|
|
23
|
-
return dsl.get.pipe(Effect.flatMap((items) => pure(items, dsl.log).pipe(Effect.tap(dsl.set))));
|
|
24
|
-
}
|
|
25
|
-
function withDSL(pure) {
|
|
26
|
-
return pure(AnyPureDSL);
|
|
27
|
-
}
|
|
28
|
-
function updateWith(upd) {
|
|
29
|
-
return update((_) => Effect.sync(() => upd(_)));
|
|
30
|
-
}
|
|
31
|
-
return Object.assign(withDSL, {
|
|
32
|
-
modify,
|
|
33
|
-
update,
|
|
34
|
-
updateWith
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
export function ifAny(fn) {
|
|
38
|
-
return (items) => Effect.flatMapOption(Effect.sync(() => toNonEmptyArray([...items])), fn);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* @tsplus fluent Iterable ifAny
|
|
42
|
-
*/
|
|
43
|
-
export function ifAny_(items, fn) {
|
|
44
|
-
return Effect.flatMapOption(Effect.sync(() => toNonEmptyArray([...items])), fn);
|
|
45
|
-
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL1JlcG9zaXRvcnkvZHNsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBU25ELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBMkI7SUFDaEQsR0FBRyxFQUFFLEdBQUcsRUFBRTtJQUNWLEdBQUcsRUFBRSxHQUFVO0lBQ2YsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFVLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7Q0FDckMsQ0FBQTtBQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBaUIsQ0FBQTtBQXVCdkMsTUFBTSxVQUFVLFVBQVU7SUFDeEIsTUFBTSxHQUFHLEdBQW1CLE1BQU0sQ0FBQTtJQUNsQyxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUF1QkQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsTUFBTSxHQUFHLEdBQXlCLFVBQVUsQ0FBQTtJQUU1QyxTQUFTLE1BQU0sQ0FLYixJQUdvQjtRQUVwQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBUSxDQUFBO0lBQ3pFLENBQUM7SUFFRCxTQUFTLE1BQU0sQ0FJYixJQUdxQjtRQUVyQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQVEsQ0FBQTtJQUN2RyxDQUFDO0lBRUQsU0FBUyxPQUFPLENBS2QsSUFBb0Q7UUFFcEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFRLENBQUE7SUFDaEMsQ0FBQztJQUVELFNBQVMsVUFBVSxDQUFDLEdBQXFCO1FBQ3ZDLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDckQsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FDbEIsT0FBTyxFQUNQO1FBQ0UsTUFBTTtRQUNOLE1BQU07UUFDTixVQUFVO0tBQ1gsQ0FDRixDQUFBO0FBQ0gsQ0FBQztBQUlELE1BQU0sVUFBVSxLQUFLLENBQWEsRUFBd0Q7SUFDeEYsT0FBTyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN6RyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsTUFBTSxDQUFhLEtBQWtCLEVBQUUsRUFBd0Q7SUFDN0csT0FBTyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDakYsQ0FBQyJ9
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ext.d.ts","sourceRoot":"","sources":["../../../src/services/Repository/ext.ts"],"names":[],"mappings":"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"}
|