effect-app 4.0.0-beta.99 → 4.0.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 +2042 -0
- package/dist/Array.d.ts +1 -17
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +3 -27
- package/dist/Chunk.d.ts +3 -27
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Chunk.js +4 -39
- package/dist/Config/SecretURL.d.ts +3 -1
- package/dist/Config/SecretURL.d.ts.map +1 -1
- package/dist/Config/SecretURL.js +3 -6
- package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
- package/dist/Config/internal/configSecretURL.js +2 -2
- package/dist/Config.d.ts +0 -5
- package/dist/Config.d.ts.map +1 -1
- package/dist/Config.js +7 -5
- package/dist/ConfigProvider.d.ts +0 -37
- package/dist/ConfigProvider.d.ts.map +1 -1
- package/dist/ConfigProvider.js +5 -41
- package/dist/Context.d.ts +6 -4
- package/dist/Context.d.ts.map +1 -1
- package/dist/Context.js +4 -3
- package/dist/DataDependencies.d.ts +136 -0
- package/dist/DataDependencies.d.ts.map +1 -0
- package/dist/DataDependencies.js +112 -0
- package/dist/DateTime.d.ts +33 -0
- package/dist/DateTime.d.ts.map +1 -0
- package/dist/DateTime.js +18 -0
- package/dist/Effect.d.ts +3 -14
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +8 -26
- package/dist/Emailer.d.ts +51 -0
- package/dist/Emailer.d.ts.map +1 -0
- package/dist/Emailer.js +7 -0
- package/dist/Function.d.ts +0 -4
- package/dist/Function.d.ts.map +1 -1
- package/dist/Function.js +1 -7
- package/dist/Layer.d.ts +6 -3
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +3 -2
- package/dist/Model/Repository/Registry.d.ts +22 -0
- package/dist/Model/Repository/Registry.d.ts.map +1 -0
- package/dist/Model/Repository/Registry.js +18 -0
- package/dist/Model/Repository/dependency.d.ts +6 -0
- package/dist/Model/Repository/dependency.d.ts.map +1 -0
- package/dist/Model/Repository/dependency.js +29 -0
- package/dist/Model/Repository/ext.d.ts +60 -0
- package/dist/Model/Repository/ext.d.ts.map +1 -0
- package/dist/Model/Repository/ext.js +124 -0
- package/dist/Model/Repository/internal/internal.d.ts +68 -0
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -0
- package/dist/Model/Repository/internal/internal.js +610 -0
- package/dist/Model/Repository/legacy.d.ts +21 -0
- package/dist/Model/Repository/legacy.d.ts.map +1 -0
- package/dist/Model/Repository/legacy.js +2 -0
- package/dist/Model/Repository/makeRepo.d.ts +71 -0
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -0
- package/dist/Model/Repository/makeRepo.js +30 -0
- package/dist/Model/Repository/service.d.ts +121 -0
- package/dist/Model/Repository/service.d.ts.map +1 -0
- package/dist/Model/Repository/service.js +2 -0
- package/dist/Model/Repository/validation.d.ts +72 -0
- package/dist/Model/Repository/validation.d.ts.map +1 -0
- package/dist/Model/Repository/validation.js +39 -0
- package/dist/Model/Repository.d.ts +8 -0
- package/dist/Model/Repository.d.ts.map +1 -0
- package/dist/Model/Repository.js +8 -0
- package/dist/Model/dsl.d.ts +34 -0
- package/dist/Model/dsl.d.ts.map +1 -0
- package/dist/Model/dsl.js +45 -0
- package/dist/Model/filter/filterApi.d.ts +30 -0
- package/dist/Model/filter/filterApi.d.ts.map +1 -0
- package/dist/Model/filter/filterApi.js +2 -0
- package/dist/Model/filter/types/errors.d.ts +29 -0
- package/dist/Model/filter/types/errors.d.ts.map +1 -0
- package/dist/Model/filter/types/errors.js +2 -0
- package/dist/Model/filter/types/fields.d.ts +15 -0
- package/dist/Model/filter/types/fields.d.ts.map +1 -0
- package/dist/Model/filter/types/fields.js +2 -0
- package/dist/Model/filter/types/path/common.d.ts +316 -0
- package/dist/Model/filter/types/path/common.d.ts.map +1 -0
- package/dist/Model/filter/types/path/common.js +2 -0
- package/dist/Model/filter/types/path/eager.d.ts +94 -0
- package/dist/Model/filter/types/path/eager.d.ts.map +1 -0
- package/dist/Model/filter/types/path/eager.js +36 -0
- package/dist/Model/filter/types/path/index.d.ts +4 -0
- package/dist/Model/filter/types/path/index.d.ts.map +1 -0
- package/dist/Model/filter/types/path/index.js +3 -0
- package/dist/Model/filter/types/utils.d.ts +79 -0
- package/dist/Model/filter/types/utils.d.ts.map +1 -0
- package/dist/Model/filter/types/utils.js +2 -0
- package/dist/Model/filter/types/validator.d.ts +30 -0
- package/dist/Model/filter/types/validator.d.ts.map +1 -0
- package/dist/Model/filter/types/validator.js +2 -0
- package/dist/Model/filter/types.d.ts +5 -0
- package/dist/Model/filter/types.d.ts.map +1 -0
- package/dist/Model/filter/types.js +7 -0
- package/dist/Model/query/dsl.d.ts +630 -0
- package/dist/Model/query/dsl.d.ts.map +1 -0
- package/dist/Model/query/dsl.js +376 -0
- package/dist/Model/query/new-kid-interpreter.d.ts +132 -0
- package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -0
- package/dist/Model/query/new-kid-interpreter.js +369 -0
- package/dist/Model/query.d.ts +15 -0
- package/dist/Model/query.d.ts.map +1 -0
- package/dist/Model/query.js +3 -0
- package/dist/Model.d.ts +6 -0
- package/dist/Model.d.ts.map +1 -0
- package/dist/Model.js +6 -0
- package/dist/NonEmptySet.d.ts +3 -1
- package/dist/NonEmptySet.d.ts.map +1 -1
- package/dist/NonEmptySet.js +2 -2
- package/dist/Option.d.ts +1 -2
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +3 -7
- package/dist/Pure.d.ts +9 -7
- package/dist/Pure.d.ts.map +1 -1
- package/dist/Pure.js +20 -17
- package/dist/QueueMaker.d.ts +11 -0
- package/dist/QueueMaker.d.ts.map +1 -0
- package/dist/QueueMaker.js +11 -0
- package/dist/RequestContext.d.ts +87 -0
- package/dist/RequestContext.d.ts.map +1 -0
- package/dist/RequestContext.js +45 -0
- package/dist/RequestScopedDependencies.d.ts +21 -0
- package/dist/RequestScopedDependencies.d.ts.map +1 -0
- package/dist/RequestScopedDependencies.js +16 -0
- package/dist/Schema/Class.d.ts +163 -16
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +193 -21
- package/dist/Schema/FastCheck.d.ts.map +1 -1
- package/dist/Schema/SchemaParser.d.ts +5 -0
- package/dist/Schema/SchemaParser.d.ts.map +1 -0
- package/dist/Schema/SchemaParser.js +6 -0
- package/dist/Schema/SpecialJsonSchema.d.ts +15 -2
- package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -1
- package/dist/Schema/SpecialJsonSchema.js +70 -12
- package/dist/Schema/SpecialOpenApi.d.ts +1 -1
- package/dist/Schema/SpecialOpenApi.js +3 -3
- package/dist/Schema/brand.d.ts +5 -5
- package/dist/Schema/brand.d.ts.map +1 -1
- package/dist/Schema/brand.js +6 -4
- package/dist/Schema/email.d.ts.map +1 -1
- package/dist/Schema/email.js +8 -5
- package/dist/Schema/ext.d.ts +279 -75
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +330 -72
- package/dist/Schema/moreStrings.d.ts +82 -48
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/moreStrings.js +85 -51
- package/dist/Schema/numbers.d.ts +33 -21
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/numbers.js +64 -12
- package/dist/Schema/phoneNumber.d.ts.map +1 -1
- package/dist/Schema/phoneNumber.js +6 -6
- package/dist/Schema/schema.d.ts +1 -1
- package/dist/Schema/schema.d.ts.map +1 -1
- package/dist/Schema/schema.js +2 -2
- package/dist/Schema/strings.d.ts +18 -4
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/Schema/strings.js +1 -5
- package/dist/Schema.d.ts +224 -7
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +190 -24
- package/dist/SchemaAST.d.ts +2 -0
- package/dist/SchemaAST.d.ts.map +1 -0
- package/dist/SchemaAST.js +2 -0
- package/dist/Set.d.ts +4 -1
- package/dist/Set.d.ts.map +1 -1
- package/dist/Set.js +8 -6
- package/dist/Store.d.ts +215 -0
- package/dist/Store.d.ts.map +1 -0
- package/dist/Store.js +113 -0
- package/dist/_ext/Array.d.ts +1 -1
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +4 -2
- package/dist/_ext/ord.ext.d.ts +2 -1
- package/dist/_ext/ord.ext.d.ts.map +1 -1
- package/dist/_ext/ord.ext.js +2 -2
- package/dist/builtin.d.ts +2 -14
- package/dist/builtin.d.ts.map +1 -1
- package/dist/builtin.js +1 -1
- package/dist/client/InvalidationKeys.d.ts +30 -0
- package/dist/client/InvalidationKeys.d.ts.map +1 -0
- package/dist/client/InvalidationKeys.js +37 -0
- package/dist/client/apiClientFactory.d.ts +13 -8
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +154 -34
- package/dist/client/clientFor.d.ts +48 -13
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/clientFor.js +9 -1
- package/dist/client/errors.d.ts +74 -28
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +41 -10
- package/dist/client/makeClient.d.ts +487 -32
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +47 -21
- package/dist/client.d.ts +2 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +3 -1
- package/dist/faker.d.ts.map +1 -1
- package/dist/http/Request.d.ts +2 -2
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +2 -2
- package/dist/http/internal/lib.d.ts +12 -12
- package/dist/http/internal/lib.d.ts.map +1 -1
- package/dist/http/internal/lib.js +13 -13
- package/dist/ids.d.ts +32 -14
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +38 -7
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/middleware.d.ts +12 -6
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +13 -7
- package/dist/migration/nativeEffect.d.ts +21 -0
- package/dist/migration/nativeEffect.d.ts.map +1 -0
- package/dist/migration/nativeEffect.js +598 -0
- package/dist/rpc/Invalidation.d.ts +1124 -0
- package/dist/rpc/Invalidation.d.ts.map +1 -0
- package/dist/rpc/Invalidation.js +178 -0
- package/dist/rpc/MiddlewareMaker.d.ts +10 -7
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +57 -37
- package/dist/rpc/RpcContextMap.d.ts +2 -2
- package/dist/rpc/RpcContextMap.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.d.ts +13 -10
- package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.js +2 -2
- package/dist/rpc.d.ts +1 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -2
- package/dist/runtime.d.ts +19 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +40 -0
- package/dist/setupRequest.d.ts +20 -0
- package/dist/setupRequest.d.ts.map +1 -0
- package/dist/setupRequest.js +72 -0
- package/dist/toast.d.ts +51 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +34 -0
- package/dist/transform.d.ts +1 -1
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +4 -5
- package/dist/utils/effectify.d.ts +1 -1
- package/dist/utils/effectify.d.ts.map +1 -1
- package/dist/utils/effectify.js +2 -2
- package/dist/utils/extend.d.ts +6 -1
- package/dist/utils/extend.d.ts.map +1 -1
- package/dist/utils/extend.js +24 -6
- package/dist/utils/gen.d.ts +4 -4
- package/dist/utils/gen.d.ts.map +1 -1
- package/dist/utils/logLevel.d.ts +2 -2
- package/dist/utils/logLevel.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +2 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +2 -2
- package/dist/utils.d.ts +34 -45
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +33 -49
- package/dist/validation/validators.d.ts.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/withToast.d.ts +30 -0
- package/dist/withToast.d.ts.map +1 -0
- package/dist/withToast.js +64 -0
- package/package.json +25 -266
- package/src/Array.ts +7 -39
- package/src/Chunk.ts +6 -55
- package/src/Config/SecretURL.ts +6 -3
- package/src/Config/internal/configSecretURL.ts +2 -2
- package/src/Config.ts +6 -13
- package/src/ConfigProvider.ts +4 -47
- package/src/Context.ts +9 -8
- package/src/DataDependencies.ts +171 -0
- package/src/DateTime.ts +473 -0
- package/src/Effect.ts +10 -32
- package/src/Emailer.ts +51 -0
- package/src/Function.ts +0 -7
- package/src/Inputify.type.ts +1 -1
- package/src/Layer.ts +8 -5
- package/src/Model/Repository/Registry.ts +35 -0
- package/src/Model/Repository/dependency.ts +32 -0
- package/src/Model/Repository/ext.ts +374 -0
- package/src/Model/Repository/internal/internal.ts +987 -0
- package/src/Model/Repository/legacy.ts +29 -0
- package/src/Model/Repository/makeRepo.ts +168 -0
- package/src/Model/Repository/service.ts +676 -0
- package/src/Model/Repository/validation.ts +38 -0
- package/src/Model/Repository.ts +7 -0
- package/src/Model/dsl.ts +130 -0
- package/src/Model/filter/filterApi.ts +78 -0
- package/src/Model/filter/types/errors.ts +47 -0
- package/src/Model/filter/types/fields.ts +50 -0
- package/src/Model/filter/types/path/common.ts +404 -0
- package/src/Model/filter/types/path/eager.ts +329 -0
- package/src/Model/filter/types/path/index.ts +4 -0
- package/src/Model/filter/types/utils.ts +128 -0
- package/src/Model/filter/types/validator.ts +46 -0
- package/src/Model/filter/types.ts +6 -0
- package/src/Model/query/dsl.ts +3092 -0
- package/src/Model/query/new-kid-interpreter.ts +531 -0
- package/src/Model/query.ts +13 -0
- package/src/Model.ts +5 -0
- package/src/NonEmptySet.ts +6 -4
- package/src/Option.ts +3 -8
- package/src/Pure.ts +20 -17
- package/src/QueueMaker.ts +11 -0
- package/src/RequestContext.ts +48 -0
- package/src/RequestScopedDependencies.ts +45 -0
- package/src/Schema/Class.ts +550 -56
- package/src/Schema/SchemaParser.ts +12 -0
- package/src/Schema/SpecialJsonSchema.ts +75 -7
- package/src/Schema/SpecialOpenApi.ts +5 -5
- package/src/Schema/brand.ts +27 -12
- package/src/Schema/email.ts +9 -7
- package/src/Schema/ext.ts +405 -95
- package/src/Schema/moreStrings.ts +213 -88
- package/src/Schema/numbers.ts +107 -29
- package/src/Schema/phoneNumber.ts +8 -9
- package/src/Schema/schema.ts +1 -1
- package/src/Schema/strings.ts +23 -14
- package/src/Schema.ts +403 -46
- package/src/SchemaAST.ts +1 -0
- package/src/Set.ts +10 -5
- package/src/Store.ts +325 -0
- package/src/_ext/Array.ts +4 -2
- package/src/_ext/ord.ext.ts +2 -1
- package/src/builtin-json.d.ts +24 -0
- package/src/builtin.ts +16 -21
- package/src/client/InvalidationKeys.ts +55 -0
- package/src/client/apiClientFactory.ts +295 -129
- package/src/client/clientFor.ts +101 -33
- package/src/client/errors.ts +66 -20
- package/src/client/makeClient.ts +519 -60
- package/src/client.ts +6 -4
- package/src/http/Request.ts +4 -4
- package/src/http/internal/lib.ts +12 -12
- package/src/http.ts +1 -1
- package/src/ids.ts +45 -8
- package/src/index.ts +20 -16
- package/src/middleware.ts +12 -8
- package/src/migration/nativeEffect.ts +645 -0
- package/src/rpc/Invalidation.ts +278 -0
- package/src/rpc/MiddlewareMaker.ts +86 -79
- package/src/rpc/README.md +2 -2
- package/src/rpc/RpcContextMap.ts +4 -4
- package/src/rpc/RpcMiddleware.ts +18 -13
- package/src/rpc.ts +4 -4
- package/src/runtime.ts +57 -0
- package/src/setupRequest.ts +138 -0
- package/src/toast.ts +54 -0
- package/src/transform.ts +4 -4
- package/src/utils/effectify.ts +1 -1
- package/src/utils/extend.ts +24 -5
- package/src/utils/gen.ts +7 -7
- package/src/utils/logLevel.ts +1 -1
- package/src/utils/logger.ts +3 -2
- package/src/utils.ts +85 -175
- package/src/validation.ts +2 -2
- package/src/withToast.ts +133 -0
- package/test/dateTimeLocal.test.ts +55 -0
- package/test/dist/dateTimeLocal.test.d.ts.map +1 -0
- package/test/dist/nativeEffectMigration.test.d.ts.map +1 -0
- package/test/dist/rpc.test.d.ts.map +1 -1
- package/test/dist/rpcMiddlewareContext.test.d.ts.map +1 -0
- package/test/moreStrings.test.ts +55 -10
- package/test/nativeEffectMigration.test.ts +77 -0
- package/test/rpc.test.ts +28 -11
- package/test/rpcMiddlewareContext.test.ts +63 -0
- package/test/schema.test.ts +318 -55
- package/test/secretURL.test.ts +4 -1
- package/test/special.test.ts +663 -131
- package/test/utils.test.ts +5 -5
- package/tsconfig.base.json +6 -4
- package/tsconfig.json +9 -1
- package/tsconfig.src.json +29 -29
- package/tsconfig.test.json +2 -2
- package/dist/Operations.d.ts +0 -124
- package/dist/Operations.d.ts.map +0 -1
- package/dist/Operations.js +0 -29
- package/dist/_ext/date.d.ts +0 -15
- package/dist/_ext/date.d.ts.map +0 -1
- package/dist/_ext/date.js +0 -16
- package/dist/_ext/misc.d.ts +0 -14
- package/dist/_ext/misc.d.ts.map +0 -1
- package/dist/_ext/misc.js +0 -17
- package/eslint.config.mjs +0 -26
- package/src/Operations.ts +0 -55
- package/src/_ext/date.ts +0 -27
- package/src/_ext/misc.ts +0 -46
- package/tsconfig.json.bak +0 -12
package/src/Pure.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import
|
|
3
|
-
import * as
|
|
4
|
-
import
|
|
2
|
+
import * as Chunk from "effect/Chunk"
|
|
3
|
+
import * as Effect from "effect/Effect"
|
|
4
|
+
import * as Layer from "effect/Layer"
|
|
5
|
+
import * as Result from "effect/Result"
|
|
6
|
+
import * as Tuple from "effect/Tuple"
|
|
7
|
+
import * as Context from "./Context.ts"
|
|
5
8
|
|
|
6
9
|
const S1 = Symbol()
|
|
7
10
|
const S2 = Symbol()
|
|
@@ -156,10 +159,10 @@ export function runAll<R, E, A, W3, S1, S3, S4 extends S1>(
|
|
|
156
159
|
)
|
|
157
160
|
.pipe(
|
|
158
161
|
Effect.map(
|
|
159
|
-
({ log, state }) =>
|
|
162
|
+
({ log, state }) => Tuple.make(log, Result.succeed(Tuple.make(state, x)))
|
|
160
163
|
)
|
|
161
164
|
))
|
|
162
|
-
.pipe(Effect.catch((err: any) => tagg.useSync((env) =>
|
|
165
|
+
.pipe(Effect.catch((err: any) => tagg.useSync((env) => Tuple.make(env.env.log, Result.fail(err)))))
|
|
163
166
|
return Effect.provide(a, Layer.succeed(tagg, { env: makePureEnv<W3, S3, S4>(s) as any }) as any) as any
|
|
164
167
|
}
|
|
165
168
|
|
|
@@ -167,7 +170,7 @@ export function runResult<R, E, A, W3, S1, S3, S4 extends S1>(
|
|
|
167
170
|
self: Effect.Effect<A, E, FixEnv<R, W3, S1, S3>>,
|
|
168
171
|
s: S4
|
|
169
172
|
) {
|
|
170
|
-
return Effect.map(runAll(self, s), ([log, r]) =>
|
|
173
|
+
return Effect.map(runAll(self, s), ([log, r]) => Tuple.make(log, Result.map(r, ([s]) => s)))
|
|
171
174
|
}
|
|
172
175
|
|
|
173
176
|
export function runTerm<R, E, A, W3, S1, S3, S4 extends S1>(
|
|
@@ -176,7 +179,7 @@ export function runTerm<R, E, A, W3, S1, S3, S4 extends S1>(
|
|
|
176
179
|
) {
|
|
177
180
|
return Effect.flatMap(
|
|
178
181
|
runAll(self, s),
|
|
179
|
-
([evts, r]) => Effect.map(Effect.fromResult(r), ([s3, a]) =>
|
|
182
|
+
([evts, r]) => Effect.map(Effect.fromResult(r), ([s3, a]) => Tuple.make(s3, Chunk.toArray(evts), a))
|
|
180
183
|
)
|
|
181
184
|
}
|
|
182
185
|
|
|
@@ -184,14 +187,14 @@ export function runTermDiscard<R, E, A, W3, S1, S3, S4 extends S1>(
|
|
|
184
187
|
self: Effect.Effect<A, E, FixEnv<R, W3, S1, S3>>,
|
|
185
188
|
s: S4
|
|
186
189
|
) {
|
|
187
|
-
return Effect.map(runTerm(self, s), ([s3, w3]) =>
|
|
190
|
+
return Effect.map(runTerm(self, s), ([s3, w3]) => Tuple.make(s3, w3))
|
|
188
191
|
}
|
|
189
192
|
|
|
190
193
|
export function runA<R, E, A, W3, S1, S3, S4 extends S1>(
|
|
191
194
|
self: Effect.Effect<A, E, FixEnv<R, W3, S1, S3>>,
|
|
192
195
|
s: S4
|
|
193
196
|
) {
|
|
194
|
-
return Effect.map(runAll(self, s), ([log, r]) =>
|
|
197
|
+
return Effect.map(runAll(self, s), ([log, r]) => Tuple.make(log, Result.map(r, ([, a]) => a)))
|
|
195
198
|
}
|
|
196
199
|
|
|
197
200
|
export function modify<S2, A, S3>(
|
|
@@ -221,14 +224,14 @@ export function modifyM<W, R, E, A, S2, S3>(
|
|
|
221
224
|
export function updateWith<S2, S3>(upd: (s: S2) => S3) {
|
|
222
225
|
return modify((_: S2) => {
|
|
223
226
|
const r = upd(_)
|
|
224
|
-
return
|
|
227
|
+
return Tuple.make(r, r)
|
|
225
228
|
})
|
|
226
229
|
}
|
|
227
230
|
|
|
228
231
|
export function updateWithEffect<W, R, E, S2, S3>(
|
|
229
232
|
upd: (s: S2, log: (evt: W) => PureLogT<W>) => Effect.Effect<S3, E, FixEnv<R, W, S2, S3>>
|
|
230
233
|
): Effect.Effect<S3, E, FixEnv<R, W, S2, S3>> {
|
|
231
|
-
return modifyM((_: S2) => Effect.map(upd(_, log), (_) =>
|
|
234
|
+
return modifyM((_: S2) => Effect.map(upd(_, log), (_) => Tuple.make(_, _)))
|
|
232
235
|
}
|
|
233
236
|
|
|
234
237
|
export type FixEnv<R, W, S, S2> =
|
|
@@ -298,11 +301,11 @@ export type FixEnv<R, W, S, S2> =
|
|
|
298
301
|
// }
|
|
299
302
|
|
|
300
303
|
// function update<S3>(upd: (s: S2) => S3) {
|
|
301
|
-
// return modify(_ =>
|
|
304
|
+
// return modify(_ => Tuple.make(upd(_), void 0 as void))
|
|
302
305
|
// }
|
|
303
306
|
|
|
304
307
|
// function updateM<R, E, S3>(upd: (s: S2) => Effect.Effect<R, E, S3>) {
|
|
305
|
-
// return modifyM(_ => upd(_).map(_ =>
|
|
308
|
+
// return modifyM(_ => upd(_).map(_ => Tuple.make(_, void 0 as void)))
|
|
306
309
|
// }
|
|
307
310
|
|
|
308
311
|
// const accessLog = Effect.serviceWithEffect(tag, _ => _.env.log.get)
|
|
@@ -318,12 +321,12 @@ export type FixEnv<R, W, S, S2> =
|
|
|
318
321
|
// ).map(
|
|
319
322
|
// (
|
|
320
323
|
// { log, state }
|
|
321
|
-
// ) =>
|
|
324
|
+
// ) => Tuple.make(log, Either.right(Tuple.make(state, x)) as Either.Either<E, readonly [S3, A]>)
|
|
322
325
|
// )
|
|
323
326
|
// ).catchAll(
|
|
324
327
|
// err =>
|
|
325
328
|
// accessLog.map(log =>
|
|
326
|
-
//
|
|
329
|
+
// Tuple.make(log, Either.left(err) as Either.Either<E, readonly [S3, A]>)
|
|
327
330
|
// )
|
|
328
331
|
// ).provideService(tag, { env: makePureEnv<W3, S3, S4>(s) as any }) as any
|
|
329
332
|
// }
|
|
@@ -332,14 +335,14 @@ export type FixEnv<R, W, S, S2> =
|
|
|
332
335
|
// self: Effect.Effect<FixEnv<R, W3, S1, S3>, E, A>,
|
|
333
336
|
// s: S4
|
|
334
337
|
// ) {
|
|
335
|
-
// return runAll(self, s).map(([log, r]) =>
|
|
338
|
+
// return runAll(self, s).map(([log, r]) => Tuple.make(log, r.map(([s]) => s)))
|
|
336
339
|
// }
|
|
337
340
|
|
|
338
341
|
// function runA<R, E, A, W3, S1, S3, S4 extends S1>(
|
|
339
342
|
// self: Effect.Effect<FixEnv<R, W3, S1, S3>, E, A>,
|
|
340
343
|
// s: S4
|
|
341
344
|
// ) {
|
|
342
|
-
// return runAll(self, s).map(([log, r]) =>
|
|
345
|
+
// return runAll(self, s).map(([log, r]) => Tuple.make(log, r.map(([, a]) => a)))
|
|
343
346
|
// }
|
|
344
347
|
|
|
345
348
|
// return {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RequestContext } from "./RequestContext.ts"
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Per-message context envelope (tenant/store id, request metadata) carried
|
|
5
|
+
* alongside message-schema payloads. Alias of {@link RequestContext}.
|
|
6
|
+
*
|
|
7
|
+
* All that remains of the former queue machinery (SB/SQLite/mem `QueueMaker`
|
|
8
|
+
* implementations and the `QueueBase` interface) after the move to cluster
|
|
9
|
+
* entities — the message schemas that embed it still reference this envelope.
|
|
10
|
+
*/
|
|
11
|
+
export const QueueMeta = RequestContext
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as Context from "./Context.ts"
|
|
2
|
+
import { UserProfileId } from "./ids.ts"
|
|
3
|
+
import * as S from "./Schema.ts"
|
|
4
|
+
import { NonEmptyString255 } from "./Schema.ts"
|
|
5
|
+
|
|
6
|
+
export const Locale = S.Literals(["en", "de"])
|
|
7
|
+
export type Locale = typeof Locale.Type
|
|
8
|
+
|
|
9
|
+
export class LocaleRef extends Context.Reference("Locale", { defaultValue: (): Locale => "en" }) {}
|
|
10
|
+
|
|
11
|
+
export class RequestContext extends S.Opaque<RequestContext>()(S.Struct({
|
|
12
|
+
span: S.Struct({
|
|
13
|
+
traceId: S.String,
|
|
14
|
+
spanId: S.String,
|
|
15
|
+
sampled: S.Boolean
|
|
16
|
+
}),
|
|
17
|
+
name: NonEmptyString255,
|
|
18
|
+
locale: Locale,
|
|
19
|
+
sourceId: S.optional(NonEmptyString255), // TODO?
|
|
20
|
+
namespace: NonEmptyString255,
|
|
21
|
+
/** @deprecated */
|
|
22
|
+
userProfile: S.optional(S.Struct({ sub: UserProfileId })) //
|
|
23
|
+
})) {
|
|
24
|
+
static toMonitoring(this: void, self: RequestContext) {
|
|
25
|
+
return {
|
|
26
|
+
operationName: self.name,
|
|
27
|
+
locale: self.locale
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const spanAttributes = (ctx: Pick<RequestContext, "locale" | "namespace"> & Partial<RequestContext>) => ({
|
|
33
|
+
"code.function.name": ctx.name,
|
|
34
|
+
"app.locale": ctx.locale,
|
|
35
|
+
"app.tenant.id": ctx.namespace,
|
|
36
|
+
...ctx.sourceId ? { "client.id": ctx.sourceId } : {},
|
|
37
|
+
...(ctx.userProfile?.sub
|
|
38
|
+
? {
|
|
39
|
+
"user.id": ctx
|
|
40
|
+
.userProfile
|
|
41
|
+
.sub,
|
|
42
|
+
"user.roles": "roles" in ctx
|
|
43
|
+
.userProfile
|
|
44
|
+
? ctx.userProfile.roles
|
|
45
|
+
: undefined
|
|
46
|
+
}
|
|
47
|
+
: {})
|
|
48
|
+
})
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as Data from "effect/Data"
|
|
2
|
+
import type * as Scope from "effect/Scope"
|
|
3
|
+
import * as Context from "./Context.ts"
|
|
4
|
+
import * as Effect from "./Effect.ts"
|
|
5
|
+
import * as Layer from "./Layer.ts"
|
|
6
|
+
|
|
7
|
+
export type Root = "root"
|
|
8
|
+
|
|
9
|
+
export class RequestScopedDependencyNotStartedError extends Data.TaggedError(
|
|
10
|
+
"RequestScopedDependencyNotStartedError"
|
|
11
|
+
)<{ readonly key: string }> {}
|
|
12
|
+
|
|
13
|
+
export interface RequestScopedDependency<Service, E = never, R = never> extends Context.Reference<Service | Root> {
|
|
14
|
+
readonly current: Effect.Effect<Service, RequestScopedDependencyNotStartedError>
|
|
15
|
+
readonly layer: Layer.Layer<never, E, R>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const access = <Service>(
|
|
19
|
+
dependency: Context.Reference<Service | Root>,
|
|
20
|
+
key: string
|
|
21
|
+
): Effect.Effect<Service, RequestScopedDependencyNotStartedError> =>
|
|
22
|
+
dependency.pipe(
|
|
23
|
+
Effect.filterOrFail((_): _ is Service => _ !== "root", () => new RequestScopedDependencyNotStartedError({ key }))
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
export const make = <Service, E = never, R = never>(
|
|
27
|
+
key: string,
|
|
28
|
+
service: Effect.Effect<Service, E, R>
|
|
29
|
+
): RequestScopedDependency<Service, E, Exclude<R, Scope.Scope>> => {
|
|
30
|
+
const dependency = Context.Reference<Service | Root>(key, { defaultValue: () => "root" })
|
|
31
|
+
return Object.assign(dependency, {
|
|
32
|
+
current: access(dependency, key),
|
|
33
|
+
layer: Layer.effect(dependency, service)
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const layer = <
|
|
38
|
+
Deps extends readonly [RequestScopedDependency<any, any, any>, ...Array<RequestScopedDependency<any, any, any>>]
|
|
39
|
+
>(
|
|
40
|
+
...dependencies: Deps
|
|
41
|
+
): Layer.Layer<
|
|
42
|
+
never,
|
|
43
|
+
{ [K in keyof Deps]: Deps[K] extends RequestScopedDependency<any, infer E, any> ? E : never }[number],
|
|
44
|
+
{ [K in keyof Deps]: Deps[K] extends RequestScopedDependency<any, any, infer R> ? R : never }[number]
|
|
45
|
+
> => dependencies.map((_) => _.layer).reduce((acc, l) => Layer.merge(acc, l)) as any
|