@effect-app/infra 0.177.8 → 0.178.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 +25 -0
- package/_cjs/services/Emailer/Sendgrid.cjs +2 -2
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +1 -1
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Emailer/service.cjs +1 -1
- package/_cjs/services/Emailer/service.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +2 -2
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +1 -1
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +2 -2
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/ContextMapContainer.cjs +5 -6
- package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +1 -1
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +1 -2
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +1 -2
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +1 -1
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +4 -8
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_src/services/Emailer/Sendgrid.ts +2 -2
- package/_src/services/Emailer/fake.ts +7 -5
- package/_src/services/Emailer/service.ts +2 -2
- package/_src/services/Operations/live.ts +3 -3
- package/_src/services/Operations/service.ts +2 -7
- package/_src/services/RequestContextContainer.ts +10 -8
- package/_src/services/Store/ContextMapContainer.ts +7 -7
- package/_src/services/Store/Cosmos.ts +2 -2
- package/_src/services/Store/Disk.ts +1 -2
- package/_src/services/Store/Memory.ts +1 -1
- package/_src/services/Store/Redis.ts +2 -2
- package/_src/services/Store/service.ts +4 -7
- package/dist/services/Emailer/Sendgrid.js +3 -3
- package/dist/services/Emailer/fake.d.ts.map +1 -1
- package/dist/services/Emailer/fake.js +2 -2
- package/dist/services/Emailer/service.d.ts +16 -6
- package/dist/services/Emailer/service.d.ts.map +1 -1
- package/dist/services/Emailer/service.js +2 -2
- package/dist/services/Operations/live.d.ts +1 -1
- package/dist/services/Operations/live.d.ts.map +1 -1
- package/dist/services/Operations/live.js +3 -3
- package/dist/services/Operations/service.d.ts +39 -25
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +2 -2
- package/dist/services/QueueMaker/service.d.ts +2 -2
- package/dist/services/RequestContextContainer.d.ts +26 -10
- package/dist/services/RequestContextContainer.d.ts.map +1 -1
- package/dist/services/RequestContextContainer.js +3 -3
- package/dist/services/Store/ContextMapContainer.d.ts +21 -8
- package/dist/services/Store/ContextMapContainer.d.ts.map +1 -1
- package/dist/services/Store/ContextMapContainer.js +6 -7
- package/dist/services/Store/Cosmos.js +3 -2
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +2 -3
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +2 -3
- package/dist/services/Store/Redis.js +3 -2
- package/dist/services/Store/service.d.ts +20 -14
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/Store/service.js +4 -8
- package/dist/services/simpledb/cosmosdb.d.ts +2 -2
- package/dist/services/simpledb/diskdb.d.ts +2 -2
- package/dist/services/simpledb/memdb.d.ts +2 -2
- package/dist/services/simpledb/redisdb.d.ts +2 -2
- package/dist/services/simpledb/simpledb.d.ts +2 -2
- package/package.json +9 -9
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.makeContextMap = exports.StoreMaker = exports.ContextMap = void 0;
|
|
7
7
|
var tsplus_module_1 = _interopRequireWildcard(require("effect-app/service"));
|
|
8
8
|
var tsplus_module_2 = _interopRequireWildcard(require("effect/Effect"));
|
|
9
9
|
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); }
|
|
@@ -12,7 +12,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
12
12
|
* @tsplus type StoreMaker
|
|
13
13
|
* @tsplus companion StoreMaker.Ops
|
|
14
14
|
*/
|
|
15
|
-
class StoreMaker extends tsplus_module_1.
|
|
15
|
+
class StoreMaker extends tsplus_module_1.TagClassId()("effect-app/StoreMaker") {}
|
|
16
16
|
exports.StoreMaker = StoreMaker;
|
|
17
17
|
const makeContextMap = () => {
|
|
18
18
|
const etags = new Map();
|
|
@@ -73,16 +73,12 @@ const makeContextMap = () => {
|
|
|
73
73
|
// parserEnv
|
|
74
74
|
};
|
|
75
75
|
};
|
|
76
|
-
/**
|
|
77
|
-
* @tsplus static ContextMap.Ops Make
|
|
78
|
-
*/
|
|
79
76
|
exports.makeContextMap = makeContextMap;
|
|
80
|
-
const
|
|
81
|
-
const makeMap = exports.makeMap = makeMap_1;
|
|
77
|
+
const makeMap = tsplus_module_2.sync(() => makeContextMap());
|
|
82
78
|
/**
|
|
83
79
|
* @tsplus type ContextMap
|
|
84
80
|
* @tsplus companion ContextMap.Ops
|
|
85
81
|
*/
|
|
86
|
-
class ContextMap extends tsplus_module_1.
|
|
82
|
+
class ContextMap extends tsplus_module_1.TagClassMakeId()("effect-app/ContextMap", makeMap) {}
|
|
87
83
|
exports.ContextMap = ContextMap;
|
|
88
84
|
//# sourceMappingURL=service.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.cjs","names":["StoreMaker","tsplus_module_1","
|
|
1
|
+
{"version":3,"file":"service.cjs","names":["StoreMaker","tsplus_module_1","TagClassId","exports","makeContextMap","etags","Map","getEtag","id","get","setEtag","eTag","undefined","delete","set","makeMap","tsplus_module_2","sync","ContextMap","TagClassMakeId"],"sources":["../../../_src/services/Store/service.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;AAiGA;;;;AAIM,MAAOA,UAAW,SAAQC,eAAA,CAAAC,UAAU,EAMtC,CAAC,uBAAuB,CAAC;AAC5BC,OAAA,CAAAH,UAAA,GAAAA,UAAA;AAEM,MAAMI,cAAc,GAAGA,CAAA,KAAK;EACjC,MAAMC,KAAK,GAAG,IAAIC,GAAG,EAAkB;EACvC,MAAMC,OAAO,GAAIC,EAAU,IAAKH,KAAK,CAACI,GAAG,CAACD,EAAE,CAAC;EAC7C,MAAME,OAAO,GAAGA,CAACF,EAAU,EAAEG,IAAwB,KAAI;IACvDA,IAAI,KAAKC,SAAS,GAAGP,KAAK,CAACQ,MAAM,CAACL,EAAE,CAAC,GAAGH,KAAK,CAACS,GAAG,CAACN,EAAE,EAAEG,IAAI,CAAC;EAC7D,CAAC;EAED;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA,OAAO;IACLF,GAAG,EAAEF,OAAO;IACZO,GAAG,EAAEJ;IACL;GACD;AACH,CAAC;AAAAP,OAAA,CAAAC,cAAA,GAAAA,cAAA;AAED,MAAMW,OAAO,GAAGC,eAAA,CAAAC,IAAA,CAAY,MAAMb,cAAc,EAAE,CAAC;AAEnD;;;;AAIM,MAAOc,UAAW,SAAQjB,eAAA,CAAAkB,cAAc,EAAc,CAAC,uBAAuB,EAAEJ,OAAO,CAAC;AAC7FZ,OAAA,CAAAe,UAAA,GAAAA,UAAA"}
|
|
@@ -9,7 +9,7 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
|
|
|
9
9
|
Effect.sync(() => {
|
|
10
10
|
sgMail.setApiKey(apiKey.value)
|
|
11
11
|
|
|
12
|
-
return {
|
|
12
|
+
return new Emailer({
|
|
13
13
|
sendMail(msg_: EmailMsgOptionalFrom) {
|
|
14
14
|
return Effect.gen(function*($) {
|
|
15
15
|
const msg: EmailMsg = dropUndefinedT({
|
|
@@ -45,7 +45,7 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
|
|
|
45
45
|
return ret
|
|
46
46
|
})
|
|
47
47
|
}
|
|
48
|
-
}
|
|
48
|
+
})
|
|
49
49
|
})
|
|
50
50
|
|
|
51
51
|
/**
|
|
@@ -3,11 +3,13 @@ import { Emailer } from "./service.js"
|
|
|
3
3
|
|
|
4
4
|
const makeFake = Effect
|
|
5
5
|
.logDebug("FAKE Emailer Service enabled")
|
|
6
|
-
.map(()
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
.map(() =>
|
|
7
|
+
new Emailer({
|
|
8
|
+
sendMail(msg) {
|
|
9
|
+
return Effect.logDebug(`Fake send mail`).annotateLogs("msg", pretty(msg))
|
|
10
|
+
}
|
|
11
|
+
})
|
|
12
|
+
)
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* @tsplus static Emailer.Ops Fake
|
|
@@ -6,9 +6,9 @@ import type sgMail from "@sendgrid/mail"
|
|
|
6
6
|
* @tsplus type Emailer
|
|
7
7
|
* @tsplus companion Emailer.Ops
|
|
8
8
|
*/
|
|
9
|
-
export class Emailer extends
|
|
9
|
+
export class Emailer extends TagClassId<Emailer, {
|
|
10
10
|
sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>
|
|
11
|
-
}>() {}
|
|
11
|
+
}>()("effect-app/Emailer") {}
|
|
12
12
|
|
|
13
13
|
export interface SendgridConfig {
|
|
14
14
|
defaultReplyTo?: Email | { name?: NonEmptyString255; email: Email }
|
|
@@ -5,7 +5,7 @@ import { Operations } from "./service.js"
|
|
|
5
5
|
|
|
6
6
|
const reportAppError = reportError("Operations.Cleanup")
|
|
7
7
|
|
|
8
|
-
const make = Effect.sync(()
|
|
8
|
+
const make = Effect.sync(() => {
|
|
9
9
|
const ops = new Map<OperationId, Operation>()
|
|
10
10
|
const makeOp = Effect.sync(() => OperationId.make())
|
|
11
11
|
|
|
@@ -72,7 +72,7 @@ const make = Effect.sync((): Operations => {
|
|
|
72
72
|
})
|
|
73
73
|
)
|
|
74
74
|
}
|
|
75
|
-
return {
|
|
75
|
+
return new Operations({
|
|
76
76
|
cleanup,
|
|
77
77
|
register: makeOp
|
|
78
78
|
.tap((id) =>
|
|
@@ -87,7 +87,7 @@ const make = Effect.sync((): Operations => {
|
|
|
87
87
|
|
|
88
88
|
find: findOp,
|
|
89
89
|
update
|
|
90
|
-
}
|
|
90
|
+
})
|
|
91
91
|
})
|
|
92
92
|
|
|
93
93
|
const cleanupLoop = Operations
|
|
@@ -5,22 +5,17 @@ import * as Scope from "effect/Scope"
|
|
|
5
5
|
* @tsplus type Operations
|
|
6
6
|
* @tsplus companion Operations.Ops
|
|
7
7
|
*/
|
|
8
|
-
export class Operations extends
|
|
8
|
+
export class Operations extends TagClassId<Operations, {
|
|
9
9
|
register: Effect<OperationId, never, Scope.Scope>
|
|
10
10
|
update: (id: OperationId, progress: OperationProgress) => Effect<void>
|
|
11
11
|
find: (id: OperationId) => Effect<Option<Operation>>
|
|
12
12
|
cleanup: Effect<void>
|
|
13
|
-
}
|
|
13
|
+
}>()("effect-app/Operations") {
|
|
14
14
|
static readonly find = Effect.serviceFunctions(this).find
|
|
15
15
|
static readonly update = Effect.serviceFunctions(this).update
|
|
16
16
|
static readonly register = Effect.serviceConstants(this).register
|
|
17
17
|
static readonly cleanup = Effect.serviceConstants(this).cleanup
|
|
18
18
|
}
|
|
19
|
-
export namespace Operations {
|
|
20
|
-
export interface Id {
|
|
21
|
-
readonly _: unique symbol
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
19
|
|
|
25
20
|
/**
|
|
26
21
|
* @tsplus getter effect/io/Effect forkOperation
|
|
@@ -5,11 +5,11 @@ import { RequestContext } from "../RequestContext.js"
|
|
|
5
5
|
* @tsplus type RequestContextContainer
|
|
6
6
|
* @tsplus companion RequestContextContainer.Ops
|
|
7
7
|
*/
|
|
8
|
-
export class RequestContextContainer extends
|
|
8
|
+
export class RequestContextContainer extends TagClassId<RequestContextContainer, {
|
|
9
9
|
requestContext: Effect<RequestContext>
|
|
10
10
|
update: (f: (rc: RequestContext) => RequestContext) => Effect<RequestContext>
|
|
11
11
|
start: (f: RequestContext) => Effect<void>
|
|
12
|
-
}>() {
|
|
12
|
+
}>()("effect-app/RequestContextContainer") {
|
|
13
13
|
static get get(): Effect<RequestContext, never, RequestContextContainer> {
|
|
14
14
|
return RequestContextContainer.flatMap((_) => _.requestContext)
|
|
15
15
|
}
|
|
@@ -25,12 +25,14 @@ export class RequestContextContainer extends TagClass<RequestContextContainer, {
|
|
|
25
25
|
static readonly live = Effect
|
|
26
26
|
.sync(() => new RequestContext({ name: NonEmptyString255("_root_"), rootId: RequestId("_root_"), locale: "en" }))
|
|
27
27
|
.andThen(FiberRef.make<RequestContext>)
|
|
28
|
-
.map((ref) =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
.map((ref) =>
|
|
29
|
+
new RequestContextContainer({
|
|
30
|
+
requestContext: ref.get,
|
|
31
|
+
update: (f: (a: RequestContext) => RequestContext) =>
|
|
32
|
+
ref.getAndUpdate(f).tap((rc) => Effect.annotateCurrentSpan(rc.spanAttributes)),
|
|
33
|
+
start: (a: RequestContext) => ref.set(a).andThen(a.restoreStoreId)
|
|
34
|
+
})
|
|
35
|
+
)
|
|
34
36
|
.toLayerScoped(this)
|
|
35
37
|
}
|
|
36
38
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ContextMap
|
|
1
|
+
import { ContextMap } from "./service.js"
|
|
2
2
|
|
|
3
3
|
// TODO: we have to create a new contextmap on every request.
|
|
4
4
|
// we want to share one map during startup
|
|
@@ -9,10 +9,10 @@ import { ContextMap, makeContextMap } from "./service.js"
|
|
|
9
9
|
/**
|
|
10
10
|
* @tsplus companion ContextMapContainer.Ops
|
|
11
11
|
*/
|
|
12
|
-
export class ContextMapContainer extends
|
|
12
|
+
export class ContextMapContainer extends TagClassId<ContextMapContainer, {
|
|
13
13
|
get: Effect<ContextMap>
|
|
14
14
|
start: Effect<void>
|
|
15
|
-
}>() {
|
|
15
|
+
}>()("effect-app/ContextMapContainer") {
|
|
16
16
|
static get get(): Effect<ContextMap, never, ContextMapContainer> {
|
|
17
17
|
return ContextMapContainer.flatMap((_) => _.get)
|
|
18
18
|
}
|
|
@@ -26,10 +26,10 @@ export class ContextMapContainer extends TagClass<ContextMapContainer, {
|
|
|
26
26
|
)
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
static readonly live =
|
|
30
|
-
.
|
|
31
|
-
.
|
|
32
|
-
.map((ref) => new ContextMapContainer({ get: ref.get, start: ContextMap.
|
|
29
|
+
static readonly live = ContextMap
|
|
30
|
+
.make
|
|
31
|
+
.flatMap(FiberRef.make<ContextMap>)
|
|
32
|
+
.map((ref) => new ContextMapContainer({ get: ref.get, start: ContextMap.make.flatMap((_) => ref.set(_)) }))
|
|
33
33
|
.toLayerScoped(this)
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -438,7 +438,7 @@ function makeCosmosStore({ prefix }: StorageConfig) {
|
|
|
438
438
|
}
|
|
439
439
|
|
|
440
440
|
export function CosmosStoreLayer(cfg: StorageConfig) {
|
|
441
|
-
return
|
|
442
|
-
.toLayer(
|
|
441
|
+
return StoreMaker
|
|
442
|
+
.toLayer(makeCosmosStore(cfg))
|
|
443
443
|
.provide(CosmosClientLayer(cfg.url.value, cfg.dbName))
|
|
444
444
|
}
|
|
@@ -147,6 +147,5 @@ export function makeDiskStore({ prefix }: StorageConfig, dir: string) {
|
|
|
147
147
|
}
|
|
148
148
|
|
|
149
149
|
export function DiskStoreLayer(config: StorageConfig, dir: string) {
|
|
150
|
-
return makeDiskStore(config, dir)
|
|
151
|
-
.toLayer(StoreMaker)
|
|
150
|
+
return StoreMaker.toLayer(makeDiskStore(config, dir))
|
|
152
151
|
}
|
|
@@ -82,7 +82,7 @@ function makeRedisStore({ prefix }: StorageConfig) {
|
|
|
82
82
|
})
|
|
83
83
|
}
|
|
84
84
|
export function RedisStoreLayer(cfg: StorageConfig) {
|
|
85
|
-
return
|
|
86
|
-
.toLayer(
|
|
85
|
+
return StoreMaker
|
|
86
|
+
.toLayer(makeRedisStore(cfg))
|
|
87
87
|
.provide(RedisClientLayer(cfg.url.value))
|
|
88
88
|
}
|
|
@@ -99,13 +99,13 @@ export interface Store<PM extends PersistenceModelType<Id>, Id> {
|
|
|
99
99
|
* @tsplus type StoreMaker
|
|
100
100
|
* @tsplus companion StoreMaker.Ops
|
|
101
101
|
*/
|
|
102
|
-
export class StoreMaker extends
|
|
102
|
+
export class StoreMaker extends TagClassId<StoreMaker, {
|
|
103
103
|
make: <PM extends PersistenceModelType<Id>, Id extends string, R = never, E = never>(
|
|
104
104
|
name: string,
|
|
105
105
|
seed?: Effect<Iterable<PM>, E, R>,
|
|
106
106
|
config?: StoreConfig<PM>
|
|
107
107
|
) => Effect<Store<PM, Id>, E, R>
|
|
108
|
-
}>() {
|
|
108
|
+
}>()("effect-app/StoreMaker") {
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
export const makeContextMap = () => {
|
|
@@ -173,16 +173,13 @@ export const makeContextMap = () => {
|
|
|
173
173
|
}
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
* @tsplus static ContextMap.Ops Make
|
|
178
|
-
*/
|
|
179
|
-
export const makeMap = Effect.sync(() => makeContextMap())
|
|
176
|
+
const makeMap = Effect.sync(() => makeContextMap())
|
|
180
177
|
|
|
181
178
|
/**
|
|
182
179
|
* @tsplus type ContextMap
|
|
183
180
|
* @tsplus companion ContextMap.Ops
|
|
184
181
|
*/
|
|
185
|
-
export class ContextMap extends
|
|
182
|
+
export class ContextMap extends TagClassMakeId<ContextMap>()("effect-app/ContextMap", makeMap) {
|
|
186
183
|
}
|
|
187
184
|
|
|
188
185
|
export interface PersistenceModelType<Id> {
|
|
@@ -9,7 +9,7 @@ import { inspect } from "util";
|
|
|
9
9
|
import { Emailer } from "./service.js";
|
|
10
10
|
const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPrefix }) => tsplus_module_2.sync(() => {
|
|
11
11
|
sgMail.setApiKey(tsplus_module_1.value(apiKey));
|
|
12
|
-
return {
|
|
12
|
+
return new Emailer({
|
|
13
13
|
sendMail(msg_) {
|
|
14
14
|
return tsplus_module_2.gen(function* ($) {
|
|
15
15
|
const msg = dropUndefinedT({
|
|
@@ -36,7 +36,7 @@ const makeSendgrid = ({ apiKey, defaultFrom, defaultReplyTo, realMail, subjectPr
|
|
|
36
36
|
return ret;
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
|
-
};
|
|
39
|
+
});
|
|
40
40
|
});
|
|
41
41
|
/**
|
|
42
42
|
* @tsplus static Emailer.Ops SendgridLayer
|
|
@@ -98,4 +98,4 @@ function renderMailData(md) {
|
|
|
98
98
|
}
|
|
99
99
|
return md.email;
|
|
100
100
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL0VtYWlsZXIvU2VuZGdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFdkQsT0FBTyxNQUFNLE1BQU0sZ0JBQWdCLENBQUE7QUFDbkMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUM5QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBR3RDLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFrQixFQUFFLEVBQUUsQ0FDeEcscUJBQVksR0FBRyxFQUFFO0lBQ2YsTUFBTSxDQUFDLFNBQVMsdUJBQUMsTUFBTSxFQUFPLENBQUE7SUFFOUIsT0FBTyxJQUFJLE9BQU8sQ0FBQztRQUNqQixRQUFRLENBQUMsSUFBMEI7WUFDakMsT0FBTyxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO2dCQUMzQixNQUFNLEdBQUcsR0FBYSxjQUFjLENBQUM7b0JBQ25DLEdBQUcsSUFBSTtvQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXO29CQUM5QixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDO2lCQUNsRSxDQUFDLENBQUE7Z0JBQ0YsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUE7Z0JBRXZDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDaEMsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLFlBQVksRUFBRSxPQUFPLEVBQUUsR0FBRyxhQUFh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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../../../_src/services/Emailer/fake.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;;;;;
|
|
1
|
+
{"version":3,"file":"fake.d.ts","sourceRoot":"","sources":["../../../_src/services/Emailer/fake.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;;;;;AAetC,eAAO,MAAM,YAAY,qDAA4B,CAAA"}
|
|
@@ -2,7 +2,7 @@ import * as tsplus_module_1 from "effect/Effect";
|
|
|
2
2
|
import * as tsplus_module_2 from "effect/Layer";
|
|
3
3
|
import { pretty } from "effect-app/utils";
|
|
4
4
|
import { Emailer } from "./service.js";
|
|
5
|
-
const makeFake = tsplus_module_1.map(tsplus_module_1.logDebug("FAKE Emailer Service enabled"), () => ({
|
|
5
|
+
const makeFake = tsplus_module_1.map(tsplus_module_1.logDebug("FAKE Emailer Service enabled"), () => new Emailer({
|
|
6
6
|
sendMail(msg) {
|
|
7
7
|
return tsplus_module_1.annotateLogs(tsplus_module_1.logDebug(`Fake send mail`), "msg", pretty(msg));
|
|
8
8
|
}
|
|
@@ -11,4 +11,4 @@ const makeFake = tsplus_module_1.map(tsplus_module_1.logDebug("FAKE Emailer Serv
|
|
|
11
11
|
* @tsplus static Emailer.Ops Fake
|
|
12
12
|
*/
|
|
13
13
|
export const FakeSendgrid = tsplus_module_2.effect(Emailer)(makeFake);
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvRW1haWxlci9mYWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFdEMsTUFBTSxRQUFRLEdBQUcsb0JBQUEseUJBQ0wsOEJBQThCLENBQUMsRUFDcEMsR0FBRyxFQUFFLENBQ1IsSUFBSSxPQUFPLENBQUM7SUFDVixRQUFRLENBQUMsR0FBRztRQUNWLE9BQU8sNkJBQUEseUJBQWdCLGdCQUFnQixDQUFDLEVBQWMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzNFLENBQUM7Q0FDRixDQUFDLENBQ0gsQ0FBQTtBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLHVCQUFpQixPQUFPLEVBQXhCLFFBQVEsQ0FBaUIsQ0FBQSJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TagClassId } from "effect-app/service";
|
|
2
2
|
import { Effect } from "effect/Effect";
|
|
3
3
|
import { Email, NonEmptyString255 } from "effect-app/schema";
|
|
4
4
|
import { Secret } from "effect/Secret";
|
|
@@ -6,11 +6,21 @@ import { NonEmptyReadonlyArray } from "effect/ReadonlyArray";
|
|
|
6
6
|
import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js";
|
|
7
7
|
import type { ResponseError } from "@sendgrid/mail";
|
|
8
8
|
import type sgMail from "@sendgrid/mail";
|
|
9
|
-
declare const Emailer_base:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
declare const Emailer_base: {
|
|
10
|
+
new (service: {
|
|
11
|
+
sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>;
|
|
12
|
+
}): Readonly<{
|
|
13
|
+
sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>;
|
|
14
|
+
}> & import("effect/Context").TagClassShape<"effect-app/Emailer", {
|
|
15
|
+
sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>;
|
|
16
|
+
}>;
|
|
17
|
+
toLayer: <E, R>(eff: import("effect/Effect").Effect<{
|
|
18
|
+
sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>;
|
|
19
|
+
}, E, R>) => import("effect/Layer").Layer<Emailer, E, R>;
|
|
20
|
+
toLayerScoped: <E_1, R_1>(eff: import("effect/Effect").Effect<{
|
|
21
|
+
sendMail: (msg: EmailMsgOptionalFrom) => Effect<void, Error | ResponseError>;
|
|
22
|
+
}, E_1, R_1>) => import("effect/Layer").Layer<Emailer, E_1, Exclude<R_1, import("effect/Scope").Scope>>;
|
|
23
|
+
} & import("effect/Context").Tag<Emailer, Emailer>;
|
|
14
24
|
/**
|
|
15
25
|
* @tsplus type Emailer
|
|
16
26
|
* @tsplus companion Emailer.Ops
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Emailer/service.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Emailer/service.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;;;wBAOtB,oBAAoB,KAAK,OAAO,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;wBAA5D,oBAAoB,KAAK,OAAO,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;wBAA5D,oBAAoB,KAAK,OAAO,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;;wBAA5D,oBAAoB,KAAK,OAAO,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;;wBAA5D,oBAAoB,KAAK,OAAO,IAAI,EAAE,KAAK,GAAG,aAAa,CAAC;;;AAL9E;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,YAEH;CAAG;AAE7B,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAA;IACnE,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,WAAW,EAAE,KAAK,GAAG;QAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAA;IAC/D,MAAM,EAAE,MAAM,CAAA;CACf;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAA;AAC9C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,MAAM,MAAM,oBAAoB,GAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GACtB,CACA;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,qBAAqB,CAAC,WAAW,CAAC,CAAA;CAAE,CAC/G,GACC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAA"}
|
|
@@ -3,6 +3,6 @@ import * as tsplus_module_1 from "effect-app/service";
|
|
|
3
3
|
* @tsplus type Emailer
|
|
4
4
|
* @tsplus companion Emailer.Ops
|
|
5
5
|
*/
|
|
6
|
-
export class Emailer extends tsplus_module_1.
|
|
6
|
+
export class Emailer extends tsplus_module_1.TagClassId()("effect-app/Emailer") {
|
|
7
7
|
}
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvRW1haWxlci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFJQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBUSxTQUFRLGdCQUFBLFVBQVUsRUFFbkMsQ0FBQyxvQkFBb0IsQ0FBQztDQUFHIn0=
|
|
@@ -4,5 +4,5 @@ import { Operations } from "./service.js";
|
|
|
4
4
|
* @tsplus static Operations.Ops Live
|
|
5
5
|
* @tsplus location "@effect-app/infra/services/Operations/live"
|
|
6
6
|
*/
|
|
7
|
-
export declare const Live: import("effect/Layer").Layer<Operations
|
|
7
|
+
export declare const Live: import("effect/Layer").Layer<Operations, never, never>;
|
|
8
8
|
//# sourceMappingURL=live.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../_src/services/Operations/live.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;;;;;AAyGzC,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../../_src/services/Operations/live.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;;;;;AAyGzC,eAAO,MAAM,IAAI,wDAEwB,CAAA"}
|
|
@@ -68,14 +68,14 @@ const make = tsplus_module_1.sync(() => {
|
|
|
68
68
|
ops.set(id, { ..._.value, updatedAt: new Date(), progress });
|
|
69
69
|
}));
|
|
70
70
|
}
|
|
71
|
-
return {
|
|
71
|
+
return new Operations({
|
|
72
72
|
cleanup,
|
|
73
73
|
register: makeOp
|
|
74
74
|
.tap((id) => tsplus_module_10.annotateLogscoped("operationId", id)
|
|
75
75
|
.andThen(tsplus_module_1.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit)))),
|
|
76
76
|
find: findOp,
|
|
77
77
|
update
|
|
78
|
-
};
|
|
78
|
+
});
|
|
79
79
|
});
|
|
80
80
|
const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.schedule(tsplus_module_1.flatMap(tsplus_module_1.exit(tsplus_module_1.flatMap(Operations, (_) => _.cleanup)), (_) => {
|
|
81
81
|
if (tsplus_module_6.isSuccess(_)) {
|
|
@@ -89,4 +89,4 @@ const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.schedule(tsplus_m
|
|
|
89
89
|
* @tsplus static Operations.Ops Live
|
|
90
90
|
*/
|
|
91
91
|
export const Live = tsplus_module_13.provideMerge(tsplus_module_13.scopedDiscard(cleanupLoop), tsplus_module_13.effect(Operations)(make));
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9saXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUE7QUFFeEQsTUFBTSxJQUFJLEdBQUcscUJBQVksR0FBRyxFQUFFO0lBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUEwQixDQUFBO0lBQzdDLE1BQU0sTUFBTSxHQUFHLHFCQUFZLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBRXBELE1BQU0sT0FBTyxHQUFHLHlCQUFBLHFCQUNSLEdBQUcsRUFBRTtRQUNULE1BQU0sTUFBTSxHQUFHLDZCQUFBLElBQUksSUFBSSxFQUFFLEVBQVUsQ0FBQyxDQUFDLENBQUE7UUFDckMsc0RBQUEsR0FBRzthQUNBLE9BQU8sRUFBRSxHQUVELENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRyw2QkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDbkYsSUFBSSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDaEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQyxDQUFD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
|
|
@@ -1,53 +1,67 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TagClassId } from "effect-app/service";
|
|
2
2
|
import { Effect } from "effect/Effect";
|
|
3
3
|
import { Option } from "@effect-app/core/Option";
|
|
4
4
|
import type { Operation, OperationId, OperationProgress } from "effect-app/Operations";
|
|
5
5
|
import * as Scope from "effect/Scope";
|
|
6
|
-
declare const Operations_base:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
declare const Operations_base: {
|
|
7
|
+
new (service: {
|
|
8
|
+
register: Effect<OperationId, never, Scope.Scope>;
|
|
9
|
+
update: (id: OperationId, progress: OperationProgress) => Effect<void>;
|
|
10
|
+
find: (id: OperationId) => Effect<Option<Operation>>;
|
|
11
|
+
cleanup: Effect<void>;
|
|
12
|
+
}): Readonly<{
|
|
13
|
+
register: Effect<OperationId, never, Scope.Scope>;
|
|
14
|
+
update: (id: OperationId, progress: OperationProgress) => Effect<void>;
|
|
15
|
+
find: (id: OperationId) => Effect<Option<Operation>>;
|
|
16
|
+
cleanup: Effect<void>;
|
|
17
|
+
}> & import("effect/Context").TagClassShape<"effect-app/Operations", {
|
|
18
|
+
register: Effect<OperationId, never, Scope.Scope>;
|
|
19
|
+
update: (id: OperationId, progress: OperationProgress) => Effect<void>;
|
|
20
|
+
find: (id: OperationId) => Effect<Option<Operation>>;
|
|
21
|
+
cleanup: Effect<void>;
|
|
22
|
+
}>;
|
|
23
|
+
toLayer: <E, R>(eff: import("effect/Effect").Effect<{
|
|
24
|
+
register: Effect<OperationId, never, Scope.Scope>;
|
|
25
|
+
update: (id: OperationId, progress: OperationProgress) => Effect<void>;
|
|
26
|
+
find: (id: OperationId) => Effect<Option<Operation>>;
|
|
27
|
+
cleanup: Effect<void>;
|
|
28
|
+
}, E, R>) => import("effect/Layer").Layer<Operations, E, R>;
|
|
29
|
+
toLayerScoped: <E_1, R_1>(eff: import("effect/Effect").Effect<{
|
|
30
|
+
register: Effect<OperationId, never, Scope.Scope>;
|
|
31
|
+
update: (id: OperationId, progress: OperationProgress) => Effect<void>;
|
|
32
|
+
find: (id: OperationId) => Effect<Option<Operation>>;
|
|
33
|
+
cleanup: Effect<void>;
|
|
34
|
+
}, E_1, R_1>) => import("effect/Layer").Layer<Operations, E_1, Exclude<R_1, Scope.Scope>>;
|
|
35
|
+
} & import("effect/Context").Tag<Operations, Operations>;
|
|
17
36
|
/**
|
|
18
37
|
* @tsplus type Operations
|
|
19
38
|
* @tsplus companion Operations.Ops
|
|
20
39
|
*/
|
|
21
40
|
export declare class Operations extends Operations_base {
|
|
22
|
-
static readonly find: (id: import("effect-app/Operations").OperationId) => import("effect/Effect").Effect<import("effect/Option").Option<Operation>, never, Operations
|
|
23
|
-
static readonly update: (id: import("effect-app/Operations").OperationId, progress: OperationProgress) => import("effect/Effect").Effect<void, never, Operations
|
|
24
|
-
static readonly register: import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Scope.Scope | Operations
|
|
25
|
-
static readonly cleanup: import("effect/Effect").Effect<void, never, Operations
|
|
26
|
-
}
|
|
27
|
-
export declare namespace Operations {
|
|
28
|
-
interface Id {
|
|
29
|
-
readonly _: unique symbol;
|
|
30
|
-
}
|
|
41
|
+
static readonly find: (id: import("effect-app/Operations").OperationId) => import("effect/Effect").Effect<import("effect/Option").Option<Operation>, never, Operations>;
|
|
42
|
+
static readonly update: (id: import("effect-app/Operations").OperationId, progress: OperationProgress) => import("effect/Effect").Effect<void, never, Operations>;
|
|
43
|
+
static readonly register: import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Scope.Scope | Operations>;
|
|
44
|
+
static readonly cleanup: import("effect/Effect").Effect<void, never, Operations>;
|
|
31
45
|
}
|
|
32
46
|
/**
|
|
33
47
|
* @tsplus getter effect/io/Effect forkOperation
|
|
34
48
|
* @tsplus location "@effect-app/infra/services/Operations/service"
|
|
35
49
|
*/
|
|
36
|
-
export declare function forkOperation<R, E, A>(self: Effect<A, E, R>): import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Operations
|
|
50
|
+
export declare function forkOperation<R, E, A>(self: Effect<A, E, R>): import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Operations | Exclude<R, Scope.Scope>>;
|
|
37
51
|
/**
|
|
38
52
|
* @tsplus getter function forkOperation
|
|
39
53
|
* @tsplus location "@effect-app/infra/services/Operations/service"
|
|
40
54
|
*/
|
|
41
|
-
export declare function forkOperationFunction<R, E, A, Inp>(fnc: (inp: Inp) => Effect<A, E, R>): (inp: Inp) => import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Operations
|
|
55
|
+
export declare function forkOperationFunction<R, E, A, Inp>(fnc: (inp: Inp) => Effect<A, E, R>): (inp: Inp) => import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Operations | Exclude<R, Scope.Scope>>;
|
|
42
56
|
/**
|
|
43
57
|
* @tsplus static effect/io/Effect.Ops forkOperation
|
|
44
58
|
* @tsplus location "@effect-app/infra/services/Operations/service"
|
|
45
59
|
*/
|
|
46
|
-
export declare function forkOperation2<R, E, A>(self: (opId: OperationId) => Effect<A, E, R>): import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Operations
|
|
60
|
+
export declare function forkOperation2<R, E, A>(self: (opId: OperationId) => Effect<A, E, R>): import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Operations | Exclude<R, Scope.Scope>>;
|
|
47
61
|
/**
|
|
48
62
|
* @tsplus static effect/io/Effect.Ops forkOperationWithEffect
|
|
49
63
|
* @tsplus location "@effect-app/infra/services/Operations/service"
|
|
50
64
|
*/
|
|
51
|
-
export declare function forkOperationWithEffect<R, R2, E, E2, A, A2>(self: (id: OperationId) => Effect<A, E, R>, fnc: (id: OperationId) => Effect<A2, E2, R2>): import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Operations
|
|
65
|
+
export declare function forkOperationWithEffect<R, R2, E, E2, A, A2>(self: (id: OperationId) => Effect<A, E, R>, fnc: (id: OperationId) => Effect<A2, E2, R2>): import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Operations | Exclude<R, Scope.Scope> | Exclude<R2, Scope.Scope>>;
|
|
52
66
|
export {};
|
|
53
67
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Operations/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Operations/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;;;kBAOzB,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;qBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;mBAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;iBAC3C,OAAO,IAAI,CAAC;;kBAHX,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;qBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;mBAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;iBAC3C,OAAO,IAAI,CAAC;;kBAHX,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;qBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;mBAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;iBAC3C,OAAO,IAAI,CAAC;;;kBAHX,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;qBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;mBAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;iBAC3C,OAAO,IAAI,CAAC;;;kBAHX,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;qBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;mBAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;iBAC3C,OAAO,IAAI,CAAC;;;AARvB;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAKH;IAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,oJAAqC;IACzD,MAAM,CAAC,QAAQ,CAAC,MAAM,4IAAuC;IAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,+GAAyC;IACjE,MAAM,CAAC,QAAQ,CAAC,OAAO,0DAAwC;CAChE;;;;;AAKD,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,4HAY3D;;;;;AAKD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SACvE,GAAG,8HACjB;;;;;AAKD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,4HAYnF;;;;;AAKD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EACzD,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1C,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,uJAc7C"}
|
|
@@ -8,7 +8,7 @@ import * as Scope from "effect/Scope";
|
|
|
8
8
|
* @tsplus type Operations
|
|
9
9
|
* @tsplus companion Operations.Ops
|
|
10
10
|
*/
|
|
11
|
-
export class Operations extends tsplus_module_1.
|
|
11
|
+
export class Operations extends tsplus_module_1.TagClassId()("effect-app/Operations") {
|
|
12
12
|
}
|
|
13
13
|
_a = Operations;
|
|
14
14
|
Operations.find = tsplus_module_2.serviceFunctions(_a).find;
|
|
@@ -49,4 +49,4 @@ export function forkOperationWithEffect(self, fnc) {
|
|
|
49
49
|
.tap((opId) => tsplus_module_3.forkDaemonReportRequestUnexpected(Scope.use(self(opId), scope)))
|
|
50
50
|
.tap((opId) => Scope.extend(tsplus_module_2.forkScoped(tsplus_module_2.interruptible(fnc(opId))), scope))));
|
|
51
51
|
}
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7YUFzQmdCLGFBQWE7QUFyQjdCLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBRXJDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsZ0JBQUEsVUFBVSxFQUt0QyxDQUFDLHVCQUF1QixDQUFDOzs7QUFDWCxlQUFJLEdBQUcsaUNBQXdCLEVBQUksQ0FBQyxDQUFDLElBQUksQUFBckMsQ0FBcUM7QUFDekMsaUJBQU0sR0FBRyxpQ0FBd0IsRUFBSSxDQUFDLENBQUMsTUFBTSxBQUF2QyxDQUF1QztBQUM3QyxtQkFBUSxHQUFHLGlDQUF3QixFQUFJLENBQUMsQ0FBQyxRQUFRLEFBQXpDLENBQXlDO0FBQ2pELGtCQUFPLEdBQUcsaUNBQXdCLEVBQUksQ0FBQyxDQUFDLE9BQU8sQUFBeEMsQ0FBd0M7QUFHakU7O0dBRUc7QUFDSCx5QkFBdUMsSUFBcUI7SUFDMUQsT0FBTyx3QkFBQSxVQUFVLEVBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLHdCQUFBLEtBQUs7U0FDRixJQUFJLEVBQUUsRUFDRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2pCLEFBM0JFLEtBQUssUUEyQlAsVUFBVTtTQUNQLFFBQVEsRUFDRCxLQUFLLENBQUM7U0FDYixHQUFHLENBQUMsR0FBRyxFQUFFLG1EQUFDLEFBOUJYLEtBQUssS0E4Qk0sSUFBSSxFQUFLLEtBQUssQ0FBQyxDQUFrQyxDQUFDLENBQ2hFLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBZSxHQUFrQztJQUNwRixPQUFPLENBQUMsR0FBUSxFQUFFLEVBQUUsaUJBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFjLENBQUE7QUFDN0MsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBVSxJQUE0QztJQUNsRixPQUFPLHdCQUFBLFVBQVUsRUFDZixDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2Isd0JBQUEsS0FBSztTQUNGLElBQUksRUFBRSxFQUNFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDakIsQUFuREUsS0FBSyxRQW1EUCxVQUFVO1NBQ1AsUUFBUSxFQUNELEtBQUssQ0FBQztTQUNiLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLG1EQUFDLEFBdERiLEtBQUssS0FzRFEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFLLEtBQUssQ0FBQyxDQUFrQyxDQUFDLENBQ3RFLENBQ04sQ0FBQTtBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsSUFBMEMsRUFDMUMsR0FBNEM7SUFFNUMsT0FBTyx3QkFBQSxVQUFVLEVBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLHdCQUFBLEtBQUs7U0FDRixJQUFJLEVBQUUsRUFDRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2pCLEFBdkVFLEtBQUssUUF1RVAsVUFBVTtTQUNQLFFBQVEsRUFDRCxLQUFLLENBQUM7U0FDYixHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxtREFBQyxBQTFFZixLQUFLLEtBMEVVLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBSyxLQUFLLENBQUMsQ0FBa0MsQ0FBQztTQUN0RSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEFBM0VmLEtBQUssaUVBMkVVLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBaUMsS0FBSyxDQUFDLENBQUMsQ0FDbkUsQ0FDTixDQUFBO0FBQ0gsQ0FBQyJ9
|