@effect-app/infra 0.13.0 → 0.14.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/api/codec.cjs +2 -4
- package/_cjs/api/codec.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +18 -21
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.cjs +4 -4
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
- package/_cjs/api/express/makeOpenApiSpecs.cjs +5 -7
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/express/schema/requestHandler.cjs +57 -56
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +22 -22
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +6 -17
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs +70 -70
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +2 -4
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +6 -8
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +11 -13
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +1 -1
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -3
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +6 -8
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +12 -18
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +4 -7
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +23 -26
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +3 -5
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +28 -30
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +58 -58
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +15 -16
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +14 -16
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +22 -23
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +1 -1
- package/_cjs/services/Store/index.cjs +7 -7
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +2 -4
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +16 -17
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +23 -25
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +20 -21
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +11 -13
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +20 -22
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +25 -25
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/shared.cjs +4 -6
- package/_cjs/services/simpledb/shared.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +16 -17
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/errors.ts +1 -1
- package/_src/services/simpledb/memdb.ts +1 -1
- package/dist/RequestContext.d.ts +12 -12
- package/dist/api/codec.js +3 -5
- package/dist/api/defaultErrorHandler.js +20 -21
- package/dist/api/express/makeJsonSchema.js +3 -5
- package/dist/api/express/makeOpenApiSpecs.js +5 -7
- package/dist/api/express/schema/requestHandler.d.ts +5 -5
- package/dist/api/express/schema/requestHandler.js +50 -52
- package/dist/api/express/schema/routing.js +21 -23
- package/dist/api/reportError.js +6 -18
- package/dist/api/routing.js +65 -67
- package/dist/api/setupRequest.js +3 -5
- package/dist/api/writeDocs.js +7 -9
- package/dist/errorReporter.js +10 -12
- package/dist/errors.js +2 -2
- package/dist/instrument.js +2 -4
- package/dist/rateLimit.js +7 -9
- package/dist/services/Emailer/Sendgrid.js +15 -22
- package/dist/services/Emailer/fake.js +5 -8
- package/dist/services/Emailer/service.d.ts +1 -1
- package/dist/services/Operations/live.js +24 -27
- package/dist/services/Operations/service.js +4 -6
- package/dist/services/Repository.d.ts +4 -4
- package/dist/services/Repository.js +22 -24
- package/dist/services/Store/Cosmos.d.ts +1 -1
- package/dist/services/Store/Cosmos.js +61 -63
- package/dist/services/Store/Disk.js +16 -19
- package/dist/services/Store/Memory.d.ts +1 -1
- package/dist/services/Store/Memory.js +16 -18
- package/dist/services/Store/Redis.d.ts +1 -1
- package/dist/services/Store/Redis.js +21 -24
- package/dist/services/Store/index.js +6 -8
- package/dist/services/Store/service.d.ts +1 -1
- package/dist/services/Store/service.js +3 -5
- package/dist/services/Store/utils.d.ts +2 -2
- package/dist/services/Store/utils.js +18 -19
- package/dist/services/simpledb/cosmosdb.d.ts +2 -2
- package/dist/services/simpledb/cosmosdb.js +23 -25
- package/dist/services/simpledb/diskdb.d.ts +2 -2
- package/dist/services/simpledb/diskdb.js +18 -18
- package/dist/services/simpledb/memdb.d.ts +3 -3
- package/dist/services/simpledb/memdb.js +13 -14
- package/dist/services/simpledb/mongodb.d.ts +2 -2
- package/dist/services/simpledb/mongodb.js +18 -20
- package/dist/services/simpledb/redisdb.d.ts +8 -8
- package/dist/services/simpledb/redisdb.js +21 -23
- package/dist/services/simpledb/shared.d.ts +9 -9
- package/dist/services/simpledb/shared.js +5 -7
- package/dist/services/simpledb/simpledb.d.ts +1 -1
- package/dist/services/simpledb/simpledb.js +19 -19
- package/package.json +12 -12
- package/tsconfig.json +5 -1
package/dist/api/routing.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import * as
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/routing.ts";
|
|
3
|
-
import * as tsplus_module_1 from "@fp-ts/data/Option";
|
|
1
|
+
import * as tsplus_module_1 from "@fp-ts/core/Option";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
3
|
import * as tsplus_module_3 from "@effect-app/core/Effect";
|
|
6
4
|
import * as tsplus_module_4 from "@effect-app/prelude/_ext/Schema.ext";
|
|
@@ -21,16 +19,16 @@ import { makeRouteDescriptor } from "./express/schema/routing.js";
|
|
|
21
19
|
import { reportRequestError } from "./reportError.js";
|
|
22
20
|
import { snipString, snipValue } from "./util.js";
|
|
23
21
|
export function makeRequestParsers(Request) {
|
|
24
|
-
const ph =
|
|
25
|
-
const parseHeaders = (u) =>
|
|
26
|
-
const pq =
|
|
27
|
-
const parseQuery = (u) =>
|
|
28
|
-
const pb =
|
|
29
|
-
const parseBody = (u) =>
|
|
30
|
-
const pp =
|
|
31
|
-
const parsePath = (u) =>
|
|
32
|
-
const pc =
|
|
33
|
-
const parseCookie = (u) =>
|
|
22
|
+
const ph = tsplus_module_2.sync(() => tsplus_module_1.map(MO.condemnFail)(tsplus_module_1.map(MO.Parser.for)(tsplus_module_1.map(s => s)(tsplus_module_1.fromNullable(Request.Headers)))));
|
|
23
|
+
const parseHeaders = (u) => tsplus_module_3.flatMapOpt(ph, d => d(u));
|
|
24
|
+
const pq = tsplus_module_2.sync(() => tsplus_module_1.map(MO.condemnFail)(tsplus_module_1.map(MO.Parser.for)(tsplus_module_1.map(s => s)(tsplus_module_1.fromNullable(Request.Query)))));
|
|
25
|
+
const parseQuery = (u) => tsplus_module_3.flatMapOpt(pq, d => d(u));
|
|
26
|
+
const pb = tsplus_module_2.sync(() => tsplus_module_1.map(MO.condemnFail)(tsplus_module_1.map(MO.Parser.for)(tsplus_module_1.map(s => s)(tsplus_module_1.fromNullable(Request.Body)))));
|
|
27
|
+
const parseBody = (u) => tsplus_module_3.flatMapOpt(pb, d => d(u));
|
|
28
|
+
const pp = tsplus_module_2.sync(() => tsplus_module_1.map(MO.condemnFail)(tsplus_module_1.map(MO.Parser.for)(tsplus_module_1.map(s => s)(tsplus_module_1.fromNullable(Request.Path)))));
|
|
29
|
+
const parsePath = (u) => tsplus_module_3.flatMapOpt(pp, d => d(u));
|
|
30
|
+
const pc = tsplus_module_2.sync(() => tsplus_module_1.map(MO.condemnFail)(tsplus_module_1.map(MO.Parser.for)(tsplus_module_1.map(s => s)(tsplus_module_1.fromNullable(Request.Cookie)))));
|
|
31
|
+
const parseCookie = (u) => tsplus_module_3.flatMapOpt(pc, d => d(u));
|
|
34
32
|
return {
|
|
35
33
|
parseBody,
|
|
36
34
|
parseCookie,
|
|
@@ -46,15 +44,15 @@ export function match(requestHandler, errorHandler, middleware) {
|
|
|
46
44
|
requestHandler = handler;
|
|
47
45
|
makeMiddlewareContext = makeContext;
|
|
48
46
|
}
|
|
49
|
-
return
|
|
47
|
+
return tsplus_module_2.zipRight(Ex.match(requestHandler.Request.method.toLowerCase())(requestHandler.Request.path.split("?")[0], makeRequestHandler(requestHandler, errorHandler, makeMiddlewareContext)), tsplus_module_2.sync(() => makeRouteDescriptor(requestHandler.Request.path, requestHandler.Request.method, requestHandler)));
|
|
50
48
|
}
|
|
51
49
|
export function respondSuccess(encodeResponse) {
|
|
52
|
-
return (req, res, a) =>
|
|
50
|
+
return (req, res, a) => tsplus_module_2.flatMap(tsplus_module_2.sync(() => encodeResponse(req)(a)), r => tsplus_module_2.sync(() => {
|
|
53
51
|
r === undefined
|
|
54
52
|
? res.status(204).send()
|
|
55
53
|
: res.status(200)
|
|
56
54
|
.send(JSON.stringify(r));
|
|
57
|
-
}))
|
|
55
|
+
}));
|
|
58
56
|
}
|
|
59
57
|
export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext) {
|
|
60
58
|
const { Request, Response, adaptResponse, h: handle } = handler;
|
|
@@ -67,7 +65,7 @@ export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext)
|
|
|
67
65
|
const parseRequest = parseRequestParams(requestParsers);
|
|
68
66
|
const respond = respondSuccess(encodeResponse);
|
|
69
67
|
function getParams(req) {
|
|
70
|
-
return
|
|
68
|
+
return tsplus_module_2.sync(() => ({
|
|
71
69
|
path: req.params,
|
|
72
70
|
query: req.query,
|
|
73
71
|
body: req.body,
|
|
@@ -85,7 +83,7 @@ export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext)
|
|
|
85
83
|
return prev;
|
|
86
84
|
}, {})
|
|
87
85
|
: req.cookies
|
|
88
|
-
}))
|
|
86
|
+
}));
|
|
89
87
|
}
|
|
90
88
|
function makeContext(req) {
|
|
91
89
|
const start = new Date();
|
|
@@ -119,7 +117,49 @@ export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext)
|
|
|
119
117
|
return requestContext;
|
|
120
118
|
}
|
|
121
119
|
return (req, res) => {
|
|
122
|
-
return
|
|
120
|
+
return tsplus_module_2.flatMap(tsplus_module_2.struct({
|
|
121
|
+
requestContext: tsplus_module_2.sync(() => {
|
|
122
|
+
const requestContext = makeContext(req);
|
|
123
|
+
if (req.method === "GET") {
|
|
124
|
+
res.setHeader("Cache-Control", "no-store");
|
|
125
|
+
}
|
|
126
|
+
res.setHeader("Content-Language", requestContext.locale);
|
|
127
|
+
return requestContext;
|
|
128
|
+
}),
|
|
129
|
+
pars: getParams(req)
|
|
130
|
+
}), ({ pars, requestContext }) => tsplus_module_9.setupRequest(tsplus_module_2.provideService(tsplus_module_2.tap(tsplus_module_2.tapErrorCause(tsplus_module_2.zipRight(tsplus_module_7.logAnnotates({
|
|
131
|
+
method: req.method,
|
|
132
|
+
path: req.originalUrl,
|
|
133
|
+
reqPath: tsplus_module_6.RecordPretty(tsplus_module_6.object$(pars.path)),
|
|
134
|
+
reqQuery: tsplus_module_6.RecordPretty(tsplus_module_6.object$(pars.query)),
|
|
135
|
+
reqBody: pretty(pars.body),
|
|
136
|
+
reqCookies: pretty(pars.cookies),
|
|
137
|
+
reqHeaders: tsplus_module_6.RecordPretty(tsplus_module_6.object$(pars.headers))
|
|
138
|
+
})(tsplus_module_2.logInfo("Processing request")), tsplus_module_2.suspendSucceed(() => {
|
|
139
|
+
const handleRequest = tsplus_module_2.flatMap(tsplus_module_2.map(parseRequest(req), ({ body, path, query }) => {
|
|
140
|
+
const hn = {
|
|
141
|
+
...tsplus_module_8.getOrUndefined(body),
|
|
142
|
+
...tsplus_module_8.getOrUndefined(query),
|
|
143
|
+
...tsplus_module_8.getOrUndefined(path)
|
|
144
|
+
};
|
|
145
|
+
return hn;
|
|
146
|
+
}), parsedReq => tsplus_module_2.flatMap(handle(parsedReq), r => respond(parsedReq, res, r)));
|
|
147
|
+
// Commands should not be interruptable.
|
|
148
|
+
const r = req.method !== "GET" ? tsplus_module_2.uninterruptible(handleRequest) : handleRequest; // .instrument("Performance.RequestResponse")
|
|
149
|
+
// the first log entry should be of the request start.
|
|
150
|
+
const r2 = makeMiddlewareContext
|
|
151
|
+
? tsplus_module_3.provideSomeContextEffect(makeMiddlewareContext(req, res, requestContext))(r)
|
|
152
|
+
// PR is not relevant here
|
|
153
|
+
: r;
|
|
154
|
+
return errorHandler(req, res, requestContext, r2);
|
|
155
|
+
})), cause => tsplus_module_2.tapErrorCause(tsplus_module_2.zipRight(tsplus_module_2.suspendSucceed(() => {
|
|
156
|
+
res.status(500).send();
|
|
157
|
+
return reportRequestError(cause, {
|
|
158
|
+
requestContext,
|
|
159
|
+
path: req.originalUrl,
|
|
160
|
+
method: req.method
|
|
161
|
+
});
|
|
162
|
+
}), tsplus_module_2.suspendSucceed(() => {
|
|
123
163
|
const headers = res.getHeaders();
|
|
124
164
|
return tsplus_module_7.logAnnotates({
|
|
125
165
|
method: req.method,
|
|
@@ -129,8 +169,8 @@ export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext)
|
|
|
129
169
|
prev[key] = value && typeof value === "string" ? snipString(value) : value;
|
|
130
170
|
return prev;
|
|
131
171
|
}, {})))
|
|
132
|
-
})(
|
|
133
|
-
}))
|
|
172
|
+
})(tsplus_module_2.logErrorCauseMessage("Processed request", cause));
|
|
173
|
+
})), cause => tsplus_module_2.sync(() => console.error("Error occurred while reporting error", cause)))), () => tsplus_module_2.suspendSucceed(() => {
|
|
134
174
|
const headers = res.getHeaders();
|
|
135
175
|
return tsplus_module_7.logAnnotates({
|
|
136
176
|
method: req.method,
|
|
@@ -140,51 +180,9 @@ export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext)
|
|
|
140
180
|
prev[key] = value && typeof value === "string" ? snipString(value) : value;
|
|
141
181
|
return prev;
|
|
142
182
|
}, {})))
|
|
143
|
-
})(
|
|
144
|
-
}))
|
|
145
|
-
|
|
146
|
-
return reportRequestError(cause, {
|
|
147
|
-
requestContext,
|
|
148
|
-
path: req.originalUrl,
|
|
149
|
-
method: req.method
|
|
150
|
-
});
|
|
151
|
-
}))))))(tracer_1.withCallTrace(fileName_1 + ":325:13")(tsplus_module_2.zipRight(tracer_1.withCallTrace(fileName_1 + ":326:18")(tsplus_module_2.suspendSucceed(() => {
|
|
152
|
-
const handleRequest = tracer_1.withCallTrace(fileName_1 + ":336:16")(tsplus_module_2.flatMap(parsedReq => tracer_1.withCallTrace(fileName_1 + ":338:20")(tsplus_module_2.flatMap(r => respond(parsedReq, res, r)))(handle(parsedReq))))(tracer_1.withCallTrace(fileName_1 + ":328:16")(tsplus_module_2.map(({ body, path, query }) => {
|
|
153
|
-
const hn = {
|
|
154
|
-
...tsplus_module_8.getOrUndefined(body),
|
|
155
|
-
...tsplus_module_8.getOrUndefined(query),
|
|
156
|
-
...tsplus_module_8.getOrUndefined(path)
|
|
157
|
-
};
|
|
158
|
-
return hn;
|
|
159
|
-
}))(parseRequest(req)));
|
|
160
|
-
// Commands should not be interruptable.
|
|
161
|
-
const r = req.method !== "GET" ? tsplus_module_2.uninterruptible(handleRequest) : handleRequest; // .instrument("Performance.RequestResponse")
|
|
162
|
-
// the first log entry should be of the request start.
|
|
163
|
-
const r2 = makeMiddlewareContext
|
|
164
|
-
? tsplus_module_3.provideSomeContextEffect(makeMiddlewareContext(req, res, requestContext))(r)
|
|
165
|
-
// PR is not relevant here
|
|
166
|
-
: r;
|
|
167
|
-
return errorHandler(req, res, requestContext, r2);
|
|
168
|
-
}))))(tsplus_module_7.logAnnotates({
|
|
169
|
-
method: req.method,
|
|
170
|
-
path: req.originalUrl,
|
|
171
|
-
reqPath: tsplus_module_6.RecordPretty(tsplus_module_6.object$(pars.path)),
|
|
172
|
-
reqQuery: tsplus_module_6.RecordPretty(tsplus_module_6.object$(pars.query)),
|
|
173
|
-
reqBody: pretty(pars.body),
|
|
174
|
-
reqCookies: pretty(pars.cookies),
|
|
175
|
-
reqHeaders: tsplus_module_6.RecordPretty(tsplus_module_6.object$(pars.headers))
|
|
176
|
-
})(tracer_1.withCallTrace(fileName_1 + ":317:16")(tsplus_module_2.logInfo("Processing request"))))))) // otherwise external error reporter breaks.
|
|
177
|
-
, requestContext)))(tracer_1.withCallTrace(fileName_1 + ":305:19")(tsplus_module_2.struct({
|
|
178
|
-
requestContext: tracer_1.withCallTrace(fileName_1 + ":306:23")(tsplus_module_2.sync(() => {
|
|
179
|
-
const requestContext = makeContext(req);
|
|
180
|
-
if (req.method === "GET") {
|
|
181
|
-
res.setHeader("Cache-Control", "no-store");
|
|
182
|
-
}
|
|
183
|
-
res.setHeader("Content-Language", requestContext.locale);
|
|
184
|
-
return requestContext;
|
|
185
|
-
})),
|
|
186
|
-
pars: getParams(req)
|
|
187
|
-
})));
|
|
183
|
+
})(tsplus_module_2.logInfo("Processed request"));
|
|
184
|
+
})), tsplus_module_5.tag, requestContext) // otherwise external error reporter breaks.
|
|
185
|
+
, requestContext));
|
|
188
186
|
};
|
|
189
187
|
}
|
|
190
188
|
/**
|
|
@@ -246,4 +244,4 @@ export function matchResource(mod) {
|
|
|
246
244
|
return handler;
|
|
247
245
|
};
|
|
248
246
|
}
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL3JvdXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUd4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBR2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFakQsTUFBTSxVQUFVLGtCQUFrQixDQVdoQyxPQVVZO0lBRVosTUFBTSxFQUFFLGlEQUFHLDJCQUNULG9CQUdPLEVBQUUsQ0FBQyxXQUFXLEVBSHJCLG9CQUVPLEFBeENDLEVBQUUsQ0F3Q0gsTUFBTSxDQUFDLEdBQUcsRUFGakIsb0JBQ08sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBRGIsNkJBQWlCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDbkIsQ0FDSSxDQUNJLENBQ3ZCLENBQUEsQ0FBQTtJQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBVSxFQUFFLEVBQUUsK0NBQUMsMkJBQUEsRUFBRSxFQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMs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
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL3JvdXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFHeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN2RSxPQUFPLEtBQUssRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUdsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRWhFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBRW5FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFBO0FBRXZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRWpELE1BQU0sVUFBVSxrQkFBa0IsQ0FXaEMsT0FVWTtJQUVaLE1BQU0sRUFBRSxHQUFHLDJCQUNULG9CQUdPLEVBQUUsQ0FBQyxXQUFXLEVBSHJCLG9CQUVPLEFBeENDLEVBQUUsQ0F3Q0gsTUFBTSxDQUFDLEdBQUcsRUFGakIsb0JBQ08sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBRGIsNkJBQWlCLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FDbkIsQ0FDSSxDQUNJLENBQ3ZCLENBQUE7SUFDRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsMkJBQUEsRUFBRSxFQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFD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
|
package/dist/api/setupRequest.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/setupRequest.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
2
|
import * as tsplus_module_2 from "@effect-app/prelude/_ext/Prelude.ext";
|
|
5
3
|
import * as tsplus_module_3 from "@effect-app/core/Function";
|
|
@@ -10,7 +8,7 @@ import "../RequestContext.js";
|
|
|
10
8
|
* @tsplus fluent effect/io/Effect setupRequest
|
|
11
9
|
*/
|
|
12
10
|
function setupRequest_1(self, requestContext) {
|
|
13
|
-
return tsplus_module_3.pipe(
|
|
11
|
+
return tsplus_module_3.pipe(tsplus_module_1.logSpan(self, "request"), tsplus_module_2.logAnnotates({
|
|
14
12
|
requestRootId: requestContext.rootId,
|
|
15
13
|
requestId: requestContext.id,
|
|
16
14
|
requestName: requestContext.name
|
|
@@ -20,6 +18,6 @@ function setupRequest_1(self, requestContext) {
|
|
|
20
18
|
* @tsplus getter effect/io/Effect setupRequestFrom
|
|
21
19
|
*/
|
|
22
20
|
export function setupRequestFrom(self) {
|
|
23
|
-
return
|
|
21
|
+
return tsplus_module_1.serviceWithEffect(tsplus_module_4.tag, requestContext => setupRequest_1(self, requestContext));
|
|
24
22
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBSZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vX3NyYy9hcGkvc2V0dXBSZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7YUFLZ0IsWUFBWTtBQUw1QixPQUErQixzQkFBc0IsQ0FBQTtBQUVyRDs7R0FFRztBQUNILHdCQUFzQyxJQUFxQixFQUFFLGNBQThCO0lBQ3pGLE9BQU8sZ0JBQUEsSUFBSSxDQUNULHdCQUFBLElBQUksRUFBUyxTQUFTLENBQUMsRUFDdkIsNkJBQW9CO1FBQ2xCLGFBQWEsRUFBRSxjQUFjLENBQUMsTUFBTTtRQUNwQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUU7UUFDNUIsV0FBVyxFQUFFLGNBQWMsQ0FBQyxJQUFJO0tBQ2pDLENBQUMsQ0FDSCxDQUFBO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFVLElBQXFCO0lBQzdELE9BQU8sdURBQW9DLGNBQWMsQ0FBQyxFQUFFLENBQUMsZUFBQSxJQUFJLEVBQWMsY0FBYyxDQUFDLENBQUMsQ0FBQTtBQUNqRyxDQUFDIn0=
|
package/dist/api/writeDocs.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/writeDocs.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
2
|
import * as tsplus_module_2 from "@effect-app/core/Order";
|
|
5
3
|
import * as tsplus_module_3 from "@effect-app/core/_ext/ord.ext";
|
|
@@ -9,15 +7,15 @@ import { writeTextFile } from "@effect-app/infra-adapters/fileUtil";
|
|
|
9
7
|
import * as Plutus from "@effect-app/infra-adapters/Openapi/atlas-plutus";
|
|
10
8
|
import { makeOpenApiSpecs } from "./express/makeOpenApiSpecs.js";
|
|
11
9
|
export function writeOpenapiDocs(rdescs) {
|
|
12
|
-
return
|
|
10
|
+
return tsplus_module_1.flatMap(tsplus_module_1.flatMap(tsplus_module_1.map(makeOpenApiSpecs(tsplus_module_4.sortWith(tsplus_module_3.OrdContramap((a) => a.path)(tsplus_module_2.string))(typedValuesOf(rdescs).reduce((prev, cur) => prev.concat(typedValuesOf(cur)), [])), Plutus.info({
|
|
11
|
+
title: "api",
|
|
12
|
+
version: "X",
|
|
13
|
+
pageTitle: "api"
|
|
14
|
+
})), _ => ({
|
|
13
15
|
..._,
|
|
14
16
|
tags: [
|
|
15
17
|
// add the tags here
|
|
16
18
|
]
|
|
17
|
-
}))
|
|
18
|
-
title: "api",
|
|
19
|
-
version: "X",
|
|
20
|
-
pageTitle: "api"
|
|
21
|
-
})))));
|
|
19
|
+
})), _ => tsplus_module_1.orDie(writeTextFile("./openapi.json", JSON.stringify(_, undefined, 2)))), () => tsplus_module_1.logInfo("OpenAPI spec written to './openapi.json'"));
|
|
22
20
|
}
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVEb2NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vX3NyYy9hcGkvd3JpdGVEb2NzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ25FLE9BQU8sS0FBSyxNQUFNLE1BQU0saURBQWlELENBQUE7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFHaEUsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQTBEO0lBQ3pGLE9BQU8sd0JBQUEsd0JBQUEsb0JBQUEsZ0JBQWdCLENBQ3JCLHlCQUNZLDZCQUF1QixDQUFDLENBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHlCQUFDLEVBRHJFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQW1DLENBQUMsQ0FDM0MsRUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNWLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUFFLEdBQUc7UUFDWixTQUFTLEVBQUUsS0FBSztLQUNqQixDQUFDLENBQ0gsRUFDTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDVCxHQUFHLENBQUM7UUFDSixJQUFJLEVBQUU7UUFDSixvQkFBb0I7U0FDckI7S0FDRixDQUFDLENBQUMsRUFDTSxDQUFDLENBQUMsRUFBRSx1QkFBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQU0sQ0FBQyxFQUM1RSxHQUFHLEVBQUUsQ0FBQyx3QkFBZSwwQ0FBMEMsQ0FBQyxDQUFDLENBQUE7QUFDOUUsQ0FBQyJ9
|
package/dist/errorReporter.js
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/errorReporter.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Cause";
|
|
4
2
|
import * as tsplus_module_2 from "@effect-app/prelude/utils";
|
|
5
3
|
import * as tsplus_module_3 from "@effect/io/Effect";
|
|
6
4
|
import * as Sentry from "@sentry/node";
|
|
7
5
|
export function reportError(makeError) {
|
|
8
|
-
return (cause, context) =>
|
|
6
|
+
return (cause, context) => tsplus_module_3.gen(function* ($) {
|
|
9
7
|
if (tsplus_module_1.isInterrupted(cause)) {
|
|
10
|
-
yield* $(
|
|
8
|
+
yield* $(tsplus_module_3.logDebug("Interrupted: " + (context ? tsplus_module_2.RecordPretty(tsplus_module_2.object$(context)) : "")));
|
|
11
9
|
return;
|
|
12
10
|
}
|
|
13
11
|
const error = makeError(cause);
|
|
14
12
|
const extras = { context, error: error.toJSON() };
|
|
15
13
|
reportSentry(error, extras);
|
|
16
|
-
yield* $(
|
|
17
|
-
})
|
|
14
|
+
yield* $(tsplus_module_3.logAnnotate(tsplus_module_3.logErrorCause(cause), "extras", JSON.stringify({ context, error: { _tag: error._tag, message: error.message } })));
|
|
15
|
+
});
|
|
18
16
|
}
|
|
19
17
|
function reportSentry(error, extras) {
|
|
20
18
|
const scope = new Sentry.Scope();
|
|
@@ -22,14 +20,14 @@ function reportSentry(error, extras) {
|
|
|
22
20
|
Sentry.captureException(error, scope);
|
|
23
21
|
}
|
|
24
22
|
export function logError(makeError) {
|
|
25
|
-
return (cause, context) =>
|
|
23
|
+
return (cause, context) => tsplus_module_3.gen(function* ($) {
|
|
26
24
|
if (tsplus_module_1.isInterrupted(cause)) {
|
|
27
|
-
yield* $(
|
|
25
|
+
yield* $(tsplus_module_3.logDebug("Interrupted: " + (context ? tsplus_module_2.RecordPretty(tsplus_module_2.object$(context)) : "")));
|
|
28
26
|
return;
|
|
29
27
|
}
|
|
30
28
|
const error = makeError(cause);
|
|
31
|
-
yield* $(
|
|
32
|
-
})
|
|
29
|
+
yield* $(tsplus_module_3.logAnnotate(tsplus_module_3.logWarningCause(cause), "extras", JSON.stringify({ context, error: { _tag: error._tag, message: error.message } })));
|
|
30
|
+
});
|
|
33
31
|
}
|
|
34
32
|
export function captureException(error) {
|
|
35
33
|
Sentry.captureException(error);
|
|
@@ -40,6 +38,6 @@ export function reportMessage(message) {
|
|
|
40
38
|
console.warn(message);
|
|
41
39
|
}
|
|
42
40
|
export function reportMessageM(message) {
|
|
43
|
-
return
|
|
41
|
+
return tsplus_module_3.sync(() => reportMessage(message));
|
|
44
42
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JSZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvZXJyb3JSZXBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUd0QyxNQUFNLFVBQVUsV0FBVyxDQUN6QixTQUFrQztJQUVsQyxPQUFPLENBQUMsS0FBZSxFQUFFLE9BQWlDLEVBQUUsRUFBRSxDQUM1RCxvQkFBVyxRQUFRLENBQUMsRUFBQyxDQUFDO1FBQ3BCLElBQUksOEJBQUEsS0FBSyxDQUFnQixFQUFFO1lBQ3pCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBZ0IsZUFBZSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsc0RBQUMsT0FBTyxHQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDL0UsT0FBTTtTQUNQO1FBQ0QsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQzlCLE1BQU0sTUFBTSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQTtRQUNqRCxZQUFZLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzNCLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDTiwwREFBQSxLQUFLLEdBQ0gsUUFBUSxFQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQ2pGLENBQ0YsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLEtBQWMsRUFBRSxNQUErQjtJQUNuRSxNQUFNLEtBQUssR0FBRyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUNoQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3ZCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3RCLFNBQWtDO0lBRWxDLE9BQU8sQ0FBQyxLQUFlLEVBQUUsT0FBaUMsRUFBRSxFQUFFLENBQzVELG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDcEIsSUFBSSw4QkFBQSxLQUFLLENBQWdCLEVBQUU7WUFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUFnQixlQUFlLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxzREFBQyxPQUFPLEdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMvRSxPQUFNO1NBQ1A7UUFDRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNOLDREQUFBLEtBQUssR0FDSCxRQUFRLEVBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FDakYsQ0FDRixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWM7SUFDN0MsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlCLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsT0FBZTtJQUMzQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRTlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7QUFDdkIsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBZTtJQUM1QyxPQUFPLDJCQUFPLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ3ZDLENBQUMifQ==
|
package/dist/errors.js
CHANGED
|
@@ -41,7 +41,7 @@ export class CauseException extends Error {
|
|
|
41
41
|
super(`An unexpected ${_tag} Exception occurred, see \`pretty\` for details.`);
|
|
42
42
|
this.exitCause = exitCause;
|
|
43
43
|
this._tag = _tag;
|
|
44
|
-
this.pretty = tsplus_module_1.pretty(
|
|
44
|
+
this.pretty = tsplus_module_1.pretty(exitCause);
|
|
45
45
|
}
|
|
46
46
|
toJSON() {
|
|
47
47
|
return {
|
|
@@ -62,4 +62,4 @@ export class OptimisticConcurrencyException {
|
|
|
62
62
|
this.message = `Existing ${type} ${id} record changed`;
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE1BQU0sT0FBTyxhQUFhO0lBR3hCLFlBQVksSUFBTyxFQUFFLEVBQVU7UUFGZixTQUFJLEdBQUcsZUFBZSxDQUFBO1FBR3BDLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxJQUFJLElBQUksRUFBRSxFQUFFLENBQUE7SUFDNUMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGVBQWU7SUFFMUIsWUFBNEIsTUFBOEI7UUFBOUIsV0FBTSxHQUFOLE1BQU0sQ0FBd0I7UUFEMUMsU0FBSSxHQUFHLGlCQUFpQixDQUFBO0lBQ3FCLENBQUM7Q0FDL0Q7QUFFRCxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBQ2tCLFNBQUksR0FBRyxrQkFBa0IsQ0FBQTtJQUMzQyxDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8saUJBQWlCO0lBQTlCO1FBQ2tCLFNBQUksR0FBRyxtQkFBbUIsQ0FBQTtJQUM1QyxDQUFDO0NBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsZ0JBQWdCO0lBQzlDLFlBQXFCLE9BQWU7UUFDbEMsS0FBSyxFQUFFLENBQUE7UUFEWSxZQUFPLEdBQVAsT0FBTyxDQUFRO0lBRXBDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFFNUIsWUFBNEIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFEM0IsU0FBSSxHQUFHLG1CQUFtQixDQUFBO0lBQ0ksQ0FBQztDQUNoRDtBQUVELE1BQU0sT0FBTyxjQUFrQixTQUFRLEtBQUs7SUFFMUMsWUFBcUIsU0FBbUIsRUFBVyxJQUFZO1FBQzdELEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxrREFBa0QsQ0FBQyxDQUFBO1FBRDNELGNBQVMsR0FBVCxTQUFTLENBQVU7UUFBVyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBRTdELElBQUksQ0FBQyxNQUFNLDBCQUFHLFNBQVMsQ0FBTyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsMkRBQTJEO1NBQzVELENBQUE7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sOEJBQThCO0lBR3pDLFlBQXFCLElBQVksRUFBVyxFQUFVLEVBQVcsT0FBZ0IsRUFBVyxLQUFjO1FBQXJGLFNBQUksR0FBSixJQUFJLENBQVE7UUFBVyxPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQVcsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUFXLFVBQUssR0FBTCxLQUFLLENBQVM7UUFGakcsU0FBSSxHQUFHLGdDQUFnQyxDQUFBO1FBRzlDLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxJQUFJLElBQUksRUFBRSxpQkFBaUIsQ0FBQTtJQUN4RCxDQUFDO0NBQ0YifQ==
|
package/dist/instrument.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/instrument.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect-app/prelude/utils";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
3
|
/**
|
|
6
4
|
* @tsplus fluent effect/io/Effect instrument
|
|
7
5
|
*/
|
|
8
6
|
export function instr(self, name, properties) {
|
|
9
|
-
return
|
|
7
|
+
return tsplus_module_2.logSpan(tsplus_module_2.tap(self, () => tsplus_module_2.logAnnotate(tsplus_module_2.logDebug(`instrumented`), "properties", tsplus_module_1.RecordPretty(tsplus_module_1.object$((properties || {}))))), name);
|
|
10
8
|
// trackMetric(name, time, properties))
|
|
11
9
|
}
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvaW5zdHJ1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FBVSxJQUFxQixFQUFFLElBQVksRUFBRSxVQUFtQztJQUNyRyxPQUFPLHdCQUFBLG9CQUFBLElBQUksRUFDSixHQUFHLEVBQUUsQ0FBQyw0QkFBQSx5QkFBZ0IsY0FBYyxDQUFDLEVBQWEsWUFBWSx1REFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsR0FBVyxDQUFDLEVBQzFGLElBQUksQ0FBQyxDQUFBO0lBQ2hCLHVDQUF1QztBQUN6QyxDQUFDIn0=
|
package/dist/rateLimit.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/rateLimit.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
|
-
import * as tsplus_module_2 from "@effect-app/core/
|
|
5
|
-
import * as tsplus_module_3 from "@effect-app/core/
|
|
2
|
+
import * as tsplus_module_2 from "@effect-app/core/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "@effect-app/core/Array";
|
|
6
4
|
// /**
|
|
7
5
|
// * Executes the specified effect, acquiring the specified number of permits
|
|
8
6
|
// * immediately before the effect begins execution and releasing them
|
|
@@ -38,7 +36,7 @@ import * as tsplus_module_3 from "@effect-app/core/Effect";
|
|
|
38
36
|
*/
|
|
39
37
|
export function SEM_withPermitsDuration(permits, duration) {
|
|
40
38
|
return (self) => {
|
|
41
|
-
return effect =>
|
|
39
|
+
return effect => tsplus_module_1.uninterruptibleMask(restore => tsplus_module_2.EffectZipRight(tsplus_module_1.ensuring(restore(effect), tsplus_module_1.delay(self.release(permits), duration)))(restore(self.take(permits))));
|
|
42
40
|
};
|
|
43
41
|
}
|
|
44
42
|
/**
|
|
@@ -46,14 +44,14 @@ export function SEM_withPermitsDuration(permits, duration) {
|
|
|
46
44
|
* @tsplus static Collection.Aspects batchNPar
|
|
47
45
|
*/
|
|
48
46
|
export function batchNPar(n, forEachItem, forEachBatch) {
|
|
49
|
-
return (items) =>
|
|
47
|
+
return (items) => tsplus_module_3.ext_forEachParWithIndex(tsplus_module_3.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(tsplus_module_1.forEachParWithIndex(_, (_, j) => forEachItem(_, j, i)), _ => forEachBatch(_, i)));
|
|
50
48
|
}
|
|
51
49
|
/**
|
|
52
50
|
* @tsplus pipeable Iterable batch
|
|
53
51
|
* @tsplus static Collection.Aspects batch
|
|
54
52
|
*/
|
|
55
53
|
export function batch(n, forEachItem, forEachBatch) {
|
|
56
|
-
return (items) =>
|
|
54
|
+
return (items) => tsplus_module_3.ext_forEachWithIndex(tsplus_module_3.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(tsplus_module_1.forEachParWithIndex(_, (_, j) => forEachItem(_, j, i)), _ => forEachBatch(_, i)));
|
|
57
55
|
}
|
|
58
56
|
// /**
|
|
59
57
|
// * @tsplus pipeable Iterable rateLimit
|
|
@@ -79,6 +77,6 @@ export function batch(n, forEachItem, forEachBatch) {
|
|
|
79
77
|
* @tsplus static Collection.Aspects naiveRateLimit
|
|
80
78
|
*/
|
|
81
79
|
export function naiveRateLimit(n, d) {
|
|
82
|
-
return (items) => ((forEachItem, forEachBatch) =>
|
|
80
|
+
return (items) => ((forEachItem, forEachBatch) => tsplus_module_3.ext_forEachWithIndex(tsplus_module_3.chunk_(items, n), (batch, i) => tsplus_module_1.zipRight(((i === 0) ? tsplus_module_2.unit : tsplus_module_1.delay(tsplus_module_2.unit, d)), tsplus_module_1.flatMap(tsplus_module_1.withParallelism(tsplus_module_3.ext_forEachEffectPar(batch, forEachItem), n), forEachBatch))));
|
|
83
81
|
}
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9yYXRlTGltaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTTtBQUNOLDhFQUE4RTtBQUM5RSx1RUFBdUU7QUFDdkUsbUZBQW1GO0FBQ25GLCtCQUErQjtBQUMvQixLQUFLO0FBQ0wsa0VBQWtFO0FBQ2xFLGdFQUFnRTtBQUNoRSxNQUFNO0FBQ04sd0VBQXdFO0FBQ3hFLDBGQUEwRjtBQUMxRix1QkFBdUI7QUFDdkIsb0NBQW9DO0FBQ3BDLHFCQUFxQjtBQUNyQixtREFBbUQ7QUFDbkQsZ0NBQWdDO0FBQ2hDLDJCQUEyQjtBQUMzQix5Q0FBeUM7QUFDekMsNEJBQTRCO0FBQzVCLHFDQUFxQztBQUNyQyxrQkFBa0I7QUFDbEIsVUFBVTtBQUNWLE1BQU07QUFDTixJQUFJO0FBRUo7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBZSxFQUFFLFFBQWE7SUFDcEUsT0FBTyxDQUFDLElBQWUsRUFBeUQsRUFBRTtRQUNoRixPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQ2Qsb0NBQ0UsT0FBTyxDQUFDLEVBQUUsZ0NBRUoseUJBQUEsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUViLHNCQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQ1osUUFBUSxDQUFDLENBQ25CLEVBTEwsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FLdEIsQ0FDUixDQUFBO0lBQ0wsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQ3ZCLENBQVMsRUFDVCxXQUEwRSxFQUMxRSxZQUE0RDtJQUU1RCxPQUFPLENBQUMsS0FBa0IsRUFBRSxFQUFFLENBQzVCLHdDQUFBLHVCQUFBLEtBQUssRUFBTyxDQUFDLENBQUMsRUFDZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNsQyx3QkFBQSxvQ0FBQSxDQUFDLEVBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDMUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQ3BDLENBQUE7QUFDUCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLEtBQUssQ0FDbkIsQ0FBUyxFQUNULFdBQStFLEVBQy9FLFlBQTREO0lBRTVELE9BQU8sQ0FBQyxLQUFrQixFQUFFLEVBQUUsQ0FDNUIscUNBQUEsdUJBQUEsS0FBSyxFQUFPLENBQUMsQ0FBQyxFQUNZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQy9CLHdCQUFBLG9DQUFBLENBQUMsRUFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUMxQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDcEMsQ0FBQTtBQUNQLENBQUM7QUFFRCxNQUFNO0FBQ04seUNBQXlDO0FBQ3pDLGlEQUFpRDtBQUNqRCxNQUFNO0FBQ04sNkJBQTZCO0FBQzdCLGVBQWU7QUFDZixXQUFXO0FBQ1gsTUFBTTtBQUNOLHNDQUFzQztBQUN0Qyw2QkFBNkI7QUFDN0IsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxXQUFXO0FBQ1gscUNBQXFDO0FBQ3JDLHNCQUFzQjtBQUN0Qix3Q0FBd0M7QUFDeEMsbUZBQW1GO0FBQ25GLHNCQUFzQjtBQUN0QixJQUFJO0FBRUo7OztHQUdHO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsQ0FBUyxFQUNULENBQU07SUFFTixPQUFPLENBQUksS0FBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNqQyxXQUFzQyxFQUN0QyxZQUFpRCxFQUNqRCxFQUFFLENBQ0YscUNBQUEsdUJBQUEsS0FBSyxFQUFPLENBQUMsQ0FBQyxFQUNZLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ25DLHlCQUFBLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBYSxDQUFDLENBQUMsNENBQWtCLENBQUMsQ0FBQyxDQUFDLEVBRTVDLHdCQUFBLGdDQUFBLHFDQUFBLEtBQUssRUFBa0IsV0FBVyxDQUFDLEVBQ2hCLENBQUMsQ0FBQyxFQUNWLFlBQVksQ0FBQyxDQUN6QixDQUNKLENBQUMsQ0FBQTtBQUNSLENBQUMifQ==
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/services/Emailer/Sendgrid.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Config/Secret";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
|
-
import * as tsplus_module_3 from "@
|
|
6
|
-
import * as tsplus_module_4 from "@
|
|
7
|
-
import * as tsplus_module_5 from "@effect-app/core/
|
|
8
|
-
import * as tsplus_module_6 from "@effect-app/core/Array";
|
|
3
|
+
import * as tsplus_module_3 from "@fp-ts/core/typeclass/Equivalence";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/core/_ext/ord.ext";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/core/Array";
|
|
9
6
|
import sgMail from "@sendgrid/mail";
|
|
10
7
|
import { inspect } from "util";
|
|
11
8
|
import { Emailer } from "./service.js";
|
|
12
|
-
const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) =>
|
|
9
|
+
const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) => tsplus_module_2.sync(() => {
|
|
13
10
|
sgMail.setApiKey(tsplus_module_1.value(apiKey));
|
|
14
11
|
return {
|
|
15
12
|
sendMail(msg_) {
|
|
16
|
-
return
|
|
13
|
+
return tsplus_module_2.gen(function* ($) {
|
|
17
14
|
const msg = { ...msg_, from: msg_.from ?? defaultFrom };
|
|
18
15
|
const render = renderMessage(!realMail);
|
|
19
16
|
const renderedMsg_ = render(msg);
|
|
20
17
|
const renderedMsg = { ...renderedMsg_, subject: `${subjectPrefix}${renderedMsg_.subject}` };
|
|
21
|
-
yield* $(
|
|
22
|
-
const ret = yield* $(
|
|
23
|
-
cb(
|
|
24
|
-
cb(
|
|
18
|
+
yield* $(tsplus_module_2.logAnnotate(tsplus_module_2.logDebug("Sending email"), "msg", inspect(renderedMsg, false, 5)));
|
|
19
|
+
const ret = yield* $(tsplus_module_2.async(cb => void sgMail.send(renderedMsg, false, (err, result) => err ?
|
|
20
|
+
cb(tsplus_module_2.fail(err)) :
|
|
21
|
+
cb(tsplus_module_2.sync(() => result)))));
|
|
25
22
|
// const event = {
|
|
26
23
|
// name: "EmailSent",
|
|
27
24
|
// properties: {
|
|
@@ -32,19 +29,15 @@ const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) => t
|
|
|
32
29
|
// const { trackEvent } = yield* $(AiContextService.access)
|
|
33
30
|
// trackEvent(event)
|
|
34
31
|
return ret;
|
|
35
|
-
})
|
|
32
|
+
});
|
|
36
33
|
}
|
|
37
34
|
};
|
|
38
|
-
})
|
|
39
|
-
/**
|
|
40
|
-
* @tsplus static Emailer.Ops LiveSendgrid
|
|
41
|
-
*/
|
|
42
|
-
);
|
|
35
|
+
});
|
|
43
36
|
/**
|
|
44
37
|
* @tsplus static Emailer.Ops LiveSendgrid
|
|
45
38
|
*/
|
|
46
39
|
export function LiveSendgrid(config) {
|
|
47
|
-
return
|
|
40
|
+
return tsplus_module_2.toLayer(tsplus_module_2.flatMap(tsplus_module_2.config(config), makeLiveSendgrid), Emailer);
|
|
48
41
|
}
|
|
49
42
|
/**
|
|
50
43
|
* @hidden
|
|
@@ -81,12 +74,12 @@ function renderFake(addr, makeId) {
|
|
|
81
74
|
email: `test+${makeId()}@nomizz.com`
|
|
82
75
|
};
|
|
83
76
|
}
|
|
84
|
-
const eq =
|
|
77
|
+
const eq = tsplus_module_3.contramap((to) => typeof to === "string" ? to.toLowerCase() : to.email.toLowerCase())(tsplus_module_3.string);
|
|
85
78
|
// TODO: should just not add any already added email address
|
|
86
79
|
// https://stackoverflow.com/a/53603076/11595834
|
|
87
80
|
function renderFakeIfTest(addr, makeId) {
|
|
88
81
|
return Array.isArray(addr)
|
|
89
|
-
?
|
|
82
|
+
? tsplus_module_5.iterableToArray(tsplus_module_4.uniqArray(eq)(addr
|
|
90
83
|
.map(x => (isTestAddress(x) ? renderFake(x, makeId) : x)))) : isTestAddress(addr)
|
|
91
84
|
? renderFake(addr, makeId)
|
|
92
85
|
: addr;
|
|
@@ -100,4 +93,4 @@ function renderMailData(md) {
|
|
|
100
93
|
}
|
|
101
94
|
return md.email;
|
|
102
95
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL0VtYWlsZXIvU2VuZGdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHdEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFrQixFQUFFLEVBQUUsQ0FDNUYscUJBQU8sR0FBRyxFQUFFO0lBQ1YsTUFBTSxDQUFDLFNBQVMsdUJBQUMsTUFBTSxFQUFPLENBQUE7SUFFOUIsT0FBTztRQUNMLFFBQVEsQ0FBQyxJQUEwQjtZQUNqQyxPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7Z0JBQzNCLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxFQUFFLENBQUE7Z0JBQ3ZELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUV2QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2hDLE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQUcsYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFBO2dCQUMzRixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQUEseUJBQWdCLGVBQWUsQ0FBQyxFQUFhLEtBQUssRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBRTdGLE1BQU0sR0FBRyxHQUFHLEtBQUss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
|