@effect-app/infra 0.198.2 → 0.199.2
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 +32 -0
- package/_cjs/RequestContext.cjs +14 -9
- package/_cjs/RequestContext.cjs.map +1 -1
- package/_cjs/_ext/Array.cjs +3 -7
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +3 -6
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing/base.cjs +27 -61
- package/_cjs/api/routing/base.cjs.map +1 -1
- package/_cjs/api/routing/defaultErrorHandler.cjs +14 -21
- package/_cjs/api/routing/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/routing/makeRequestHandler.cjs +44 -51
- package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
- package/_cjs/api/routing/match.cjs +6 -13
- package/_cjs/api/routing/match.cjs.map +1 -1
- package/_cjs/api/{express → routing}/schema/jwt.cjs +3 -4
- package/_cjs/api/routing/schema/jwt.cjs.map +1 -0
- package/_cjs/api/routing/schema/routing.cjs +136 -0
- package/_cjs/api/routing/schema/routing.cjs.map +1 -0
- package/_cjs/api/setupRequest.cjs +16 -22
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +16 -17
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +2 -4
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/filter/types/path/index.cjs +0 -2
- package/_cjs/filter/types/path/index.cjs.map +1 -1
- package/_cjs/filter.cjs +35 -0
- package/_cjs/filter.cjs.map +1 -1
- package/_cjs/logger/jsonLogger.cjs +9 -15
- package/_cjs/logger/jsonLogger.cjs.map +1 -1
- package/_cjs/logger/logFmtLogger.cjs +7 -11
- package/_cjs/logger/logFmtLogger.cjs.map +1 -1
- package/_cjs/logger/shared.cjs +6 -8
- package/_cjs/logger/shared.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +9 -12
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +9 -16
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +5 -8
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Emailer/service.cjs +2 -4
- package/_cjs/services/Emailer/service.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +29 -42
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +15 -15
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +8 -12
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +27 -33
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +31 -40
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/service.cjs +7 -9
- package/_cjs/services/QueueMaker/service.cjs.map +1 -1
- package/_cjs/services/Repository/dsl.cjs +11 -14
- package/_cjs/services/Repository/dsl.cjs.map +1 -1
- package/_cjs/services/Repository/ext.cjs +62 -71
- package/_cjs/services/Repository/ext.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +212 -197
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +17 -23
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/ContextMapContainer.cjs +10 -16
- package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos/query.cjs +5 -9
- package/_cjs/services/Store/Cosmos/query.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +58 -68
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +34 -36
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +55 -65
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.cjs +2 -4
- package/_cjs/services/Store/codeFilter.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +13 -12
- package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
- package/_cjs/services/Store/filterApi/query.cjs +2 -4
- package/_cjs/services/Store/filterApi/query.cjs.map +1 -1
- package/_cjs/services/Store/index.cjs +6 -9
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +5 -7
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +16 -20
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/query.cjs +4 -1
- package/_cjs/services/query.cjs.map +1 -1
- package/_cjs/test.arbs.cjs +3 -4
- package/_cjs/test.arbs.cjs.map +1 -1
- package/dist/RequestContext.d.ts +20 -20
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +15 -8
- package/dist/_ext/Array.d.ts +2 -3
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +5 -5
- package/dist/api/reportError.d.ts +5 -5
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +6 -6
- package/dist/api/routing/base.d.ts +11 -15
- package/dist/api/routing/base.d.ts.map +1 -1
- package/dist/api/routing/base.js +48 -67
- package/dist/api/routing/defaultErrorHandler.d.ts +4 -6
- package/dist/api/routing/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/routing/defaultErrorHandler.js +26 -28
- package/dist/api/routing/makeRequestHandler.d.ts +6 -7
- package/dist/api/routing/makeRequestHandler.d.ts.map +1 -1
- package/dist/api/routing/makeRequestHandler.js +69 -59
- package/dist/api/routing/match.d.ts +7 -8
- package/dist/api/routing/match.d.ts.map +1 -1
- package/dist/api/routing/match.js +7 -11
- package/dist/api/routing/schema/jwt.d.ts +4 -0
- package/dist/api/routing/schema/jwt.d.ts.map +1 -0
- package/dist/api/routing/schema/jwt.js +11 -0
- package/dist/api/{express → routing}/schema/routing.d.ts +2 -2
- package/dist/api/routing/schema/routing.d.ts.map +1 -0
- package/dist/api/routing/schema/routing.js +123 -0
- package/dist/api/routing.js +3 -1
- package/dist/api/setupRequest.d.ts +3 -5
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +20 -24
- package/dist/errorReporter.d.ts +4 -4
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +20 -17
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -3
- package/dist/filter/types/path/index.d.ts +2 -2
- package/dist/filter/types/path/index.d.ts.map +1 -1
- package/dist/filter/types/path/index.js +2 -3
- package/dist/filter/types.js +2 -1
- package/dist/filter.d.ts.map +1 -1
- package/dist/filter.js +36 -1
- package/dist/logger/jsonLogger.d.ts +2 -1
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +9 -13
- package/dist/logger/logFmtLogger.d.ts +2 -1
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +9 -11
- package/dist/logger/shared.d.ts +2 -1
- package/dist/logger/shared.d.ts.map +1 -1
- package/dist/logger/shared.js +7 -9
- package/dist/rateLimit.d.ts +7 -10
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +17 -16
- package/dist/services/Emailer/Sendgrid.d.ts +1 -2
- package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/services/Emailer/Sendgrid.js +16 -20
- package/dist/services/Emailer/fake.d.ts +2 -2
- package/dist/services/Emailer/fake.d.ts.map +1 -1
- package/dist/services/Emailer/fake.js +10 -8
- package/dist/services/Emailer/service.d.ts +7 -10
- package/dist/services/Emailer/service.d.ts.map +1 -1
- package/dist/services/Emailer/service.js +3 -3
- package/dist/services/Operations/live.d.ts +2 -3
- package/dist/services/Operations/live.d.ts.map +1 -1
- package/dist/services/Operations/live.js +44 -51
- package/dist/services/Operations/service.d.ts +14 -19
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +23 -28
- package/dist/services/QueueMaker/errors.d.ts +5 -7
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.js +11 -11
- package/dist/services/QueueMaker/memQueue.d.ts +6 -9
- package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/memQueue.js +37 -39
- package/dist/services/QueueMaker/sbqueue.d.ts +6 -9
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +41 -39
- package/dist/services/QueueMaker/service.d.ts +2 -4
- package/dist/services/QueueMaker/service.d.ts.map +1 -1
- package/dist/services/QueueMaker/service.js +8 -8
- package/dist/services/Repository/dsl.d.ts +11 -13
- package/dist/services/Repository/dsl.d.ts.map +1 -1
- package/dist/services/Repository/dsl.js +12 -13
- package/dist/services/Repository/ext.d.ts +34 -62
- package/dist/services/Repository/ext.d.ts.map +1 -1
- package/dist/services/Repository/ext.js +59 -70
- package/dist/services/RepositoryBase.d.ts +101 -71
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +229 -226
- package/dist/services/RequestContextContainer.d.ts +13 -21
- package/dist/services/RequestContextContainer.d.ts.map +1 -1
- package/dist/services/RequestContextContainer.js +21 -25
- package/dist/services/Store/ContextMapContainer.d.ts +11 -18
- package/dist/services/Store/ContextMapContainer.d.ts.map +1 -1
- package/dist/services/Store/ContextMapContainer.js +17 -18
- package/dist/services/Store/Cosmos/query.d.ts +3 -2
- package/dist/services/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/services/Store/Cosmos/query.js +10 -11
- package/dist/services/Store/Cosmos.d.ts +2 -3
- package/dist/services/Store/Cosmos.d.ts.map +1 -1
- package/dist/services/Store/Cosmos.js +107 -90
- package/dist/services/Store/Disk.d.ts +4 -4
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +54 -50
- package/dist/services/Store/Memory.d.ts +6 -8
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +93 -89
- package/dist/services/Store/codeFilter.d.ts.map +1 -1
- package/dist/services/Store/codeFilter.js +3 -3
- package/dist/services/Store/codeFilter.test.d.ts.map +1 -1
- package/dist/services/Store/filterApi/query.d.ts +1 -1
- package/dist/services/Store/filterApi/query.d.ts.map +1 -1
- package/dist/services/Store/filterApi/query.js +3 -3
- package/dist/services/Store/index.d.ts +1 -2
- package/dist/services/Store/index.d.ts.map +1 -1
- package/dist/services/Store/index.js +7 -8
- package/dist/services/Store/service.d.ts +20 -23
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/Store/service.js +6 -6
- package/dist/services/Store/utils.d.ts +3 -3
- package/dist/services/Store/utils.d.ts.map +1 -1
- package/dist/services/Store/utils.js +26 -28
- package/dist/services/query.d.ts +6 -6
- package/dist/services/query.d.ts.map +1 -1
- package/dist/services/query.js +5 -3
- package/dist/test.arbs.d.ts +0 -2
- package/dist/test.arbs.d.ts.map +1 -1
- package/dist/test.arbs.js +3 -4
- package/package.json +28 -168
- package/src/RequestContext.ts +1 -0
- package/src/_ext/Array.ts +5 -2
- package/src/api/reportError.ts +14 -10
- package/src/api/routing/base.ts +77 -110
- package/src/api/routing/defaultErrorHandler.ts +64 -54
- package/src/api/routing/makeRequestHandler.ts +165 -135
- package/src/api/routing/match.ts +14 -8
- package/src/api/{express → routing}/schema/jwt.ts +6 -5
- package/src/api/{express → routing}/schema/routing.ts +2 -1
- package/src/api/setupRequest.ts +30 -24
- package/src/errorReporter.ts +12 -11
- package/src/errors.ts +1 -0
- package/src/filter/types/path/index.ts +2 -2
- package/src/logger/jsonLogger.ts +6 -5
- package/src/logger/logFmtLogger.ts +4 -5
- package/src/logger/shared.ts +4 -3
- package/src/rateLimit.ts +37 -34
- package/src/services/Emailer/Sendgrid.ts +12 -10
- package/src/services/Emailer/fake.ts +7 -4
- package/src/services/Emailer/service.ts +4 -1
- package/src/services/Operations/live.ts +66 -59
- package/src/services/Operations/service.ts +41 -34
- package/src/services/QueueMaker/errors.ts +15 -11
- package/src/services/QueueMaker/memQueue.ts +59 -40
- package/src/services/QueueMaker/sbqueue.ts +54 -33
- package/src/services/QueueMaker/service.ts +7 -6
- package/src/services/Repository/dsl.ts +18 -14
- package/src/services/Repository/ext.ts +58 -50
- package/src/services/RepositoryBase.ts +478 -351
- package/src/services/RequestContextContainer.ts +30 -18
- package/src/services/Store/ContextMapContainer.ts +26 -13
- package/src/services/Store/Cosmos/query.ts +17 -11
- package/src/services/Store/Cosmos.ts +209 -168
- package/src/services/Store/Disk.ts +69 -53
- package/src/services/Store/Memory.ts +138 -97
- package/src/services/Store/{Redis.ts → Redis.ts.bak} +7 -5
- package/src/services/Store/codeFilter.test.ts +61 -36
- package/src/services/Store/codeFilter.ts +1 -0
- package/src/services/Store/filterApi/query.ts +1 -0
- package/src/services/Store/index.ts +7 -6
- package/src/services/Store/service.ts +4 -1
- package/src/services/Store/utils.ts +25 -23
- package/src/services/query.ts +3 -2
- package/src/services/simpledb/{cosmosdb.ts → cosmosdb.ts.bak} +1 -0
- package/src/services/simpledb/{diskdb.ts → diskdb.ts.bak} +2 -1
- package/src/services/simpledb/{memdb.ts → memdb.ts.bak} +3 -2
- package/src/services/simpledb/{mongodb.ts → mongodb.ts.bak} +1 -0
- package/src/services/simpledb/{redisdb.ts → redisdb.ts.bak} +17 -14
- package/src/services/simpledb/{shared.ts → shared.ts.bak} +2 -1
- package/src/services/simpledb/{simpledb.ts → simpledb.ts.bak} +6 -2
- package/tsconfig.json +4 -21
- package/tsconfig.json.bak +0 -4
- package/_cjs/_global.cjs +0 -6
- package/_cjs/_global.cjs.map +0 -1
- package/_cjs/_global.ext.cjs +0 -5
- package/_cjs/_global.ext.cjs.map +0 -1
- package/_cjs/_global.schema.cjs +0 -5
- package/_cjs/_global.schema.cjs.map +0 -1
- package/_cjs/api/defaultErrorHandler.cjs +0 -37
- package/_cjs/api/defaultErrorHandler.cjs.map +0 -1
- package/_cjs/api/express/schema/jwt.cjs.map +0 -1
- package/_cjs/api/express/schema/routing.cjs +0 -23
- package/_cjs/api/express/schema/routing.cjs.map +0 -1
- package/_cjs/api/http.cjs +0 -42
- package/_cjs/api/http.cjs.map +0 -1
- package/_cjs/services/Store/Redis.cjs +0 -73
- package/_cjs/services/Store/Redis.cjs.map +0 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +0 -109
- package/_cjs/services/simpledb/cosmosdb.cjs.map +0 -1
- package/_cjs/services/simpledb/diskdb.cjs +0 -125
- package/_cjs/services/simpledb/diskdb.cjs.map +0 -1
- package/_cjs/services/simpledb/index.cjs +0 -38
- package/_cjs/services/simpledb/index.cjs.map +0 -1
- package/_cjs/services/simpledb/memdb.cjs +0 -72
- package/_cjs/services/simpledb/memdb.cjs.map +0 -1
- package/_cjs/services/simpledb/mongodb.cjs +0 -99
- package/_cjs/services/simpledb/mongodb.cjs.map +0 -1
- package/_cjs/services/simpledb/redisdb.cjs +0 -135
- package/_cjs/services/simpledb/redisdb.cjs.map +0 -1
- package/_cjs/services/simpledb/shared.cjs +0 -79
- package/_cjs/services/simpledb/shared.cjs.map +0 -1
- package/_cjs/services/simpledb/simpledb.cjs +0 -85
- package/_cjs/services/simpledb/simpledb.cjs.map +0 -1
- package/dist/_global.d.ts +0 -10
- package/dist/_global.d.ts.map +0 -1
- package/dist/_global.ext.d.ts +0 -34
- package/dist/_global.ext.d.ts.map +0 -1
- package/dist/_global.ext.js +0 -6
- package/dist/_global.js +0 -12
- package/dist/_global.schema.d.ts +0 -6
- package/dist/_global.schema.d.ts.map +0 -1
- package/dist/_global.schema.js +0 -9
- package/dist/api/defaultErrorHandler.d.ts +0 -6
- package/dist/api/defaultErrorHandler.d.ts.map +0 -1
- package/dist/api/defaultErrorHandler.js +0 -34
- package/dist/api/express/schema/jwt.d.ts +0 -6
- package/dist/api/express/schema/jwt.d.ts.map +0 -1
- package/dist/api/express/schema/jwt.js +0 -11
- package/dist/api/express/schema/routing.d.ts.map +0 -1
- package/dist/api/express/schema/routing.js +0 -10
- package/dist/api/http.d.ts +0 -16
- package/dist/api/http.d.ts.map +0 -1
- package/dist/api/http.js +0 -12
- package/dist/services/Store/Redis.d.ts +0 -6
- package/dist/services/Store/Redis.d.ts.map +0 -1
- package/dist/services/Store/Redis.js +0 -76
- package/dist/services/simpledb/cosmosdb.d.ts +0 -14
- package/dist/services/simpledb/cosmosdb.d.ts.map +0 -1
- package/dist/services/simpledb/cosmosdb.js +0 -103
- package/dist/services/simpledb/diskdb.d.ts +0 -12
- package/dist/services/simpledb/diskdb.d.ts.map +0 -1
- package/dist/services/simpledb/diskdb.js +0 -109
- package/dist/services/simpledb/index.d.ts +0 -7
- package/dist/services/simpledb/index.d.ts.map +0 -1
- package/dist/services/simpledb/index.js +0 -7
- package/dist/services/simpledb/memdb.d.ts +0 -11
- package/dist/services/simpledb/memdb.d.ts.map +0 -1
- package/dist/services/simpledb/memdb.js +0 -58
- package/dist/services/simpledb/mongodb.d.ts +0 -13
- package/dist/services/simpledb/mongodb.d.ts.map +0 -1
- package/dist/services/simpledb/mongodb.js +0 -68
- package/dist/services/simpledb/redisdb.d.ts +0 -35
- package/dist/services/simpledb/redisdb.d.ts.map +0 -1
- package/dist/services/simpledb/redisdb.js +0 -126
- package/dist/services/simpledb/shared.d.ts +0 -87
- package/dist/services/simpledb/shared.d.ts.map +0 -1
- package/dist/services/simpledb/shared.js +0 -52
- package/dist/services/simpledb/simpledb.d.ts +0 -23
- package/dist/services/simpledb/simpledb.d.ts.map +0 -1
- package/dist/services/simpledb/simpledb.js +0 -69
- package/src/_global.ext.ts +0 -36
- package/src/_global.schema.ts +0 -10
- package/src/_global.ts +0 -14
- package/src/api/defaultErrorHandler.ts +0 -59
- package/src/api/express/makeJsonSchema.test.ts.bak +0 -76
- package/src/api/express/makeJsonSchema.ts.bak +0 -166
- package/src/api/express/makeOpenApiSpecs.ts.bak +0 -62
- package/src/api/http.ts +0 -26
- package/tsplus.config.json +0 -9
- /package/src/services/simpledb/{index.ts → index.ts.bak} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { StoreWhereFilter, Where } from "@effect-app/infra/services/Store"
|
|
2
|
+
import { ReadonlyArray } from "effect-app"
|
|
2
3
|
import { Filters, makeFilters } from "../../filter.js"
|
|
3
4
|
import { codeFilter } from "./utils.js"
|
|
4
5
|
|
|
@@ -44,98 +45,122 @@ type Something = {
|
|
|
44
45
|
|
|
45
46
|
test("works", () => {
|
|
46
47
|
expect(
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
ReadonlyArray.filterMap(
|
|
49
|
+
somethings,
|
|
50
|
+
codeFilter(
|
|
49
51
|
somethingsWhere((_) => _("b", (_) => "b2"))
|
|
50
|
-
)
|
|
52
|
+
)
|
|
53
|
+
)
|
|
51
54
|
)
|
|
52
55
|
.toEqual([somethings[1]])
|
|
53
56
|
|
|
54
57
|
expect(
|
|
55
|
-
|
|
56
|
-
|
|
58
|
+
ReadonlyArray.filterMap(
|
|
59
|
+
somethings,
|
|
60
|
+
codeFilter(
|
|
57
61
|
somethingsWhere((_) => _("b", Filters.contains("b")))
|
|
58
|
-
)
|
|
62
|
+
)
|
|
63
|
+
)
|
|
59
64
|
)
|
|
60
65
|
.toEqual([somethings[0], somethings[1]])
|
|
61
66
|
|
|
62
67
|
expect(
|
|
63
|
-
|
|
64
|
-
|
|
68
|
+
ReadonlyArray.filterMap(
|
|
69
|
+
somethings,
|
|
70
|
+
codeFilter(
|
|
65
71
|
somethingsWhere((_) => _("b", Filters.contains("2")))
|
|
66
|
-
)
|
|
72
|
+
)
|
|
73
|
+
)
|
|
67
74
|
)
|
|
68
75
|
.toEqual([somethings[1]])
|
|
69
76
|
|
|
70
77
|
expect(
|
|
71
|
-
|
|
72
|
-
|
|
78
|
+
ReadonlyArray.filterMap(
|
|
79
|
+
somethings,
|
|
80
|
+
codeFilter(
|
|
73
81
|
somethingsWhere((_) => _("b", Filters.endsWith("b")))
|
|
74
|
-
)
|
|
82
|
+
)
|
|
83
|
+
)
|
|
75
84
|
)
|
|
76
85
|
.toEqual([somethings[0]])
|
|
77
86
|
|
|
78
87
|
expect(
|
|
79
|
-
|
|
80
|
-
|
|
88
|
+
ReadonlyArray.filterMap(
|
|
89
|
+
somethings,
|
|
90
|
+
codeFilter(
|
|
81
91
|
somethingsWhere((_) => _("b", Filters.endsWith("2")))
|
|
82
|
-
)
|
|
92
|
+
)
|
|
93
|
+
)
|
|
83
94
|
)
|
|
84
95
|
.toEqual([somethings[1]])
|
|
85
96
|
|
|
86
97
|
expect(
|
|
87
|
-
|
|
88
|
-
|
|
98
|
+
ReadonlyArray.filterMap(
|
|
99
|
+
somethings,
|
|
100
|
+
codeFilter(
|
|
89
101
|
somethingsWhere((_) => _("b", Filters.startsWith("b")))
|
|
90
|
-
)
|
|
102
|
+
)
|
|
103
|
+
)
|
|
91
104
|
)
|
|
92
105
|
.toEqual([somethings[0], somethings[1]])
|
|
93
106
|
|
|
94
107
|
expect(
|
|
95
|
-
|
|
96
|
-
|
|
108
|
+
ReadonlyArray.filterMap(
|
|
109
|
+
somethings,
|
|
110
|
+
codeFilter(
|
|
97
111
|
somethingsWhere((_) => _("b", Filters.startsWith("2")))
|
|
98
|
-
)
|
|
112
|
+
)
|
|
113
|
+
)
|
|
99
114
|
)
|
|
100
115
|
.toEqual([])
|
|
101
116
|
|
|
102
117
|
expect(
|
|
103
|
-
|
|
104
|
-
|
|
118
|
+
ReadonlyArray.filterMap(
|
|
119
|
+
somethings,
|
|
120
|
+
codeFilter(
|
|
105
121
|
somethingsWhere((_) => _("b", (_) => "b"))
|
|
106
|
-
)
|
|
122
|
+
)
|
|
123
|
+
)
|
|
107
124
|
)
|
|
108
125
|
.toEqual([somethings[0]])
|
|
109
126
|
|
|
110
127
|
expect(
|
|
111
|
-
|
|
112
|
-
|
|
128
|
+
ReadonlyArray.filterMap(
|
|
129
|
+
somethings,
|
|
130
|
+
codeFilter(
|
|
113
131
|
somethingsWhere((_) => _("c", Filters.includes("c")))
|
|
114
|
-
)
|
|
132
|
+
)
|
|
133
|
+
)
|
|
115
134
|
)
|
|
116
135
|
.toEqual([somethings[0]])
|
|
117
136
|
|
|
118
137
|
expect(
|
|
119
|
-
|
|
120
|
-
|
|
138
|
+
ReadonlyArray.filterMap(
|
|
139
|
+
somethings,
|
|
140
|
+
codeFilter(
|
|
121
141
|
somethingsWhere((_) => _("d.-1.a", (_) => "a5"))
|
|
122
|
-
)
|
|
142
|
+
)
|
|
143
|
+
)
|
|
123
144
|
)
|
|
124
145
|
.toEqual([somethings[1]])
|
|
125
146
|
|
|
126
147
|
expect(
|
|
127
|
-
|
|
128
|
-
|
|
148
|
+
ReadonlyArray.filterMap(
|
|
149
|
+
somethings,
|
|
150
|
+
codeFilter(
|
|
129
151
|
somethingsWhere((_) => _("d.-1.a", (_) => "a"))
|
|
130
|
-
)
|
|
152
|
+
)
|
|
153
|
+
)
|
|
131
154
|
)
|
|
132
155
|
.toEqual([somethings[0]])
|
|
133
156
|
|
|
134
157
|
expect(
|
|
135
|
-
|
|
136
|
-
|
|
158
|
+
ReadonlyArray.filterMap(
|
|
159
|
+
somethings,
|
|
160
|
+
codeFilter(
|
|
137
161
|
somethingsWhere((_) => _("d.-1.a", Filters.isnt("a")))
|
|
138
|
-
)
|
|
162
|
+
)
|
|
163
|
+
)
|
|
139
164
|
)
|
|
140
165
|
.toEqual([somethings[1]])
|
|
141
166
|
})
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReadonlyArray } from "effect-app"
|
|
1
2
|
import { assertUnreachable, get } from "effect-app/utils"
|
|
2
3
|
import type { FilterR, FilterResult } from "./filterApi/query.js"
|
|
3
4
|
import { compare, greaterThan, greaterThanExclusive, lowerThan, lowerThanExclusive } from "./utils.js"
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { Secret } from "effect-app"
|
|
2
3
|
import { CosmosStoreLayer } from "./Cosmos.js"
|
|
3
4
|
import { DiskStoreLayer } from "./Disk.js"
|
|
4
5
|
import { MemoryStoreLive } from "./Memory.js"
|
|
5
|
-
import { RedisStoreLayer } from "./Redis.js"
|
|
6
|
+
// import { RedisStoreLayer } from "./Redis.js"
|
|
6
7
|
import type { StorageConfig } from "./service.js"
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* @tsplus static StoreMaker.Ops Layer
|
|
10
11
|
*/
|
|
11
12
|
export function StoreMakerLayer(cfg: StorageConfig) {
|
|
12
|
-
const storageUrl = cfg.url
|
|
13
|
+
const storageUrl = Secret.value(cfg.url)
|
|
13
14
|
if (storageUrl.startsWith("mem://")) {
|
|
14
15
|
console.log("Using in memory store")
|
|
15
16
|
return MemoryStoreLive
|
|
@@ -19,10 +20,10 @@ export function StoreMakerLayer(cfg: StorageConfig) {
|
|
|
19
20
|
console.log("Using disk store at " + dir)
|
|
20
21
|
return DiskStoreLayer(cfg, dir)
|
|
21
22
|
}
|
|
22
|
-
if (storageUrl.startsWith("redis://")) {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
23
|
+
// if (storageUrl.startsWith("redis://")) {
|
|
24
|
+
// console.log("Using Redis store")
|
|
25
|
+
// return RedisStoreLayer(cfg)
|
|
26
|
+
// }
|
|
26
27
|
|
|
27
28
|
console.log("Using Cosmos DB store")
|
|
28
29
|
return CosmosStoreLayer(cfg)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import type { UniqueKey } from "@azure/cosmos"
|
|
3
|
+
import { Effect } from "effect-app"
|
|
4
|
+
import type { NonEmptyReadonlyArray, Option, Secret } from "effect-app"
|
|
5
|
+
import { TagClassId, TagClassMakeId } from "effect-app/service"
|
|
3
6
|
import type { OptimisticConcurrencyException } from "../../errors.js"
|
|
4
7
|
import type { FieldValues } from "../../filter/types.js"
|
|
5
8
|
import type { QueryBuilder } from "./filterApi/query.js"
|
|
@@ -194,7 +197,7 @@ export interface PersistenceModelType<Id> extends Record<string, any> {
|
|
|
194
197
|
}
|
|
195
198
|
|
|
196
199
|
export interface StorageConfig {
|
|
197
|
-
url: Secret
|
|
200
|
+
url: Secret.Secret
|
|
198
201
|
prefix: string
|
|
199
202
|
dbName: string
|
|
200
203
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
+
import { Effect, Option, ReadonlyArray } from "effect-app"
|
|
1
2
|
import { get } from "effect-app/utils"
|
|
2
|
-
|
|
3
|
-
import { OptimisticConcurrencyException } from "../../errors.js"
|
|
4
|
-
|
|
5
|
-
import type { Filter, FilterJoinSelect, PersistenceModelType, SupportedValues2 } from "./service.js"
|
|
6
|
-
|
|
7
3
|
import objectHash from "object-hash"
|
|
4
|
+
import { OptimisticConcurrencyException } from "../../errors.js"
|
|
8
5
|
import { codeFilter3_ } from "./codeFilter.js"
|
|
6
|
+
import type { Filter, FilterJoinSelect, PersistenceModelType, SupportedValues2 } from "./service.js"
|
|
9
7
|
|
|
10
8
|
export const makeETag = <E extends PersistenceModelType<Id>, Id extends string>(
|
|
11
9
|
{ _etag, ...e }: E
|
|
@@ -18,11 +16,13 @@ export const makeUpdateETag =
|
|
|
18
16
|
Effect.gen(function*($) {
|
|
19
17
|
if (e._etag) {
|
|
20
18
|
yield* $(
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
Effect.mapError(
|
|
20
|
+
current,
|
|
21
|
+
() => new OptimisticConcurrencyException({ type, id: e.id, current: "", found: e._etag })
|
|
22
|
+
)
|
|
23
23
|
)
|
|
24
24
|
}
|
|
25
|
-
if (
|
|
25
|
+
if (Option.isSome(current) && current.value._etag !== e._etag) {
|
|
26
26
|
return yield* $(
|
|
27
27
|
new OptimisticConcurrencyException({
|
|
28
28
|
type,
|
|
@@ -167,22 +167,24 @@ export function codeFilterJoinSelect<E extends { id: string }, NE>(
|
|
|
167
167
|
filter: FilterJoinSelect
|
|
168
168
|
) {
|
|
169
169
|
return (x: E) =>
|
|
170
|
-
|
|
171
|
-
.
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
170
|
+
ReadonlyArray
|
|
171
|
+
.filterMap(
|
|
172
|
+
filter
|
|
173
|
+
.keys,
|
|
174
|
+
(k) => {
|
|
175
|
+
const value = get(x, k)
|
|
176
|
+
// we mimic the behavior of cosmosdb; if the shape in db does not match what we're looking for, we imagine false hit
|
|
177
|
+
return value
|
|
178
|
+
? Option.some(
|
|
179
|
+
ReadonlyArray.filterMap(value as readonly NE[], (v) =>
|
|
180
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
181
|
+
compare((v as any)[filter.valueKey], filter.value)
|
|
182
|
+
? Option.some({ ...v, _rootId: x.id })
|
|
183
|
+
: Option.none())
|
|
182
184
|
)
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
185
|
+
: Option.none()
|
|
186
|
+
}
|
|
187
|
+
)
|
|
186
188
|
.flatMap((_) => _)
|
|
187
189
|
}
|
|
188
190
|
|
package/src/services/query.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { toNonEmptyArray } from "@effect-app/core/Array"
|
|
2
3
|
import type { FieldValues } from "@effect-app/infra/filter/types"
|
|
3
4
|
import type { FieldPath, FieldPathValue } from "@effect-app/infra/filter/types/path/eager"
|
|
4
5
|
import type { Repository } from "@effect-app/infra/services/Repository"
|
|
5
6
|
import type { PersistenceModelType } from "@effect-app/infra/services/Store"
|
|
6
7
|
import type { Ops } from "@effect-app/infra/services/Store/filterApi/proxy"
|
|
7
8
|
import type { FilterResult, QueryBuilder } from "@effect-app/infra/services/Store/filterApi/query"
|
|
8
|
-
import { Data, Effect, Match, pipe, S, Unify } from "effect-app"
|
|
9
|
+
import { Data, Effect, Match, Option, pipe, S, Unify } from "effect-app"
|
|
9
10
|
import type { NoInfer } from "effect/Types"
|
|
10
11
|
|
|
11
12
|
export type QAll<TFieldValues extends FieldValues, A = TFieldValues, R = never> =
|
|
@@ -441,7 +442,7 @@ export const query: {
|
|
|
441
442
|
: repo.utils.filter({
|
|
442
443
|
limit: a.limit,
|
|
443
444
|
skip: a.skip,
|
|
444
|
-
select: select
|
|
445
|
+
select: Option.getOrUndefined(toNonEmptyArray(select)),
|
|
445
446
|
filter: a.filter.length
|
|
446
447
|
? {
|
|
447
448
|
type: "new-kid" as const,
|
|
@@ -2,6 +2,7 @@ import type { IndexingPolicy } from "@azure/cosmos"
|
|
|
2
2
|
import { typedKeysOf } from "@effect-app/core/utils"
|
|
3
3
|
|
|
4
4
|
import * as Cosmos from "@effect-app/infra-adapters/cosmos-client"
|
|
5
|
+
import { Data, Effect, Option } from "effect-app"
|
|
5
6
|
import type { CachedRecord, DBRecord } from "./shared.js"
|
|
6
7
|
import { OptimisticLockException } from "./shared.js"
|
|
7
8
|
import * as simpledb from "./simpledb.js"
|
|
@@ -4,6 +4,7 @@ import * as PLF from "proper-lockfile"
|
|
|
4
4
|
|
|
5
5
|
import { pretty } from "@effect-app/core/utils"
|
|
6
6
|
import * as fu from "@effect-app/infra-adapters/fileUtil"
|
|
7
|
+
import { Effect, Option } from "effect-app"
|
|
7
8
|
import type { CachedRecord, DBRecord, Index } from "./shared.js"
|
|
8
9
|
import { ConnectionException, CouldNotAquireDbLockException, getIndexName, getRecordName } from "./shared.js"
|
|
9
10
|
import * as simpledb from "./simpledb.js"
|
|
@@ -147,7 +148,7 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
147
148
|
}
|
|
148
149
|
|
|
149
150
|
function lockFile(fileName: string) {
|
|
150
|
-
return Effect.tryPromise(() => PLF.lock(fileName).then(flow(Effect.tryPromise,
|
|
151
|
+
return Effect.tryPromise(() => PLF.lock(fileName).then(flow(Effect.tryPromise, Effect.orDie)))
|
|
151
152
|
}
|
|
152
153
|
|
|
153
154
|
// TODO: ugh.
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { flow } from "@effect-app/core/Function"
|
|
2
2
|
|
|
3
|
+
import { Effect, Option } from "effect-app"
|
|
4
|
+
import type { Equivalence } from "effect-app"
|
|
3
5
|
import type { CachedRecord, DBRecord } from "./shared.js"
|
|
4
6
|
import { getRecordName, makeMap, SerializedDBRecord } from "./shared.js"
|
|
5
7
|
import * as simpledb from "./simpledb.js"
|
|
6
8
|
import type { Version } from "./simpledb.js"
|
|
7
|
-
|
|
8
9
|
// When we are in-process, we want to share the same Storage
|
|
9
10
|
// Do not try this at home.
|
|
10
11
|
const storage = makeMap<string, string>()
|
|
11
12
|
|
|
12
|
-
const parseSDB =
|
|
13
|
+
const parseSDB = S.decodeUnknown(SerializedDBRecord)
|
|
13
14
|
|
|
14
15
|
export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>() {
|
|
15
16
|
return <REncode, RDecode, EDecode>(
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MongoClient } from "@effect-app/infra-adapters/mongo-client"
|
|
2
|
+
import { Effect, Option } from "effect-app"
|
|
2
3
|
import type { IndexDescription, InsertOneOptions } from "mongodb"
|
|
3
4
|
import type { CachedRecord, DBRecord } from "./shared.js"
|
|
4
5
|
import { OptimisticLockException } from "./shared.js"
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { flow } from "@effect-app/core/Function"
|
|
4
4
|
import { RedisClient } from "@effect-app/infra-adapters/redis-client"
|
|
5
|
+
import { Effect } from "effect-app"
|
|
6
|
+
import type { Option } from "effect-app"
|
|
5
7
|
import * as S from "effect-app/schema"
|
|
6
8
|
import type { Lock } from "redlock"
|
|
7
9
|
import type { CachedRecord, DBRecord, Index } from "./shared.js"
|
|
@@ -26,8 +28,8 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
function find(id: string) {
|
|
29
|
-
return
|
|
30
|
-
.flatMap((_) => _.hmgetAll(getKey(id)))
|
|
31
|
+
return Effect
|
|
32
|
+
.flatMap(RedisClient, (_) => _.hmgetAll(getKey(id)))
|
|
31
33
|
.flatMapOpt((v) =>
|
|
32
34
|
RedisSerializedDBRecord
|
|
33
35
|
.decodeUnknown(v)
|
|
@@ -103,18 +105,21 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
103
105
|
}
|
|
104
106
|
|
|
105
107
|
function getIdx(index: Index) {
|
|
106
|
-
return
|
|
108
|
+
return Effect.flatMap(RedisClient, (_) => _.hget(getIdxKey(index), index.key).map((_) => _.map((i) => i as TKey)))
|
|
107
109
|
}
|
|
108
110
|
|
|
109
111
|
function setIdx(index: Index, r: A) {
|
|
110
|
-
return
|
|
112
|
+
return Effect.flatMap(RedisClient, (_) => _.hset(getIdxKey(index), index.key, r.id))
|
|
111
113
|
}
|
|
112
114
|
|
|
113
115
|
function lockRedisIdx(index: Index) {
|
|
114
116
|
const lockKey = getIdxLockKey(index)
|
|
115
117
|
// acquire
|
|
116
|
-
return
|
|
117
|
-
.flatMap(
|
|
118
|
+
return Effect
|
|
119
|
+
.flatMap(
|
|
120
|
+
RedisClient,
|
|
121
|
+
({ lock }) => Effect.tryPromise(() => lock.lock(lockKey, ttl) as unknown as Promise<Lock>)
|
|
122
|
+
)
|
|
118
123
|
.mapBoth({
|
|
119
124
|
onFailure: (err) => new CouldNotAquireDbLockException(type, lockKey, err as Error),
|
|
120
125
|
// release
|
|
@@ -131,12 +136,11 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
131
136
|
|
|
132
137
|
function lockRedisRecord(id: string) {
|
|
133
138
|
// acquire
|
|
134
|
-
return
|
|
135
|
-
.flatMap(({ lock }) =>
|
|
139
|
+
return Effect
|
|
140
|
+
.flatMap(RedisClient, ({ lock }) =>
|
|
136
141
|
Effect.tryPromise(
|
|
137
142
|
() => lock.lock(getLockKey(id), ttl) as unknown as Promise<Lock>
|
|
138
|
-
)
|
|
139
|
-
)
|
|
143
|
+
))
|
|
140
144
|
.mapBoth({
|
|
141
145
|
onFailure: (err) => new CouldNotAquireDbLockException(type, id, err as Error),
|
|
142
146
|
// release
|
|
@@ -169,8 +173,8 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
169
173
|
}
|
|
170
174
|
|
|
171
175
|
function hmSetRec(key: string, val: RedisSerializedDBRecord) {
|
|
172
|
-
const enc =
|
|
173
|
-
return
|
|
176
|
+
const enc = S.encodeSync(RedisSerializedDBRecord)(val)
|
|
177
|
+
return Effect.flatMap(RedisClient, ({ client }) =>
|
|
174
178
|
Effect
|
|
175
179
|
.async<void, ConnectionException>((res) => {
|
|
176
180
|
client.hmset(
|
|
@@ -187,8 +191,7 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
187
191
|
: res(Effect.sync(() => void 0))
|
|
188
192
|
)
|
|
189
193
|
})
|
|
190
|
-
.uninterruptible
|
|
191
|
-
)
|
|
194
|
+
.uninterruptible)
|
|
192
195
|
}
|
|
193
196
|
}
|
|
194
197
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Data, Effect, Option } from "effect-app"
|
|
1
2
|
import * as S from "effect-app/schema"
|
|
2
3
|
|
|
3
4
|
export class CouldNotAquireDbLockException
|
|
@@ -35,7 +36,7 @@ export class SerializedDBRecord extends S.Class<SerializedDBRecord>()({
|
|
|
35
36
|
|
|
36
37
|
// unknown -> string -> SDB?
|
|
37
38
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
-
export function makeSerialisedDBRecord(s: Schema<any>) {
|
|
39
|
+
export function makeSerialisedDBRecord(s: S.Schema<any>) {
|
|
39
40
|
return S.struct({
|
|
40
41
|
version: S.number,
|
|
41
42
|
timestamp: S.Date,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Scope } from "effect-app"
|
|
2
|
+
import { Context, Effect, Option, Unify } from "effect-app"
|
|
1
3
|
import type { CachedRecord, DBRecord, EffectMap } from "./shared.js"
|
|
2
4
|
import { makeMap, OptimisticLockException } from "./shared.js"
|
|
3
5
|
|
|
@@ -26,7 +28,7 @@ export function makeLiveRecordCache() {
|
|
|
26
28
|
export interface RecordCache extends ReturnType<typeof makeLiveRecordCache> {}
|
|
27
29
|
|
|
28
30
|
// module tag
|
|
29
|
-
export const RecordCache = GenericTag<RecordCache>("@services/RecordCache")
|
|
31
|
+
export const RecordCache = Context.GenericTag<RecordCache>("@services/RecordCache")
|
|
30
32
|
|
|
31
33
|
export const LiveRecordCache = Effect.sync(() => makeLiveRecordCache()).toLayer(RecordCache)
|
|
32
34
|
|
|
@@ -90,7 +92,9 @@ export function store<R, E, R2, E2, TKey extends string, EA, A extends DBRecord<
|
|
|
90
92
|
c
|
|
91
93
|
.find(record.id)
|
|
92
94
|
.mapOpt((x) => x.version)
|
|
93
|
-
.flatMap((_) =>
|
|
95
|
+
.flatMap((_) =>
|
|
96
|
+
Unify.unify(_.match({ onNone: () => save(record, Option.none()), onSome: confirmVersionAndSave(record) }))
|
|
97
|
+
)
|
|
94
98
|
.tap((r) => c.set(record.id, r))
|
|
95
99
|
.map((r) => r.data)
|
|
96
100
|
)
|
package/tsconfig.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"noUncheckedIndexedAccess": true,
|
|
12
12
|
"noUnusedLocals": true,
|
|
13
13
|
"noUnusedParameters": true,
|
|
14
|
-
"
|
|
14
|
+
"isolatedModules": true,
|
|
15
15
|
"checkJs": true,
|
|
16
16
|
"esModuleInterop": true,
|
|
17
17
|
"skipLibCheck": true,
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"lib": [
|
|
21
21
|
"esnext"
|
|
22
22
|
],
|
|
23
|
+
"baseUrl": "./",
|
|
23
24
|
"target": "es2022",
|
|
24
25
|
"inlineSourceMap": true,
|
|
25
26
|
"incremental": true,
|
|
@@ -36,35 +37,17 @@
|
|
|
36
37
|
"downlevelIteration": true,
|
|
37
38
|
"noErrorTruncation": true,
|
|
38
39
|
"ignoreDeprecations": "5.0",
|
|
39
|
-
"tsPlusTypes": [
|
|
40
|
-
"./node_modules/@effect-app/core/vendor/effect-data-tsplus.json",
|
|
41
|
-
"./node_modules/@effect-app/core/vendor/effect-io-tsplus.json",
|
|
42
|
-
"./node_modules/@effect-app/core/vendor/effect-match-tsplus.json",
|
|
43
|
-
"./node_modules/@effect-app/core/vendor/effect-stm-tsplus.json",
|
|
44
|
-
"./node_modules/@effect-app/core/vendor/effect-stream-tsplus.json",
|
|
45
|
-
"./node_modules/@effect-app/core/vendor/fp-ts-optic-tsplus.json",
|
|
46
|
-
"./node_modules/@effect-app/core/vendor/effect-schema-tsplus.json",
|
|
47
|
-
"./node_modules/@effect-app/core/vendor/effect-platform-tsplus.json"
|
|
48
|
-
],
|
|
49
|
-
"plugins": [
|
|
50
|
-
{
|
|
51
|
-
"name": "@effect/language-service",
|
|
52
|
-
"diagnostics": {
|
|
53
|
-
"1002": "none"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
],
|
|
57
40
|
"types": [
|
|
58
41
|
"vitest/globals",
|
|
59
42
|
"./types/modules"
|
|
60
43
|
],
|
|
61
|
-
"tsPlusConfig": "./tsplus.config.json",
|
|
62
44
|
"rootDir": "./src",
|
|
63
45
|
"tsBuildInfoFile": "./dist/.tsbuildinfo",
|
|
64
|
-
"
|
|
46
|
+
"importsNotUsedAsValues": "preserve"
|
|
65
47
|
},
|
|
66
48
|
"$schema": "https://json.schemastore.org/tsconfig",
|
|
67
49
|
"display": "Strictest",
|
|
50
|
+
"_version": "2.0.0",
|
|
68
51
|
"watchOptions": {
|
|
69
52
|
"watchFile": "useFsEvents",
|
|
70
53
|
"watchDirectory": "useFsEvents",
|
package/tsconfig.json.bak
CHANGED
package/_cjs/_global.cjs
DELETED
package/_cjs/_global.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_global.cjs","names":["require"],"sources":["../src/_global.ts"],"sourcesContent":[null],"mappings":";;AAMAA,OAAA;AAKAA,OAAA;AAEAA,OAAA"}
|
package/_cjs/_global.ext.cjs
DELETED
package/_cjs/_global.ext.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_global.ext.cjs","names":["require"],"sources":["../src/_global.ext.ts"],"sourcesContent":[null],"mappings":";;AAiBAA,OAAA;AAkBAA,OAAA"}
|
package/_cjs/_global.schema.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_global.schema.cjs","names":["require"],"sources":["../src/_global.schema.ts"],"sourcesContent":[null],"mappings":";;AAOAA,OAAA;AAEAA,OAAA"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.defaultBasicErrorHandler = defaultBasicErrorHandler;
|
|
7
|
-
exports.defaultErrorHandler = defaultErrorHandler;
|
|
8
|
-
var tsplus_module_1 = _interopRequireWildcard(require("effect/Effect"));
|
|
9
|
-
var tsplus_module_2 = _interopRequireWildcard(require("effect/Cause"));
|
|
10
|
-
var tsplus_module_3 = _interopRequireWildcard(require("effect/Schedule"));
|
|
11
|
-
var _errorReporter = require("../errorReporter.cjs");
|
|
12
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
|
-
const logRequestError = (0, _errorReporter.logError)("Request");
|
|
15
|
-
function defaultBasicErrorHandler(_req, res, r2) {
|
|
16
|
-
const sendError = code => body => tsplus_module_1.sync(() => res.status(code).send(body));
|
|
17
|
-
return tsplus_module_1.catchAll(tsplus_module_1.catchTag(tsplus_module_1.tapErrorCause(r2, cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_1.unit), "ValidationError", err => sendError(400)(err.errors))
|
|
18
|
-
// final catch all; expecting never so that unhandled known errors will show up
|
|
19
|
-
, err => tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err).map(() => err).flatMap(tsplus_module_1.die));
|
|
20
|
-
}
|
|
21
|
-
const optimisticConcurrencySchedule = tsplus_module_3.once && tsplus_module_3.recurWhile(a => a._tag === "OptimisticConcurrencyException");
|
|
22
|
-
function defaultErrorHandler(req, res, r2) {
|
|
23
|
-
const r3 = req.method === "PATCH" ? tsplus_module_1.retry(r2, optimisticConcurrencySchedule) : r2;
|
|
24
|
-
const sendError = code => body => tsplus_module_1.sync(() => res.status(code).send(body));
|
|
25
|
-
return tsplus_module_1.catchAll(tsplus_module_1.catchTags(tsplus_module_1.tapErrorCause(r3, cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_1.unit), {
|
|
26
|
-
"ValidationError": err => sendError(400)(err.errors),
|
|
27
|
-
"NotFoundError": sendError(404),
|
|
28
|
-
"NotLoggedInError": sendError(401),
|
|
29
|
-
"UnauthorizedError": sendError(403),
|
|
30
|
-
"InvalidStateError": sendError(422),
|
|
31
|
-
// 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
|
|
32
|
-
"OptimisticConcurrencyException": sendError(412)
|
|
33
|
-
})
|
|
34
|
-
// final catch all; expecting never so that unhandled known errors will show up
|
|
35
|
-
, err => tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err).map(() => err).flatMap(tsplus_module_1.die));
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=defaultErrorHandler.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaultErrorHandler.cjs","names":["_errorReporter","require","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","logRequestError","logError","defaultBasicErrorHandler","_req","res","r2","sendError","code","body","tsplus_module_1","sync","status","send","catchAll","catchTag","tapErrorCause","cause","tsplus_module_2","isFailure","unit","err","errors","map","flatMap","die","optimisticConcurrencySchedule","tsplus_module_3","once","recurWhile","_tag","defaultErrorHandler","req","r3","method","retry","catchTags"],"sources":["../../src/api/defaultErrorHandler.ts"],"sourcesContent":[null],"mappings":"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"}
|