@effect-app/infra 0.7.0 → 0.8.1
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/{lib/RequestContext.cjs → RequestContext.cjs} +0 -0
- package/_cjs/{lib/RequestContext.cjs.map → RequestContext.cjs.map} +1 -1
- package/_cjs/{lib/api → api}/authorization.jwt.cjs +1 -1
- package/_cjs/{lib/api → api}/authorization.jwt.cjs.map +1 -1
- package/_cjs/{vendor/Cache/Cache/operations/makeWith.cjs → api/codec.cjs} +16 -13
- package/_cjs/api/codec.cjs.map +1 -0
- package/_cjs/{lib/api → api}/defaultErrorHandler.cjs +1 -1
- package/_cjs/{lib/api → api}/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/{services/memQueue.cjs → api/express/makeJsonSchema.cjs} +42 -22
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -0
- package/_cjs/api/express/makeOpenApiSpecs.cjs +66 -0
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -0
- package/_cjs/api/express/schema/jwt.cjs +43 -0
- package/_cjs/api/express/schema/jwt.cjs.map +1 -0
- package/_cjs/api/express/schema/requestHandler.cjs +166 -0
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -0
- package/_cjs/api/express/schema/routing.cjs +121 -0
- package/_cjs/api/express/schema/routing.cjs.map +1 -0
- package/_cjs/{lib/api → api}/reportError.cjs +5 -5
- package/_cjs/{lib/api → api}/reportError.cjs.map +1 -1
- package/_cjs/{lib/api → api}/routing.cjs +32 -32
- package/_cjs/{lib/api → api}/routing.cjs.map +1 -1
- package/_cjs/{lib/api → api}/setupRequest.cjs +2 -2
- package/_cjs/{lib/api → api}/setupRequest.cjs.map +1 -1
- package/_cjs/{lib/api → api}/util.cjs +0 -0
- package/_cjs/{lib/api → api}/util.cjs.map +1 -1
- package/_cjs/{lib/api → api}/writeDocs.cjs +5 -5
- package/_cjs/{lib/api → api}/writeDocs.cjs.map +1 -1
- package/_cjs/{lib/errorReporter.cjs → errorReporter.cjs} +1 -1
- package/_cjs/{lib/errorReporter.cjs.map → errorReporter.cjs.map} +1 -1
- package/_cjs/errors.cjs +21 -22
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/{lib/ext → ext}/Array.cjs +1 -1
- package/_cjs/{lib/ext → ext}/Array.cjs.map +1 -1
- package/_cjs/{lib/filter → filter}/types/errors.cjs +0 -0
- package/_cjs/{lib/filter → filter}/types/errors.cjs.map +0 -0
- package/_cjs/{lib/filter → filter}/types/fields.cjs +0 -0
- package/_cjs/{lib/filter → filter}/types/fields.cjs.map +0 -0
- package/_cjs/{lib/filter → filter}/types/index.cjs +0 -0
- package/_cjs/{lib/filter → filter}/types/index.cjs.map +1 -1
- package/_cjs/{lib/filter → filter}/types/path/common.cjs +0 -0
- package/_cjs/{lib/filter → filter}/types/path/common.cjs.map +0 -0
- package/_cjs/{lib/filter → filter}/types/path/eager.cjs +0 -0
- package/_cjs/{lib/filter → filter}/types/path/eager.cjs.map +0 -0
- package/_cjs/{lib/filter → filter}/types/path/index.cjs +0 -0
- package/_cjs/filter/types/path/index.cjs.map +1 -0
- package/_cjs/{lib/filter → filter}/types/utils.cjs +0 -0
- package/_cjs/{lib/filter → filter}/types/utils.cjs.map +0 -0
- package/_cjs/{lib/filter → filter}/types/validator.cjs +0 -0
- package/_cjs/{lib/filter → filter}/types/validator.cjs.map +0 -0
- package/_cjs/{lib/filter.cjs → filter.cjs} +0 -0
- package/_cjs/{lib/filter.cjs.map → filter.cjs.map} +1 -1
- package/_cjs/{lib/instrument.cjs → instrument.cjs} +1 -1
- package/_cjs/{lib/instrument.cjs.map → instrument.cjs.map} +1 -1
- package/_cjs/{lib/rateLimit.cjs → rateLimit.cjs} +1 -1
- package/_cjs/{lib/rateLimit.cjs.map → rateLimit.cjs.map} +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +1 -1
- package/_cjs/services/Emailer/fake.cjs +1 -1
- package/_cjs/services/Repository.cjs +1 -1
- package/_cjs/services/Store/Cosmos.cjs +2 -2
- package/_cjs/services/Store/Cosmos.test.cjs +2 -2
- package/_cjs/services/Store/Disk.cjs +2 -2
- package/_cjs/services/Store/Memory.cjs +1 -1
- package/_cjs/services/Store/Redis.cjs +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +2 -2
- package/_cjs/services/Store/index.cjs +1 -1
- package/_cjs/services/Store/service.cjs +1 -1
- package/_cjs/services/Store/utils.cjs +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +98 -0
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -0
- package/_cjs/services/simpledb/diskdb.cjs +118 -0
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -0
- package/_cjs/services/simpledb/fileutil.cjs +36 -0
- package/_cjs/services/simpledb/fileutil.cjs.map +1 -0
- package/_cjs/{vendor/Cache/Cache/_internal/CacheState.cjs → services/simpledb/index.cjs} +31 -24
- package/_cjs/services/simpledb/index.cjs.map +1 -0
- package/_cjs/services/simpledb/memdb.cjs +74 -0
- package/_cjs/services/simpledb/memdb.cjs.map +1 -0
- package/_cjs/services/simpledb/mongodb.cjs +86 -0
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -0
- package/_cjs/services/simpledb/redisdb.cjs +120 -0
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -0
- package/_cjs/services/simpledb/shared.cjs +80 -0
- package/_cjs/services/simpledb/shared.cjs.map +1 -0
- package/_cjs/services/simpledb/simpledb.cjs +77 -0
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -0
- package/_src/{lib/RequestContext.ts → RequestContext.ts} +0 -0
- package/_src/_global.ext.ts +5 -5
- package/_src/api/app.ts.bak +125 -0
- package/_src/{lib/api → api}/authorization.jwt.ts +1 -1
- package/_src/api/codec.ts +27 -0
- package/_src/{lib/api → api}/defaultErrorHandler.ts +1 -1
- package/_src/api/errors.ts.bak +20 -0
- package/_src/api/express/makeJsonSchema.ts +49 -0
- package/_src/api/express/makeOpenApiSpecs.ts +60 -0
- package/_src/api/express/routing.ts.bak +460 -0
- package/_src/api/express/schema/jwt.ts +38 -0
- package/_src/api/express/schema/requestHandler.ts +360 -0
- package/_src/api/express/schema/routing.ts +202 -0
- package/_src/{lib/api → api}/reportError.ts +3 -3
- package/_src/{lib/api → api}/routing.ts +7 -12
- package/_src/{lib/api → api}/setupRequest.ts +0 -0
- package/_src/{lib/api → api}/util.ts +0 -0
- package/_src/{lib/api → api}/writeDocs.ts +4 -5
- package/_src/{lib/errorReporter.ts → errorReporter.ts} +1 -1
- package/_src/errors.ts +12 -3
- package/_src/{lib/ext → ext}/Array.ts +1 -1
- package/_src/{lib/filter → filter}/types/errors.ts +0 -0
- package/_src/{lib/filter → filter}/types/fields.ts +0 -0
- package/_src/{lib/filter → filter}/types/index.ts +0 -0
- package/_src/{lib/filter → filter}/types/path/common.ts +0 -0
- package/_src/{lib/filter → filter}/types/path/eager.ts +0 -0
- package/_src/{lib/filter → filter}/types/path/index.ts +0 -0
- package/_src/{lib/filter → filter}/types/utils.ts +0 -0
- package/_src/{lib/filter → filter}/types/validator.ts +0 -0
- package/_src/{lib/filter.ts → filter.ts} +1 -1
- package/_src/{lib/instrument.ts → instrument.ts} +0 -0
- package/_src/{lib/rateLimit.ts → rateLimit.ts} +0 -0
- package/_src/services/Emailer/service.ts +1 -1
- package/_src/services/Repository.ts +1 -1
- package/_src/services/Store/Cosmos.test.ts +1 -1
- package/_src/services/Store/Disk.ts +1 -1
- package/_src/services/Store/codeFilter.test.ts +1 -1
- package/_src/services/simpledb/cosmosdb.ts +134 -0
- package/_src/services/simpledb/diskdb.ts +158 -0
- package/_src/services/simpledb/fileutil.ts +28 -0
- package/_src/services/simpledb/index.ts +6 -0
- package/_src/services/simpledb/memdb.ts +79 -0
- package/_src/services/simpledb/mongodb.ts +99 -0
- package/_src/services/simpledb/redisdb.ts +182 -0
- package/_src/services/simpledb/shared.ts +117 -0
- package/_src/services/simpledb/simpledb.ts +117 -0
- package/dist/{lib/RequestContext.d.ts → RequestContext.d.ts} +1 -1
- package/dist/RequestContext.d.ts.map +1 -0
- package/dist/RequestContext.js +52 -0
- package/dist/_global.ext.d.ts +5 -5
- package/dist/_global.ext.d.ts.map +1 -1
- package/dist/{lib/api → api}/authorization.jwt.d.ts +1 -1
- package/dist/api/authorization.jwt.d.ts.map +1 -0
- package/dist/{lib/api → api}/authorization.jwt.js +2 -2
- package/dist/api/codec.d.ts +7 -0
- package/dist/api/codec.d.ts.map +1 -0
- package/dist/api/codec.js +19 -0
- package/dist/{lib/api → api}/defaultErrorHandler.d.ts +1 -1
- package/dist/api/defaultErrorHandler.d.ts.map +1 -0
- package/dist/{lib/api → api}/defaultErrorHandler.js +2 -2
- package/dist/api/express/makeJsonSchema.d.ts +30 -0
- package/dist/api/express/makeJsonSchema.d.ts.map +1 -0
- package/dist/api/express/makeJsonSchema.js +40 -0
- package/dist/api/express/makeOpenApiSpecs.d.ts +55 -0
- package/dist/api/express/makeOpenApiSpecs.d.ts.map +1 -0
- package/dist/api/express/makeOpenApiSpecs.js +56 -0
- package/dist/api/express/schema/jwt.d.ts +5 -0
- package/dist/api/express/schema/jwt.d.ts.map +1 -0
- package/dist/api/express/schema/jwt.js +32 -0
- package/dist/api/express/schema/requestHandler.d.ts +71 -0
- package/dist/api/express/schema/requestHandler.d.ts.map +1 -0
- package/dist/api/express/schema/requestHandler.js +140 -0
- package/dist/api/express/schema/routing.d.ts +45 -0
- package/dist/api/express/schema/routing.d.ts.map +1 -0
- package/dist/api/express/schema/routing.js +95 -0
- package/dist/{lib/api → api}/reportError.d.ts +4 -4
- package/dist/api/reportError.d.ts.map +1 -0
- package/dist/{lib/api → api}/reportError.js +6 -6
- package/dist/{lib/api → api}/routing.d.ts +7 -7
- package/dist/api/routing.d.ts.map +1 -0
- package/dist/api/routing.js +249 -0
- package/dist/{lib/api → api}/setupRequest.d.ts +2 -2
- package/dist/api/setupRequest.d.ts.map +1 -0
- package/dist/{lib/api → api}/setupRequest.js +3 -3
- package/dist/{lib/api → api}/util.d.ts +0 -0
- package/dist/api/util.d.ts.map +1 -0
- package/dist/api/util.js +14 -0
- package/dist/{lib/api → api}/writeDocs.d.ts +1 -1
- package/dist/api/writeDocs.d.ts.map +1 -0
- package/dist/api/writeDocs.js +23 -0
- package/dist/{lib/errorReporter.d.ts → errorReporter.d.ts} +1 -1
- package/dist/errorReporter.d.ts.map +1 -0
- package/dist/errorReporter.js +45 -0
- package/dist/errors.d.ts +11 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +17 -3
- package/dist/{lib/ext → ext}/Array.d.ts +3 -3
- package/dist/ext/Array.d.ts.map +1 -0
- package/dist/{lib/ext → ext}/Array.js +2 -2
- package/dist/{lib/filter → filter}/types/errors.d.ts +0 -0
- package/dist/filter/types/errors.d.ts.map +1 -0
- package/dist/{lib/filter → filter}/types/errors.js +1 -1
- package/dist/{lib/filter → filter}/types/fields.d.ts +0 -0
- package/dist/filter/types/fields.d.ts.map +1 -0
- package/dist/{lib/filter → filter}/types/fields.js +1 -1
- package/dist/{lib/filter → filter}/types/index.d.ts +0 -0
- package/dist/filter/types/index.d.ts.map +1 -0
- package/dist/{lib/filter → filter}/types/index.js +1 -1
- package/dist/{lib/filter → filter}/types/path/common.d.ts +0 -0
- package/dist/filter/types/path/common.d.ts.map +1 -0
- package/dist/{lib/filter → filter}/types/path/common.js +1 -1
- package/dist/{lib/filter → filter}/types/path/eager.d.ts +0 -0
- package/dist/filter/types/path/eager.d.ts.map +1 -0
- package/dist/{lib/filter → filter}/types/path/eager.js +1 -1
- package/dist/{lib/filter → filter}/types/path/index.d.ts +0 -0
- package/dist/filter/types/path/index.d.ts.map +1 -0
- package/dist/{lib/filter → filter}/types/path/index.js +1 -1
- package/dist/{lib/filter → filter}/types/utils.d.ts +0 -0
- package/dist/filter/types/utils.d.ts.map +1 -0
- package/dist/{lib/filter → filter}/types/utils.js +1 -1
- package/dist/{lib/filter → filter}/types/validator.d.ts +0 -0
- package/dist/filter/types/validator.d.ts.map +1 -0
- package/dist/{lib/filter → filter}/types/validator.js +1 -1
- package/dist/{lib/filter.d.ts → filter.d.ts} +9 -9
- package/dist/filter.d.ts.map +1 -0
- package/dist/filter.js +171 -0
- package/dist/{lib/instrument.d.ts → instrument.d.ts} +1 -1
- package/dist/instrument.d.ts.map +1 -0
- package/dist/{lib/instrument.js → instrument.js} +2 -2
- package/dist/{lib/rateLimit.d.ts → rateLimit.d.ts} +5 -5
- package/dist/rateLimit.d.ts.map +1 -0
- package/dist/{lib/rateLimit.js → rateLimit.js} +2 -2
- package/dist/services/Emailer/Sendgrid.js +1 -1
- package/dist/services/Emailer/fake.js +1 -1
- package/dist/services/Emailer/service.d.ts +1 -1
- package/dist/services/Emailer/service.d.ts.map +1 -1
- package/dist/services/Repository.d.ts +1 -1
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +1 -1
- package/dist/services/Store/Cosmos.js +2 -2
- package/dist/services/Store/Disk.js +3 -3
- package/dist/services/Store/Memory.js +1 -1
- package/dist/services/Store/Redis.js +1 -1
- package/dist/services/Store/index.js +1 -1
- package/dist/services/Store/service.js +1 -1
- package/dist/services/Store/utils.js +1 -1
- package/dist/services/simpledb/cosmosdb.d.ts +13 -0
- package/dist/services/simpledb/cosmosdb.d.ts.map +1 -0
- package/dist/services/simpledb/cosmosdb.js +88 -0
- package/dist/services/simpledb/diskdb.d.ts +12 -0
- package/dist/services/simpledb/diskdb.d.ts.map +1 -0
- package/dist/services/simpledb/diskdb.js +96 -0
- package/dist/services/simpledb/fileutil.d.ts +7 -0
- package/dist/services/simpledb/fileutil.d.ts.map +1 -0
- package/dist/services/simpledb/fileutil.js +25 -0
- package/dist/services/simpledb/index.d.ts +7 -0
- package/dist/services/simpledb/index.d.ts.map +1 -0
- package/dist/services/simpledb/index.js +7 -0
- package/dist/services/simpledb/memdb.d.ts +12 -0
- package/dist/services/simpledb/memdb.d.ts.map +1 -0
- package/dist/services/simpledb/memdb.js +55 -0
- package/dist/services/simpledb/mongodb.d.ts +13 -0
- package/dist/services/simpledb/mongodb.d.ts.map +1 -0
- package/dist/services/simpledb/mongodb.js +55 -0
- package/dist/services/simpledb/redisdb.d.ts +25 -0
- package/dist/services/simpledb/redisdb.d.ts.map +1 -0
- package/dist/services/simpledb/redisdb.js +105 -0
- package/dist/services/simpledb/shared.d.ts +63 -0
- package/dist/services/simpledb/shared.d.ts.map +1 -0
- package/dist/services/simpledb/shared.js +65 -0
- package/dist/services/simpledb/simpledb.d.ts +23 -0
- package/dist/services/simpledb/simpledb.d.ts.map +1 -0
- package/dist/services/simpledb/simpledb.js +56 -0
- package/package.json +216 -328
- package/_cjs/ext.cjs +0 -4
- package/_cjs/ext.cjs.map +0 -1
- package/_cjs/lib/fileUtil.cjs +0 -36
- package/_cjs/lib/fileUtil.cjs.map +0 -1
- package/_cjs/lib/filter/types/path/index.cjs.map +0 -1
- package/_cjs/services/CUPS/service.cjs +0 -15
- package/_cjs/services/CUPS/service.cjs.map +0 -1
- package/_cjs/services/CUPS.cjs +0 -113
- package/_cjs/services/CUPS.cjs.map +0 -1
- package/_cjs/services/Cache.cjs +0 -39
- package/_cjs/services/Cache.cjs.map +0 -1
- package/_cjs/services/ServiceBus.cjs +0 -69
- package/_cjs/services/ServiceBus.cjs.map +0 -1
- package/_cjs/services/memQueue.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs +0 -14
- package/_cjs/vendor/Cache/Cache/_internal/AtomicBoolean.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs +0 -29
- package/_cjs/vendor/Cache/Cache/_internal/AtomicNumber.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs +0 -32
- package/_cjs/vendor/Cache/Cache/_internal/AtomicReference.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs +0 -266
- package/_cjs/vendor/Cache/Cache/_internal/CacheInternal.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/_internal/CacheState.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs +0 -67
- package/_cjs/vendor/Cache/Cache/_internal/KeySet.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs +0 -44
- package/_cjs/vendor/Cache/Cache/_internal/MapKey.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs +0 -33
- package/_cjs/vendor/Cache/Cache/_internal/MapValue.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/definition.cjs +0 -13
- package/_cjs/vendor/Cache/Cache/definition.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/operations/make.cjs +0 -20
- package/_cjs/vendor/Cache/Cache/operations/make.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/operations/makeWith.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache/operations.cjs +0 -28
- package/_cjs/vendor/Cache/Cache/operations.cjs.map +0 -1
- package/_cjs/vendor/Cache/Cache.cjs +0 -28
- package/_cjs/vendor/Cache/Cache.cjs.map +0 -1
- package/_cjs/vendor/Cache/CacheStats/definition.cjs +0 -13
- package/_cjs/vendor/Cache/CacheStats/definition.cjs.map +0 -1
- package/_cjs/vendor/Cache/CacheStats.cjs +0 -17
- package/_cjs/vendor/Cache/CacheStats.cjs.map +0 -1
- package/_cjs/vendor/Cache/EntryStats/definition.cjs +0 -11
- package/_cjs/vendor/Cache/EntryStats/definition.cjs.map +0 -1
- package/_cjs/vendor/Cache/EntryStats.cjs +0 -17
- package/_cjs/vendor/Cache/EntryStats.cjs.map +0 -1
- package/_cjs/vendor/Cache/Lookup/definition.cjs +0 -6
- package/_cjs/vendor/Cache/Lookup/definition.cjs.map +0 -1
- package/_cjs/vendor/Cache/Lookup.cjs +0 -17
- package/_cjs/vendor/Cache/Lookup.cjs.map +0 -1
- package/_cjs/vendor/Cache/index.cjs +0 -17
- package/_cjs/vendor/Cache/index.cjs.map +0 -1
- package/_src/ext.ts +0 -1
- package/_src/lib/fileUtil.ts +0 -56
- package/_src/services/CUPS/service.ts +0 -16
- package/_src/services/CUPS.ts +0 -105
- package/_src/services/Cache.ts +0 -45
- package/_src/services/ServiceBus.ts +0 -111
- package/_src/services/memQueue.ts +0 -30
- package/_src/vendor/Cache/Cache/_internal/AtomicBoolean.ts +0 -7
- package/_src/vendor/Cache/Cache/_internal/AtomicNumber.ts +0 -28
- package/_src/vendor/Cache/Cache/_internal/AtomicReference.ts +0 -30
- package/_src/vendor/Cache/Cache/_internal/CacheInternal.ts +0 -293
- package/_src/vendor/Cache/Cache/_internal/CacheState.ts +0 -56
- package/_src/vendor/Cache/Cache/_internal/KeySet.ts +0 -58
- package/_src/vendor/Cache/Cache/_internal/MapKey.ts +0 -43
- package/_src/vendor/Cache/Cache/_internal/MapValue.ts +0 -39
- package/_src/vendor/Cache/Cache/definition.ts +0 -112
- package/_src/vendor/Cache/Cache/operations/make.ts +0 -17
- package/_src/vendor/Cache/Cache/operations/makeWith.ts +0 -32
- package/_src/vendor/Cache/Cache/operations.ts +0 -4
- package/_src/vendor/Cache/Cache.ts +0 -4
- package/_src/vendor/Cache/CacheStats/definition.ts +0 -23
- package/_src/vendor/Cache/CacheStats.ts +0 -3
- package/_src/vendor/Cache/EntryStats/definition.ts +0 -19
- package/_src/vendor/Cache/EntryStats.ts +0 -3
- package/_src/vendor/Cache/Lookup/definition.ts +0 -15
- package/_src/vendor/Cache/Lookup.ts +0 -3
- package/_src/vendor/Cache/global.ts.bak +0 -23
- package/_src/vendor/Cache/index.ts +0 -4
- package/dist/ext.d.ts +0 -2
- package/dist/ext.d.ts.map +0 -1
- package/dist/ext.js +0 -2
- package/dist/lib/RequestContext.d.ts.map +0 -1
- package/dist/lib/RequestContext.js +0 -52
- package/dist/lib/api/authorization.jwt.d.ts.map +0 -1
- package/dist/lib/api/defaultErrorHandler.d.ts.map +0 -1
- package/dist/lib/api/reportError.d.ts.map +0 -1
- package/dist/lib/api/routing.d.ts.map +0 -1
- package/dist/lib/api/routing.js +0 -248
- package/dist/lib/api/setupRequest.d.ts.map +0 -1
- package/dist/lib/api/util.d.ts.map +0 -1
- package/dist/lib/api/util.js +0 -14
- package/dist/lib/api/writeDocs.d.ts.map +0 -1
- package/dist/lib/api/writeDocs.js +0 -23
- package/dist/lib/errorReporter.d.ts.map +0 -1
- package/dist/lib/errorReporter.js +0 -45
- package/dist/lib/ext/Array.d.ts.map +0 -1
- package/dist/lib/fileUtil.d.ts +0 -22
- package/dist/lib/fileUtil.d.ts.map +0 -1
- package/dist/lib/fileUtil.js +0 -23
- package/dist/lib/filter/types/errors.d.ts.map +0 -1
- package/dist/lib/filter/types/fields.d.ts.map +0 -1
- package/dist/lib/filter/types/index.d.ts.map +0 -1
- package/dist/lib/filter/types/path/common.d.ts.map +0 -1
- package/dist/lib/filter/types/path/eager.d.ts.map +0 -1
- package/dist/lib/filter/types/path/index.d.ts.map +0 -1
- package/dist/lib/filter/types/utils.d.ts.map +0 -1
- package/dist/lib/filter/types/validator.d.ts.map +0 -1
- package/dist/lib/filter.d.ts.map +0 -1
- package/dist/lib/filter.js +0 -171
- package/dist/lib/instrument.d.ts.map +0 -1
- package/dist/lib/rateLimit.d.ts.map +0 -1
- package/dist/services/CUPS/service.d.ts +0 -19
- package/dist/services/CUPS/service.d.ts.map +0 -1
- package/dist/services/CUPS/service.js +0 -5
- package/dist/services/CUPS.d.ts +0 -10
- package/dist/services/CUPS.d.ts.map +0 -1
- package/dist/services/CUPS.js +0 -89
- package/dist/services/Cache.d.ts +0 -28
- package/dist/services/Cache.d.ts.map +0 -1
- package/dist/services/Cache.js +0 -28
- package/dist/services/ServiceBus.d.ts +0 -26
- package/dist/services/ServiceBus.d.ts.map +0 -1
- package/dist/services/ServiceBus.js +0 -53
- package/dist/services/memQueue.d.ts +0 -18
- package/dist/services/memQueue.d.ts.map +0 -1
- package/dist/services/memQueue.js +0 -24
- package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts +0 -5
- package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/_internal/AtomicBoolean.js +0 -7
- package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts +0 -8
- package/dist/vendor/Cache/Cache/_internal/AtomicNumber.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/_internal/AtomicNumber.js +0 -22
- package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts +0 -10
- package/dist/vendor/Cache/Cache/_internal/AtomicReference.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/_internal/AtomicReference.js +0 -25
- package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts +0 -51
- package/dist/vendor/Cache/Cache/_internal/CacheInternal.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/_internal/CacheInternal.js +0 -253
- package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts +0 -33
- package/dist/vendor/Cache/Cache/_internal/CacheState.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/_internal/CacheState.js +0 -21
- package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts +0 -20
- package/dist/vendor/Cache/Cache/_internal/KeySet.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/_internal/KeySet.js +0 -61
- package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts +0 -24
- package/dist/vendor/Cache/Cache/_internal/MapKey.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/_internal/MapKey.js +0 -37
- package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts +0 -32
- package/dist/vendor/Cache/Cache/_internal/MapValue.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/_internal/MapValue.js +0 -24
- package/dist/vendor/Cache/Cache/definition.d.ts +0 -100
- package/dist/vendor/Cache/Cache/definition.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/definition.js +0 -5
- package/dist/vendor/Cache/Cache/operations/make.d.ts +0 -12
- package/dist/vendor/Cache/Cache/operations/make.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/operations/make.js +0 -12
- package/dist/vendor/Cache/Cache/operations/makeWith.d.ts +0 -14
- package/dist/vendor/Cache/Cache/operations/makeWith.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/operations/makeWith.js +0 -15
- package/dist/vendor/Cache/Cache/operations.d.ts +0 -3
- package/dist/vendor/Cache/Cache/operations.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache/operations.js +0 -4
- package/dist/vendor/Cache/Cache.d.ts +0 -3
- package/dist/vendor/Cache/Cache.d.ts.map +0 -1
- package/dist/vendor/Cache/Cache.js +0 -4
- package/dist/vendor/Cache/CacheStats/definition.d.ts +0 -19
- package/dist/vendor/Cache/CacheStats/definition.d.ts.map +0 -1
- package/dist/vendor/Cache/CacheStats/definition.js +0 -6
- package/dist/vendor/Cache/CacheStats.d.ts +0 -2
- package/dist/vendor/Cache/CacheStats.d.ts.map +0 -1
- package/dist/vendor/Cache/CacheStats.js +0 -3
- package/dist/vendor/Cache/EntryStats/definition.d.ts +0 -17
- package/dist/vendor/Cache/EntryStats/definition.d.ts.map +0 -1
- package/dist/vendor/Cache/EntryStats/definition.js +0 -4
- package/dist/vendor/Cache/EntryStats.d.ts +0 -2
- package/dist/vendor/Cache/EntryStats.d.ts.map +0 -1
- package/dist/vendor/Cache/EntryStats.js +0 -3
- package/dist/vendor/Cache/Lookup/definition.d.ts +0 -17
- package/dist/vendor/Cache/Lookup/definition.d.ts.map +0 -1
- package/dist/vendor/Cache/Lookup/definition.js +0 -2
- package/dist/vendor/Cache/Lookup.d.ts +0 -2
- package/dist/vendor/Cache/Lookup.d.ts.map +0 -1
- package/dist/vendor/Cache/Lookup.js +0 -3
- package/dist/vendor/Cache/index.d.ts +0 -5
- package/dist/vendor/Cache/index.d.ts.map +0 -1
- package/dist/vendor/Cache/index.js +0 -5
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createContext = createContext;
|
|
7
|
+
var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
|
|
8
|
+
var tsplus_module_1 = _interopRequireWildcard(require("@fp-ts/data/Option"));
|
|
9
|
+
var tsplus_module_2 = _interopRequireWildcard(require("@effect/io/Effect"));
|
|
10
|
+
var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
|
|
11
|
+
var tsplus_module_4 = _interopRequireWildcard(require("@effect/io/Exit"));
|
|
12
|
+
var _Function = require("@effect-app/core/Function");
|
|
13
|
+
var MO = _interopRequireWildcard(require("@effect-app/schema"));
|
|
14
|
+
var _shared = require("./shared.cjs");
|
|
15
|
+
var simpledb = _interopRequireWildcard(require("./simpledb.cjs"));
|
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
18
|
+
const fileName_1 = "_src/services/simpledb/memdb.ts";
|
|
19
|
+
// When we are in-process, we want to share the same Storage
|
|
20
|
+
// Do not try this at home.
|
|
21
|
+
const storage = (0, _shared.makeMap)();
|
|
22
|
+
const parseSDB = MO.condemnFail(_shared.SerializedDBRecord.Parser);
|
|
23
|
+
function createContext() {
|
|
24
|
+
return (type, encode, decode) => {
|
|
25
|
+
return {
|
|
26
|
+
find: simpledb.find(find, decode, type),
|
|
27
|
+
findBy,
|
|
28
|
+
save: simpledb.store(find, store, bogusLock, type)
|
|
29
|
+
};
|
|
30
|
+
function find(id) {
|
|
31
|
+
return tracer_1.withCallTrace(fileName_1 + ":33:10")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":32:10")(tsplus_module_3.flatMapOpt(tracer_1.withCallTrace(fileName_1 + ":31:10")(tsplus_module_2.map(_ => tsplus_module_1.map(s => JSON.parse(s))(_)))(storage.find((0, _shared.getRecordName)(type, id))), parseSDB)), ({
|
|
32
|
+
data,
|
|
33
|
+
version
|
|
34
|
+
}) => ({
|
|
35
|
+
data: JSON.parse(data),
|
|
36
|
+
version
|
|
37
|
+
})));
|
|
38
|
+
}
|
|
39
|
+
function findBy(keys, eq) {
|
|
40
|
+
// Naive implementation, fine for in memory testing purposes.
|
|
41
|
+
return tracer_1.withCallTrace(fileName_1 + ":58:10")(tsplus_module_2.map(tsplus_module_1.fromNullable))(tracer_1.withCallTrace(fileName_1 + ":41:21")(tsplus_module_2.gen(function* ($) {
|
|
42
|
+
for (const [, value] of storage) {
|
|
43
|
+
const sdb_ = JSON.parse(value);
|
|
44
|
+
const sdb = yield* $(parseSDB(sdb_));
|
|
45
|
+
const cr = {
|
|
46
|
+
data: JSON.parse(sdb.data),
|
|
47
|
+
version: sdb.version
|
|
48
|
+
};
|
|
49
|
+
const r = yield* $(tsplus_module_2.exit(tracer_1.withCallTrace(fileName_1 + ":47:29")(tsplus_module_2.flatMap(d => eq.equals(keys, d) ? tracer_1.withCallTrace(fileName_1 + ":49:19")(tsplus_module_2.sync(() => d)) : tracer_1.withCallTrace(fileName_1 + ":50:26")(tsplus_module_2.fail("not equals"))))(decode(cr.data))));
|
|
50
|
+
if (tsplus_module_4.isSuccess(r)) {
|
|
51
|
+
return r.value;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
})));
|
|
56
|
+
}
|
|
57
|
+
function store(record, currentVersion) {
|
|
58
|
+
const version = tsplus_module_1.getOrElse(() => "1")(tsplus_module_1.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
|
|
59
|
+
const getData = (0, _Function.flow)(encode, _ => tracer_1.withCallTrace(fileName_1 + ":68:36")(tsplus_module_2.map(data => JSON.stringify({
|
|
60
|
+
version,
|
|
61
|
+
timestamp: new Date(),
|
|
62
|
+
data
|
|
63
|
+
})))(tracer_1.withCallTrace(fileName_1 + ":68:16")(tsplus_module_2.map(JSON.stringify))(_)));
|
|
64
|
+
return tracer_1.withCallTrace(fileName_1 + ":72:10")(tsplus_module_2.map(() => ({
|
|
65
|
+
version,
|
|
66
|
+
data: record
|
|
67
|
+
})))(tracer_1.withCallTrace(fileName_1 + ":71:10")(tsplus_module_2.flatMap(serialised => storage.set((0, _shared.getRecordName)(type, record.id), serialised)))(getData(record)));
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function bogusLock() {
|
|
72
|
+
return tracer_1.withCallTrace(fileName_1 + ":78:22")(tsplus_module_2.acquireRelease(tsplus_module_3.unit, () => tsplus_module_3.unit));
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=memdb.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memdb.cjs","mappings":"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","names":["storage","parseSDB","MO","condemnFail","SerializedDBRecord","Parser","createContext","type","encode","decode","find","simpledb","findBy","save","store","bogusLock","id","tsplus_module_3","_","tsplus_module_1","s","JSON","parse","data","version","keys","eq","tracer_1","$","value","sdb_","sdb","cr","r","d","equals","tsplus_module_2","tsplus_module_4","record","currentVersion","cv","parseInt","toString","getData","stringify","timestamp","Date","serialised","set"],"sourceRoot":"","sources":["../../../_src/services/simpledb/memdb.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createContext = createContext;
|
|
7
|
+
var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
|
|
8
|
+
var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
|
|
9
|
+
var tsplus_module_2 = _interopRequireWildcard(require("@fp-ts/data/Option"));
|
|
10
|
+
var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
|
|
11
|
+
var Mongo = _interopRequireWildcard(require("@effect-app/infra-adapters/mongo-client"));
|
|
12
|
+
var _shared = require("./shared.cjs");
|
|
13
|
+
var simpledb = _interopRequireWildcard(require("./simpledb.cjs"));
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
15
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
16
|
+
const fileName_1 = "_src/services/simpledb/mongodb.ts";
|
|
17
|
+
// const makeFromIndexKeys = (indexKeys: string[], unique: boolean) => indexKeys.reduce((prev, cur) => {
|
|
18
|
+
// prev[cur] = 1
|
|
19
|
+
// return prev
|
|
20
|
+
// }, {} as Record<string, number>)
|
|
21
|
+
const setup = (type, indexes) => tracer_1.withCallTrace(fileName_1 + ":17:6")(tsplus_module_1.flatMap(db => tracer_1.withCallTrace(fileName_1 + ":17:27")(tsplus_module_1.tryPromise(() => db.collection(type).createIndexes(indexes)))))(tracer_1.withCallTrace(fileName_1 + ":16:6")(tsplus_module_1.tap(db => tracer_1.withCallTrace(fileName_1 + ":16:23")(tsplus_module_1.tryPromise(() => db.createCollection(type).catch(err => console.warn(err))))))(Mongo.db));
|
|
22
|
+
function createContext() {
|
|
23
|
+
return (type, encode, decode,
|
|
24
|
+
// schemaVersion: string,
|
|
25
|
+
indexes) => {
|
|
26
|
+
return tracer_1.withCallTrace(fileName_1 + ":27:33")(tsplus_module_1.map(() => ({
|
|
27
|
+
find: simpledb.find(find, decode, type),
|
|
28
|
+
findBy,
|
|
29
|
+
save: simpledb.storeDirectly(store, type)
|
|
30
|
+
})))(setup(type, indexes));
|
|
31
|
+
function find(id) {
|
|
32
|
+
return tracer_1.withCallTrace(fileName_1 + ":43:10")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":42:10")(tsplus_module_1.map(tsplus_module_2.fromNullable))(tracer_1.withCallTrace(fileName_1 + ":35:10")(tsplus_module_1.flatMap(db => tracer_1.withCallTrace(fileName_1 + ":36:18")(tsplus_module_1.tryPromise(() => db.collection(type).findOne({
|
|
33
|
+
_id: id
|
|
34
|
+
})))))(Mongo.db)), ({
|
|
35
|
+
data,
|
|
36
|
+
version
|
|
37
|
+
}) => ({
|
|
38
|
+
version,
|
|
39
|
+
data
|
|
40
|
+
})));
|
|
41
|
+
}
|
|
42
|
+
function findBy(keys) {
|
|
43
|
+
return tracer_1.withCallTrace(fileName_1 + ":52:10")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":51:10")(tsplus_module_1.map(tsplus_module_2.fromNullable))(tracer_1.withCallTrace(fileName_1 + ":48:10")(tsplus_module_1.flatMap(db => tracer_1.withCallTrace(fileName_1 + ":49:18")(tsplus_module_1.tryPromise(() => db.collection(type).findOne(keys, {
|
|
44
|
+
projection: {
|
|
45
|
+
_id: 1
|
|
46
|
+
}
|
|
47
|
+
})))))(Mongo.db)), ({
|
|
48
|
+
_id
|
|
49
|
+
}) => _id));
|
|
50
|
+
}
|
|
51
|
+
function store(record, currentVersion) {
|
|
52
|
+
return tracer_1.withCallTrace(fileName_1 + ":56:21")(tsplus_module_1.gen(function* ($) {
|
|
53
|
+
const version = tsplus_module_2.getOrElse(() => "1")(tsplus_module_2.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
|
|
54
|
+
const db = yield* $(Mongo.db);
|
|
55
|
+
const data = yield* $(encode(record));
|
|
56
|
+
yield* $(tsplus_module_2.match(() => tsplus_module_1.orDie(tsplus_module_1.asUnit(tracer_1.withCallTrace(fileName_1 + ":66:22")(tsplus_module_1.tryPromise(() => db.collection(type).insertOne({
|
|
57
|
+
_id: record.id,
|
|
58
|
+
version,
|
|
59
|
+
timestamp: new Date(),
|
|
60
|
+
data
|
|
61
|
+
}, {
|
|
62
|
+
checkKeys: false // support for keys with `.` and `$`. NOTE: you can write them, read them, but NOT query for them.
|
|
63
|
+
}))))), currentVersion => tracer_1.withCallTrace(fileName_1 + ":87:23")(tsplus_module_1.flatMap(x => {
|
|
64
|
+
if (!x.modifiedCount) {
|
|
65
|
+
return tracer_1.withCallTrace(fileName_1 + ":89:33")(tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id)));
|
|
66
|
+
}
|
|
67
|
+
return tsplus_module_3.unit;
|
|
68
|
+
}))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":77:22")(tsplus_module_1.tryPromise(() => db.collection(type).replaceOne({
|
|
69
|
+
_id: record.id,
|
|
70
|
+
version: currentVersion
|
|
71
|
+
}, {
|
|
72
|
+
version,
|
|
73
|
+
timestamp: new Date(),
|
|
74
|
+
data
|
|
75
|
+
}, {
|
|
76
|
+
upsert: false
|
|
77
|
+
}))))))(currentVersion));
|
|
78
|
+
return {
|
|
79
|
+
version,
|
|
80
|
+
data: record
|
|
81
|
+
};
|
|
82
|
+
}));
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=mongodb.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongodb.cjs","mappings":"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","names":["setup","type","indexes","tracer_1","db","tsplus_module_1","collection","createIndexes","createCollection","catch","err","console","warn","Mongo","createContext","encode","decode","find","simpledb","findBy","save","storeDirectly","store","id","tsplus_module_3","findOne","_id","data","version","keys","projection","record","currentVersion","$","tsplus_module_2","cv","parseInt","toString","insertOne","timestamp","Date","checkKeys","x","modifiedCount","OptimisticLockException","replaceOne","upsert"],"sourceRoot":"","sources":["../../../_src/services/simpledb/mongodb.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.RedisSerializedDBRecord = void 0;
|
|
7
|
+
exports.createContext = createContext;
|
|
8
|
+
var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
|
|
9
|
+
var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
|
|
10
|
+
var tsplus_module_2 = _interopRequireWildcard(require("@effect-app/core/Effect"));
|
|
11
|
+
var tsplus_module_3 = _interopRequireWildcard(require("@fp-ts/data/Option"));
|
|
12
|
+
var _Function = require("@effect-app/core/Function");
|
|
13
|
+
var MO = _interopRequireWildcard(require("@effect-app/schema"));
|
|
14
|
+
var RED = _interopRequireWildcard(require("@effect-app/infra-adapters/redis-client"));
|
|
15
|
+
var _shared = require("./shared.cjs");
|
|
16
|
+
var simpledb = _interopRequireWildcard(require("./simpledb.cjs"));
|
|
17
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
const fileName_1 = "_src/services/simpledb/redisdb.ts";
|
|
20
|
+
const ttl = 10 * 1000;
|
|
21
|
+
function createContext() {
|
|
22
|
+
return (type, encode, decode, schemaVersion, makeIndexKey) => {
|
|
23
|
+
const getData = (0, _Function.flow)(encode, _ => tracer_1.withCallTrace(fileName_1 + ":22:41")(tsplus_module_1.map(JSON.stringify))(_));
|
|
24
|
+
return {
|
|
25
|
+
find: simpledb.find(find, decode, type),
|
|
26
|
+
findByIndex: getIdx,
|
|
27
|
+
save: simpledb.store(find, store, lockRedisRecord, type)
|
|
28
|
+
};
|
|
29
|
+
function find(id) {
|
|
30
|
+
return tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":30:39")(tsplus_module_2.flatMapOpt(RED.hmgetAll(getKey(id)), v => tracer_1.withCallTrace(fileName_1 + ":39:12")(tsplus_module_1.mapError(e => new _shared.ConnectionException(new Error(e.toString()))))(tracer_1.withCallTrace(fileName_1 + ":35:12")(tsplus_module_1.map(({
|
|
31
|
+
data,
|
|
32
|
+
version
|
|
33
|
+
}) => ({
|
|
34
|
+
data: JSON.parse(data),
|
|
35
|
+
version
|
|
36
|
+
})))((0, _Function.pipe)(RedisSerializedDBRecord.Parser, MO.condemnFail)(v))))));
|
|
37
|
+
}
|
|
38
|
+
function store(record, currentVersion) {
|
|
39
|
+
const version = tsplus_module_3.getOrElse(() => "1")(tsplus_module_3.map(cv => (parseInt(cv) + 1).toString())(currentVersion));
|
|
40
|
+
return tsplus_module_3.match(() => tsplus_module_1.scoped(tracer_1.withCallTrace(fileName_1 + ":48:29")(tsplus_module_1.zipRight(tracer_1.withCallTrace(fileName_1 + ":63:22")(tsplus_module_1.map(() => ({
|
|
41
|
+
version,
|
|
42
|
+
data: record
|
|
43
|
+
})))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":62:16")(tsplus_module_1.zipRight(setIndex(record)))(tracer_1.withCallTrace(fileName_1 + ":55:16")(tsplus_module_1.flatMap(data => hmSetRec(getKey(record.id), {
|
|
44
|
+
version,
|
|
45
|
+
timestamp: new Date(),
|
|
46
|
+
data
|
|
47
|
+
})))(tracer_1.withCallTrace(fileName_1 + ":53:16")(tsplus_module_1.zipRight(getData(record)))(tracer_1.withCallTrace(fileName_1 + ":50:16")(tsplus_module_2.zipRightOpt(getIndex(record), tracer_1.withCallTrace(fileName_1 + ":51:24")(tsplus_module_1.fail(() => new Error("Combination already exists, abort"))))))
|
|
48
|
+
// TODO: instead use MULTI & EXEC to make it in one command?
|
|
49
|
+
))))))(lockIndex(record))), () => tracer_1.withCallTrace(fileName_1 + ":74:20")(tsplus_module_1.map(() => ({
|
|
50
|
+
version,
|
|
51
|
+
data: record
|
|
52
|
+
})))(tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":67:14")(tsplus_module_1.flatMap(data => hmSetRec(getKey(record.id), {
|
|
53
|
+
version,
|
|
54
|
+
timestamp: new Date(),
|
|
55
|
+
data
|
|
56
|
+
})))(getData(record)))))(currentVersion);
|
|
57
|
+
}
|
|
58
|
+
function getIndex(record) {
|
|
59
|
+
const index = makeIndexKey(record);
|
|
60
|
+
return getIdx(index);
|
|
61
|
+
}
|
|
62
|
+
function setIndex(record) {
|
|
63
|
+
const index = makeIndexKey(record);
|
|
64
|
+
return setIdx(index, record);
|
|
65
|
+
}
|
|
66
|
+
function lockIndex(record) {
|
|
67
|
+
const index = makeIndexKey(record);
|
|
68
|
+
return lockRedisIdx(index);
|
|
69
|
+
}
|
|
70
|
+
function getIdx(index) {
|
|
71
|
+
return tracer_1.withCallTrace(fileName_1 + ":94:52")(tsplus_module_1.map(_ => tsplus_module_3.map(i => i)(_)))(RED.hget(getIdxKey(index), index.key));
|
|
72
|
+
}
|
|
73
|
+
function setIdx(index, r) {
|
|
74
|
+
return RED.hset(getIdxKey(index), index.key, r.id);
|
|
75
|
+
}
|
|
76
|
+
function lockRedisIdx(index) {
|
|
77
|
+
const lockKey = getIdxLockKey(index);
|
|
78
|
+
// acquire
|
|
79
|
+
return tracer_1.withCallTrace(fileName_1 + ":113:11")(tsplus_module_1.acquireRelease(tracer_1.withCallTrace(fileName_1 + ":106:10")(tsplus_module_1.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, lockKey, err),
|
|
80
|
+
// release
|
|
81
|
+
lock => ({
|
|
82
|
+
release: tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":110:29")(tsplus_module_1.tryPromise(() => lock.unlock())))
|
|
83
|
+
})))(tracer_1.withCallTrace(fileName_1 + ":105:10")(tsplus_module_1.flatMap(lock => tracer_1.withCallTrace(fileName_1 + ":105:33")(tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl)))))(RED.lock)), l => l.release));
|
|
84
|
+
}
|
|
85
|
+
function lockRedisRecord(id) {
|
|
86
|
+
// acquire
|
|
87
|
+
return tracer_1.withCallTrace(fileName_1 + ":134:11")(tsplus_module_1.acquireRelease(tracer_1.withCallTrace(fileName_1 + ":126:10")(tsplus_module_1.mapBoth(err => new _shared.CouldNotAquireDbLockException(type, id, err),
|
|
88
|
+
// release
|
|
89
|
+
lock => ({
|
|
90
|
+
// TODO
|
|
91
|
+
release: tsplus_module_1.orDie(tracer_1.withCallTrace(fileName_1 + ":131:29")(tsplus_module_1.tryPromise(() => lock.unlock())))
|
|
92
|
+
})))(tracer_1.withCallTrace(fileName_1 + ":121:10")(tsplus_module_1.flatMap(lock => tracer_1.withCallTrace(fileName_1 + ":122:18")(tsplus_module_1.tryPromise(() => lock.lock(getLockKey(id), ttl)))))(RED.lock)), l => l.release));
|
|
93
|
+
}
|
|
94
|
+
function getKey(id) {
|
|
95
|
+
return `v${schemaVersion}.${(0, _shared.getRecordName)(type, id)}`;
|
|
96
|
+
}
|
|
97
|
+
function getLockKey(id) {
|
|
98
|
+
return `v${schemaVersion}.locks.${(0, _shared.getRecordName)(type, id)}`;
|
|
99
|
+
}
|
|
100
|
+
function getIdxKey(index) {
|
|
101
|
+
return `v${schemaVersion}.${(0, _shared.getIndexName)(type, index.doc)}`;
|
|
102
|
+
}
|
|
103
|
+
function getIdxLockKey(index) {
|
|
104
|
+
return `v${schemaVersion}.locks.${(0, _shared.getIndexName)(type, index.doc)}_${index.key}`;
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
function hmSetRec(key, val) {
|
|
108
|
+
const enc = RedisSerializedDBRecord.Encoder(val);
|
|
109
|
+
return tracer_1.withCallTrace(fileName_1 + ":157:23")(tsplus_module_1.flatMap(client => tsplus_module_1.uninterruptible(tracer_1.withCallTrace(fileName_1 + ":159:16")(tsplus_module_1.async(res => {
|
|
110
|
+
client.hmset(key, "version", enc.version, "timestamp", enc.timestamp, "data", enc.data, err => err ? res(tracer_1.withCallTrace(fileName_1 + ":170:30")(tsplus_module_1.fail(new _shared.ConnectionException(err)))) : res(tracer_1.withCallTrace(fileName_1 + ":171:23")(tsplus_module_1.sync(() => void 0))));
|
|
111
|
+
})))))(RED.client);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
class RedisSerializedDBRecord extends MO.Model()({
|
|
115
|
+
version: MO.prop(MO.string),
|
|
116
|
+
timestamp: MO.prop(MO.date),
|
|
117
|
+
data: MO.prop(MO.string)
|
|
118
|
+
}) {}
|
|
119
|
+
exports.RedisSerializedDBRecord = RedisSerializedDBRecord;
|
|
120
|
+
//# sourceMappingURL=redisdb.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redisdb.cjs","mappings":"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","names":["ttl","createContext","type","encode","decode","schemaVersion","makeIndexKey","getData","_","tracer_1","JSON","stringify","find","simpledb","findByIndex","getIdx","save","store","lockRedisRecord","id","tsplus_module_2","hmgetAll","getKey","v","e","ConnectionException","Error","toString","data","version","parse","RedisSerializedDBRecord","Parser","MO","condemnFail","record","currentVersion","tsplus_module_3","cv","parseInt","tsplus_module_1","setIndex","hmSetRec","timestamp","Date","lockIndex","getIndex","index","setIdx","lockRedisIdx","i","RED","hget","getIdxKey","key","r","hset","lockKey","getIdxLockKey","err","CouldNotAquireDbLockException","lock","release","unlock","l","getLockKey","doc","val","enc","Encoder","client","res","hmset","Model","prop","string","date"],"sourceRoot":"","sources":["../../../_src/services/simpledb/redisdb.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SerializedDBRecord = exports.OptimisticLockException = exports.CouldNotAquireDbLockException = exports.ConnectionException = void 0;
|
|
7
|
+
exports.getIndexName = getIndexName;
|
|
8
|
+
exports.getRecordName = getRecordName;
|
|
9
|
+
exports.makeMap = makeMap;
|
|
10
|
+
exports.makeSerialisedDBRecord = makeSerialisedDBRecord;
|
|
11
|
+
var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
|
|
12
|
+
var tsplus_module_1 = _interopRequireWildcard(require("@fp-ts/data/Option"));
|
|
13
|
+
var tsplus_module_2 = _interopRequireWildcard(require("@effect/io/Effect"));
|
|
14
|
+
var MO = _interopRequireWildcard(require("@effect-app/schema"));
|
|
15
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
+
const fileName_1 = "_src/services/simpledb/shared.ts";
|
|
18
|
+
class BaseError {
|
|
19
|
+
constructor(message) {
|
|
20
|
+
this.message = message;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
class CouldNotAquireDbLockException extends BaseError {
|
|
24
|
+
constructor(type, id, error) {
|
|
25
|
+
super(`Couldn't lock db record ${type}: ${id}`);
|
|
26
|
+
this.type = type;
|
|
27
|
+
this.id = id;
|
|
28
|
+
this.error = error;
|
|
29
|
+
this._errorTag = "CouldNotAquireDbLockException";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.CouldNotAquireDbLockException = CouldNotAquireDbLockException;
|
|
33
|
+
class OptimisticLockException extends Error {
|
|
34
|
+
constructor(type, id) {
|
|
35
|
+
super(`Existing ${type} ${id} record changed`);
|
|
36
|
+
this.type = type;
|
|
37
|
+
this.id = id;
|
|
38
|
+
this._errorTag = "OptimisticLockException";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.OptimisticLockException = OptimisticLockException;
|
|
42
|
+
class ConnectionException extends Error {
|
|
43
|
+
constructor(error) {
|
|
44
|
+
super("A connection error ocurred");
|
|
45
|
+
this.error = error;
|
|
46
|
+
this._errorTag = "ConnectionException";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.ConnectionException = ConnectionException;
|
|
50
|
+
class SerializedDBRecord extends MO.Model()({
|
|
51
|
+
version: MO.prop(MO.string),
|
|
52
|
+
timestamp: MO.prop(MO.date),
|
|
53
|
+
data: MO.prop(MO.string)
|
|
54
|
+
}) {}
|
|
55
|
+
// unknown -> string -> SDB?
|
|
56
|
+
exports.SerializedDBRecord = SerializedDBRecord;
|
|
57
|
+
function makeSerialisedDBRecord(s) {
|
|
58
|
+
return MO.props({
|
|
59
|
+
version: MO.prop(MO.number),
|
|
60
|
+
timestamp: MO.prop(MO.date),
|
|
61
|
+
data: MO.prop(s)
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function getIndexName(type, id) {
|
|
65
|
+
return `${type}-idx_${id}`;
|
|
66
|
+
}
|
|
67
|
+
function getRecordName(type, id) {
|
|
68
|
+
return `${type}-r_${id}`;
|
|
69
|
+
}
|
|
70
|
+
function makeMap() {
|
|
71
|
+
const map = new Map();
|
|
72
|
+
return {
|
|
73
|
+
find: k => tracer_1.withCallTrace(fileName_1 + ":68:24")(tsplus_module_2.sync(() => tsplus_module_1.fromNullable(map.get(k)))),
|
|
74
|
+
[Symbol.iterator]: () => map[Symbol.iterator](),
|
|
75
|
+
set: (k, v) => tracer_1.withCallTrace(fileName_1 + ":71:7")(tsplus_module_2.sync(() => {
|
|
76
|
+
map.set(k, v);
|
|
77
|
+
}))
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=shared.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.cjs","mappings":";;;;;;;;;;;;;AAAA;AAAwC;AAAA;;AAGxC,MAAMA,SAAS;EACbC,YAAmBC,OAAe;IAAf,YAAO,GAAPA,OAAO;EAAW;;AAEjC,MAAOC,6BAA8B,SAAQH,SAAS;EAE1DC,YAAqBG,IAAY,EAAWC,EAAU,EAAWC,KAAY;IAC3E,KAAK,CAAC,2BAA2BF,IAAI,KAAKC,EAAE,EAAE,CAAC;IAD5B,SAAI,GAAJD,IAAI;IAAmB,OAAE,GAAFC,EAAE;IAAmB,UAAK,GAALC,KAAK;IAD7D,cAAS,GAAG,+BAA+B;EAGpD;;AACD;AAEK,MAAOC,uBAAwB,SAAQC,KAAK;EAEhDP,YAAqBG,IAAY,EAAWC,EAAU;IACpD,KAAK,CAAC,YAAYD,IAAI,IAAIC,EAAE,iBAAiB,CAAC;IAD3B,SAAI,GAAJD,IAAI;IAAmB,OAAE,GAAFC,EAAE;IADrC,cAAS,GAAG,yBAAyB;EAG9C;;AACD;AAEK,MAAOI,mBAAoB,SAAQD,KAAK;EAE5CP,YAAqBK,KAAY;IAC/B,KAAK,CAAC,4BAA4B,CAAC;IADhB,UAAK,GAALA,KAAK;IADjB,cAAS,GAAG,qBAAqB;EAG1C;;AACD;AAMK,MAAOI,kBAAmB,SAAQC,EAAE,CAACC,KAAK,EAAsB,CAAC;EACrEC,OAAO,EAAEF,EAAE,CAACG,IAAI,CAACH,EAAE,CAACI,MAAM,CAAC;EAC3BC,SAAS,EAAEL,EAAE,CAACG,IAAI,CAACH,EAAE,CAACM,IAAI,CAAC;EAC3BC,IAAI,EAAEP,EAAE,CAACG,IAAI,CAACH,EAAE,CAACI,MAAM;CACxB,CAAC;AAEF;AAAA;AACM,SAAUI,sBAAsB,CAACC,CAAY;EACjD,OAAOT,EAAE,CAACU,KAAK,CAAC;IACdR,OAAO,EAAEF,EAAE,CAACG,IAAI,CAACH,EAAE,CAACW,MAAM,CAAC;IAC3BN,SAAS,EAAEL,EAAE,CAACG,IAAI,CAACH,EAAE,CAACM,IAAI,CAAC;IAC3BC,IAAI,EAAEP,EAAE,CAACG,IAAI,CAACM,CAAC;GAChB,CAAC;AACJ;AAYM,SAAUG,YAAY,CAACnB,IAAY,EAAEC,EAAU;EACnD,OAAO,GAAGD,IAAI,QAAQC,EAAE,EAAE;AAC5B;AAEM,SAAUmB,aAAa,CAACpB,IAAY,EAAEC,EAAU;EACpD,OAAO,GAAGD,IAAI,MAAMC,EAAE,EAAE;AAC1B;AAEM,SAAUoB,OAAO;EACrB,MAAMC,GAAG,GAAG,IAAIC,GAAG,EAAW;EAC9B,OAAO;IACLC,IAAI,EAAGC,CAAO,IAAIC,8CAACC,qBAAO,MAAMC,6BAAiBN,GAAG,CAACO,GAAG,CAACJ,CAAC,CAAC,CAAC,CAAC;IAC7D,CAACK,MAAM,CAACC,QAAQ,GAAG,MAAMT,GAAG,CAACQ,MAAM,CAACC,QAAQ,CAAC,EAAE;IAC/CC,GAAG,EAAE,CAACP,CAAO,EAAEQ,CAAI,KAAIP,6CACrBC,qBAAO,MAAK;MACVL,GAAG,CAACU,GAAG,CAACP,CAAC,EAAEQ,CAAC,CAAC;IACf,CAAC,CAAC;GACiB;AACzB","names":["BaseError","constructor","message","CouldNotAquireDbLockException","type","id","error","OptimisticLockException","Error","ConnectionException","SerializedDBRecord","MO","Model","version","prop","string","timestamp","date","data","makeSerialisedDBRecord","s","props","number","getIndexName","getRecordName","makeMap","map","Map","find","k","tracer_1","tsplus_module_2","tsplus_module_1","get","Symbol","iterator","set","v"],"sourceRoot":"","sources":["../../../_src/services/simpledb/shared.ts"],"sourcesContent":[null]}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.RecordCache = exports.LiveRecordCache = exports.InvalidStateError = void 0;
|
|
7
|
+
exports.find = find;
|
|
8
|
+
exports.makeLiveRecordCache = makeLiveRecordCache;
|
|
9
|
+
exports.store = store;
|
|
10
|
+
exports.storeDirectly = storeDirectly;
|
|
11
|
+
var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
|
|
12
|
+
var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
|
|
13
|
+
var tsplus_module_2 = _interopRequireWildcard(require("@fp-ts/data/Context"));
|
|
14
|
+
var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
|
|
15
|
+
var tsplus_module_4 = _interopRequireWildcard(require("@fp-ts/data/Option"));
|
|
16
|
+
var _shared = require("./shared.cjs");
|
|
17
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
19
|
+
const fileName_1 = "_src/services/simpledb/simpledb.ts";
|
|
20
|
+
class InvalidStateError {
|
|
21
|
+
constructor(message, details) {
|
|
22
|
+
this.message = message;
|
|
23
|
+
this.details = details;
|
|
24
|
+
this._tag = "InvalidStateError";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.InvalidStateError = InvalidStateError;
|
|
28
|
+
function makeLiveRecordCache() {
|
|
29
|
+
const m = new Map();
|
|
30
|
+
return {
|
|
31
|
+
get: type => tracer_1.withCallTrace(fileName_1 + ":14:7")(tsplus_module_1.sync(() => {
|
|
32
|
+
const ex = m.get(type);
|
|
33
|
+
if (!ex) {
|
|
34
|
+
const nm = (0, _shared.makeMap)();
|
|
35
|
+
m.set(type, nm);
|
|
36
|
+
return nm;
|
|
37
|
+
}
|
|
38
|
+
return ex;
|
|
39
|
+
}))
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// module tag
|
|
43
|
+
const RecordCache = tsplus_module_2.Tag();
|
|
44
|
+
exports.RecordCache = RecordCache;
|
|
45
|
+
const LiveRecordCache = tsplus_module_1.toLayer(RecordCache)(tracer_1.withCallTrace(fileName_1 + ":31:32")(tsplus_module_1.sync(() => makeLiveRecordCache())));
|
|
46
|
+
exports.LiveRecordCache = LiveRecordCache;
|
|
47
|
+
const getM = type => eff => tracer_1.withCallTrace(fileName_1 + ":35:12")(tsplus_module_1.gen(function* ($) {
|
|
48
|
+
const {
|
|
49
|
+
get
|
|
50
|
+
} = yield* $(tsplus_module_1.service(RecordCache));
|
|
51
|
+
return yield* $(tracer_1.withCallTrace(fileName_1 + ":37:36")(tsplus_module_1.flatMap(eff))(get(type)));
|
|
52
|
+
}));
|
|
53
|
+
function find(tryRead, decode, type) {
|
|
54
|
+
const getCache = getM(type);
|
|
55
|
+
const read = id => tracer_1.withCallTrace(fileName_1 + ":55:8")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":54:8")(tsplus_module_3.tapOpt(tracer_1.withCallTrace(fileName_1 + ":48:8")(tsplus_module_3.flatMapOpt(tryRead(id), ({
|
|
56
|
+
data,
|
|
57
|
+
version
|
|
58
|
+
}) => tracer_1.withCallTrace(fileName_1 + ":49:22")(tsplus_module_1.mapBoth(err => new InvalidStateError("DB serialisation Issue", err), data => ({
|
|
59
|
+
data,
|
|
60
|
+
version
|
|
61
|
+
})))(decode(data)))), r => getCache(c => c.set(id, r)))), r => r.data));
|
|
62
|
+
return id => getCache(c => tracer_1.withCallTrace(fileName_1 + ":62:10")(tsplus_module_1.orElse(() => read(id)))(tracer_1.withCallTrace(fileName_1 + ":61:10")(tsplus_module_3.mapOpt(c.find(id), existing => existing.data))));
|
|
63
|
+
}
|
|
64
|
+
function storeDirectly(save, type) {
|
|
65
|
+
const getCache = getM(type);
|
|
66
|
+
return record => getCache(c => tracer_1.withCallTrace(fileName_1 + ":78:10")(tsplus_module_1.map(r => r.data))(tracer_1.withCallTrace(fileName_1 + ":77:10")(tsplus_module_1.tap(r => c.set(record.id, r)))(tracer_1.withCallTrace(fileName_1 + ":76:10")(tsplus_module_1.flatMap(cv => save(record, cv)))(tracer_1.withCallTrace(fileName_1 + ":75:10")(tsplus_module_3.mapOpt(c.find(record.id), x => x.version))))));
|
|
67
|
+
}
|
|
68
|
+
function store(tryRead, save, lock, type) {
|
|
69
|
+
const getCache = getM(type);
|
|
70
|
+
return record => getCache(c => tracer_1.withCallTrace(fileName_1 + ":96:10")(tsplus_module_1.map(r => r.data))(tracer_1.withCallTrace(fileName_1 + ":95:10")(tsplus_module_1.tap(r => c.set(record.id, r)))(tracer_1.withCallTrace(fileName_1 + ":94:10")(tsplus_module_1.flatMap(_ => tsplus_module_4.match(() => save(record, tsplus_module_4.none), confirmVersionAndSave(record))(_)))(tracer_1.withCallTrace(fileName_1 + ":93:10")(tsplus_module_3.mapOpt(c.find(record.id), x => x.version))))));
|
|
71
|
+
function confirmVersionAndSave(record) {
|
|
72
|
+
return cv => tsplus_module_1.scoped(tracer_1.withCallTrace(fileName_1 + ":101:23")(tsplus_module_1.zipRight(tracer_1.withCallTrace(fileName_1 + ":114:12")(tsplus_module_1.zipRight(save(record, tsplus_module_4.some(cv))))(tracer_1.withCallTrace(fileName_1 + ":109:12")(tsplus_module_1.tap(({
|
|
73
|
+
version
|
|
74
|
+
}) => version !== cv ? tracer_1.withCallTrace(fileName_1 + ":111:24")(tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id))) : tsplus_module_3.unit))(tracer_1.withCallTrace(fileName_1 + ":103:12")(tsplus_module_1.flatMap(_ => tsplus_module_4.match(() => tracer_1.withCallTrace(fileName_1 + ":105:28")(tsplus_module_1.fail(new InvalidStateError("record is gone"))), tsplus_module_1.succeed)(_)))(tryRead(record.id))))))(lock(record.id)));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=simpledb.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simpledb.cjs","mappings":"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","names":["InvalidStateError","constructor","message","details","makeLiveRecordCache","m","Map","get","type","tracer_1","tsplus_module_1","ex","nm","set","RecordCache","tsplus_module_2","LiveRecordCache","getM","eff","$","find","tryRead","decode","getCache","read","id","tsplus_module_3","data","version","err","r","c","existing","storeDirectly","save","record","cv","x","store","lock","_","tsplus_module_4","confirmVersionAndSave","OptimisticLockException"],"sourceRoot":"","sources":["../../../_src/services/simpledb/simpledb.ts"],"sourcesContent":[null]}
|
|
File without changes
|
package/_src/_global.ext.ts
CHANGED
|
@@ -13,22 +13,22 @@ import type {} from "@effect-app/infra/test.arbs"
|
|
|
13
13
|
/**
|
|
14
14
|
* @tsplus global
|
|
15
15
|
*/
|
|
16
|
-
import type {} from "@effect-app/infra/ext"
|
|
16
|
+
import type {} from "@effect-app/infra/ext/Array"
|
|
17
17
|
/**
|
|
18
18
|
* @tsplus global
|
|
19
19
|
*/
|
|
20
|
-
import type {} from "@effect-app/infra/
|
|
20
|
+
import type {} from "@effect-app/infra/instrument"
|
|
21
21
|
/**
|
|
22
22
|
* @tsplus global
|
|
23
23
|
*/
|
|
24
|
-
import type {} from "@effect-app/infra/
|
|
24
|
+
import type {} from "@effect-app/infra/rateLimit"
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* @tsplus global
|
|
28
28
|
*/
|
|
29
|
-
import type {} from "@effect-app/infra/
|
|
29
|
+
import type {} from "@effect-app/infra/api/setupRequest"
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* @tsplus global
|
|
33
33
|
*/
|
|
34
|
-
import {} from "@effect-app/infra/
|
|
34
|
+
import {} from "@effect-app/infra/api/reportError"
|