@effect-app/infra 0.198.1 → 0.199.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -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 +171 -169
- 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 -2
- 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 +8 -10
- 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 +41 -47
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +182 -194
- 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 -4
- 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 +12 -8
- package/src/services/Repository/ext.ts +52 -44
- package/src/services/RepositoryBase.ts +278 -240
- 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 -3
- 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> =
|
|
@@ -367,7 +368,6 @@ const interpret = <TFieldValues extends FieldValues, A = TFieldValues, R = never
|
|
|
367
368
|
},
|
|
368
369
|
order: ({ current }) => {
|
|
369
370
|
upd(interpret(current))
|
|
370
|
-
console.log("missing order implementation")
|
|
371
371
|
},
|
|
372
372
|
page: (v) => {
|
|
373
373
|
upd(interpret(v.current))
|
|
@@ -442,7 +442,7 @@ export const query: {
|
|
|
442
442
|
: repo.utils.filter({
|
|
443
443
|
limit: a.limit,
|
|
444
444
|
skip: a.skip,
|
|
445
|
-
select: select
|
|
445
|
+
select: Option.getOrUndefined(toNonEmptyArray(select)),
|
|
446
446
|
filter: a.filter.length
|
|
447
447
|
? {
|
|
448
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
|