@effect-app/infra 0.24.3 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/_cjs/_ext/Array.cjs +2 -3
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/api/codec.cjs +1 -1
- package/_cjs/api/codec.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +17 -18
- 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 +2 -2
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/express/schema/requestHandler.cjs +45 -45
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +19 -19
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +2 -2
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs +54 -54
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +2 -2
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +6 -6
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +4 -4
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -1
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +8 -8
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +7 -8
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +4 -5
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +10 -10
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +3 -3
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +3 -3
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +10 -11
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +5 -5
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +21 -21
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +42 -42
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +20 -21
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +24 -24
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +14 -15
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +5 -5
- package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
- package/_cjs/services/Store/index.cjs +4 -4
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +4 -4
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +19 -19
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +18 -18
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +9 -9
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +16 -16
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +20 -20
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +9 -9
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/RequestContext.ts +2 -2
- package/_src/rateLimit.ts +4 -4
- package/dist/RequestContext.d.ts +2 -2
- package/dist/_ext/Array.js +3 -4
- package/dist/api/codec.js +2 -2
- package/dist/api/defaultErrorHandler.js +18 -18
- package/dist/api/express/makeJsonSchema.js +5 -5
- package/dist/api/express/makeOpenApiSpecs.js +2 -2
- package/dist/api/express/schema/requestHandler.js +41 -41
- package/dist/api/express/schema/routing.js +20 -20
- package/dist/api/reportError.js +4 -4
- package/dist/api/routing.js +63 -63
- package/dist/api/setupRequest.js +3 -3
- package/dist/api/writeDocs.js +7 -7
- package/dist/errorReporter.js +3 -3
- package/dist/instrument.js +2 -2
- package/dist/rateLimit.d.ts +3 -3
- package/dist/rateLimit.js +9 -9
- package/dist/services/Emailer/Sendgrid.js +8 -9
- package/dist/services/Emailer/fake.js +5 -6
- package/dist/services/Operations/live.js +12 -12
- package/dist/services/Operations/service.js +4 -4
- package/dist/services/QueueMaker/errors.js +4 -4
- package/dist/services/QueueMaker/memQueue.js +10 -10
- package/dist/services/QueueMaker/sbqueue.js +5 -5
- package/dist/services/Repository.d.ts +14 -14
- package/dist/services/Repository.js +15 -15
- package/dist/services/Store/Cosmos.js +44 -44
- package/dist/services/Store/Disk.js +22 -23
- package/dist/services/Store/Memory.js +26 -26
- package/dist/services/Store/Redis.js +15 -16
- package/dist/services/Store/index.js +5 -5
- package/dist/services/Store/utils.js +5 -5
- package/dist/services/simpledb/cosmosdb.js +19 -19
- package/dist/services/simpledb/diskdb.js +15 -15
- package/dist/services/simpledb/memdb.js +10 -10
- package/dist/services/simpledb/mongodb.js +15 -15
- package/dist/services/simpledb/redisdb.js +17 -17
- package/dist/services/simpledb/simpledb.js +12 -12
- package/package.json +8 -8
package/dist/api/routing.js
CHANGED
|
@@ -24,15 +24,15 @@ export const RequestSettings = tsplus_module_1.unsafeMake({
|
|
|
24
24
|
verbose: false
|
|
25
25
|
});
|
|
26
26
|
export function makeRequestParsers(Request) {
|
|
27
|
-
const ph = tsplus_module_3.sync(() => tsplus_module_2.map(
|
|
27
|
+
const ph = tsplus_module_3.sync(() => tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.fromNullable(Request.Headers), s => s), MO.Parser.for), MO.condemnFail));
|
|
28
28
|
const parseHeaders = (u) => tsplus_module_4.flatMapOption(ph, d => d(u));
|
|
29
|
-
const pq = tsplus_module_3.sync(() => tsplus_module_2.map(
|
|
29
|
+
const pq = tsplus_module_3.sync(() => tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.fromNullable(Request.Query), s => s), MO.Parser.for), MO.condemnFail));
|
|
30
30
|
const parseQuery = (u) => tsplus_module_4.flatMapOption(pq, d => d(u));
|
|
31
|
-
const pb = tsplus_module_3.sync(() => tsplus_module_2.map(
|
|
31
|
+
const pb = tsplus_module_3.sync(() => tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.fromNullable(Request.Body), s => s), MO.Parser.for), MO.condemnFail));
|
|
32
32
|
const parseBody = (u) => tsplus_module_4.flatMapOption(pb, d => d(u));
|
|
33
|
-
const pp = tsplus_module_3.sync(() => tsplus_module_2.map(
|
|
33
|
+
const pp = tsplus_module_3.sync(() => tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.fromNullable(Request.Path), s => s), MO.Parser.for), MO.condemnFail));
|
|
34
34
|
const parsePath = (u) => tsplus_module_4.flatMapOption(pp, d => d(u));
|
|
35
|
-
const pc = tsplus_module_3.sync(() => tsplus_module_2.map(
|
|
35
|
+
const pc = tsplus_module_3.sync(() => tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.map(tsplus_module_2.fromNullable(Request.Cookie), s => s), MO.Parser.for), MO.condemnFail));
|
|
36
36
|
const parseCookie = (u) => tsplus_module_4.flatMapOption(pc, d => d(u));
|
|
37
37
|
return {
|
|
38
38
|
parseBody,
|
|
@@ -49,15 +49,15 @@ export function match(requestHandler, errorHandler, middleware) {
|
|
|
49
49
|
requestHandler = handler;
|
|
50
50
|
makeMiddlewareContext = makeContext;
|
|
51
51
|
}
|
|
52
|
-
return tsplus_module_3.zipRight(
|
|
52
|
+
return tsplus_module_3.zipRight(Ex.match(requestHandler.Request.method.toLowerCase())(requestHandler.Request.path.split("?")[0], makeRequestHandler(requestHandler, errorHandler, makeMiddlewareContext)), tsplus_module_3.sync(() => makeRouteDescriptor(requestHandler.Request.path, requestHandler.Request.method, requestHandler)));
|
|
53
53
|
}
|
|
54
54
|
export function respondSuccess(encodeResponse) {
|
|
55
|
-
return (req, res, a) => tsplus_module_3.flatMap(r => tsplus_module_3.sync(() => {
|
|
55
|
+
return (req, res, a) => tsplus_module_3.flatMap(tsplus_module_3.sync(() => encodeResponse(req)(a)), r => tsplus_module_3.sync(() => {
|
|
56
56
|
r === undefined
|
|
57
57
|
? res.status(204).send()
|
|
58
58
|
: res.status(200)
|
|
59
59
|
.send(JSON.stringify(r));
|
|
60
|
-
}))
|
|
60
|
+
}));
|
|
61
61
|
}
|
|
62
62
|
export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext) {
|
|
63
63
|
const { Request, Response, adaptResponse, h: handle } = handler;
|
|
@@ -110,19 +110,46 @@ export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext)
|
|
|
110
110
|
return requestContext;
|
|
111
111
|
}
|
|
112
112
|
return (req, res) => {
|
|
113
|
-
return tsplus_module_11.untraced(restore => tsplus_module_3.flatMap(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
113
|
+
return tsplus_module_11.untraced(restore => tsplus_module_3.flatMap(tsplus_module_3.struct({
|
|
114
|
+
requestContext: tsplus_module_3.sync(() => {
|
|
115
|
+
const requestContext = makeContext(req);
|
|
116
|
+
if (req.method === "GET") {
|
|
117
|
+
res.setHeader("Cache-Control", "no-store");
|
|
118
|
+
}
|
|
119
|
+
res.setHeader("Content-Language", requestContext.locale);
|
|
120
|
+
return requestContext;
|
|
121
|
+
}),
|
|
122
|
+
pars: getParams(req)
|
|
123
|
+
}), ({ pars, requestContext }) => tsplus_module_10.setupRequest(tsplus_module_3.provideService(tsplus_module_3.tap(tsplus_module_3.tapErrorCause(tsplus_module_3.zipRight(tsplus_module_3.flatMap(tsplus_module_1.get(RequestSettings), s => tsplus_module_8.logAnnotates({
|
|
124
|
+
method: req.method,
|
|
125
|
+
path: req.originalUrl,
|
|
126
|
+
...s.verbose
|
|
127
|
+
? {
|
|
128
|
+
reqPath: tsplus_module_7.RecordPretty(tsplus_module_7.object$(pars.path)),
|
|
129
|
+
reqQuery: tsplus_module_7.RecordPretty(tsplus_module_7.object$(pars.query)),
|
|
130
|
+
reqBody: pretty(pars.body),
|
|
131
|
+
reqCookies: pretty(pars.cookies),
|
|
132
|
+
reqHeaders: tsplus_module_7.RecordPretty(tsplus_module_7.object$(pars.headers))
|
|
133
|
+
} :
|
|
134
|
+
undefined
|
|
135
|
+
})(tsplus_module_3.logInfo("Incoming request"))), tsplus_module_3.suspendSucceed(() => {
|
|
136
|
+
const handleRequest = tsplus_module_3.flatMap(tsplus_module_3.map(parseRequest(req), ({ body, path, query }) => {
|
|
137
|
+
const hn = {
|
|
138
|
+
...tsplus_module_9.getOrUndefined(body),
|
|
139
|
+
...tsplus_module_9.getOrUndefined(query),
|
|
140
|
+
...tsplus_module_9.getOrUndefined(path)
|
|
141
|
+
};
|
|
142
|
+
return hn;
|
|
143
|
+
}), parsedReq => tsplus_module_3.flatMap(restore(() => handle(parsedReq))(), r => respond(parsedReq, res, r)));
|
|
144
|
+
// Commands should not be interruptable.
|
|
145
|
+
const r = req.method !== "GET" ? tsplus_module_3.uninterruptible(handleRequest) : handleRequest; // .instrument("Performance.RequestResponse")
|
|
146
|
+
// the first log entry should be of the request start.
|
|
147
|
+
const r2 = makeMiddlewareContext
|
|
148
|
+
? tsplus_module_4.provideSomeContextEffect(makeMiddlewareContext(req, res, requestContext))(r)
|
|
149
|
+
// PR is not relevant here
|
|
150
|
+
: r;
|
|
151
|
+
return errorHandler(req, res, requestContext, r2);
|
|
152
|
+
})), cause => tsplus_module_3.tapErrorCause(tsplus_module_3.tuplePar(tsplus_module_3.sync(() => res.status(500).send()), reportRequestError(cause, {
|
|
126
153
|
requestContext,
|
|
127
154
|
path: req.originalUrl,
|
|
128
155
|
method: req.method
|
|
@@ -142,47 +169,20 @@ export function makeRequestHandler(handler, errorHandler, makeMiddlewareContext)
|
|
|
142
169
|
return prev;
|
|
143
170
|
}, {})))
|
|
144
171
|
})(tsplus_module_3.logErrorCauseMessage("Finished request", cause));
|
|
145
|
-
}))))(tsplus_module_3.
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
// PR is not relevant here
|
|
160
|
-
: r;
|
|
161
|
-
return errorHandler(req, res, requestContext, r2);
|
|
162
|
-
}))(tsplus_module_3.flatMap(s => tsplus_module_8.logAnnotates({
|
|
163
|
-
method: req.method,
|
|
164
|
-
path: req.originalUrl,
|
|
165
|
-
...s.verbose
|
|
166
|
-
? {
|
|
167
|
-
reqPath: tsplus_module_7.RecordPretty(tsplus_module_7.object$(pars.path)),
|
|
168
|
-
reqQuery: tsplus_module_7.RecordPretty(tsplus_module_7.object$(pars.query)),
|
|
169
|
-
reqBody: pretty(pars.body),
|
|
170
|
-
reqCookies: pretty(pars.cookies),
|
|
171
|
-
reqHeaders: tsplus_module_7.RecordPretty(tsplus_module_7.object$(pars.headers))
|
|
172
|
-
} :
|
|
173
|
-
undefined
|
|
174
|
-
})(tsplus_module_3.logInfo("Incoming request")))(tsplus_module_1.get(RequestSettings)))))) // otherwise external error reporter breaks.
|
|
175
|
-
, requestContext))(tsplus_module_3.struct({
|
|
176
|
-
requestContext: tsplus_module_3.sync(() => {
|
|
177
|
-
const requestContext = makeContext(req);
|
|
178
|
-
if (req.method === "GET") {
|
|
179
|
-
res.setHeader("Cache-Control", "no-store");
|
|
180
|
-
}
|
|
181
|
-
res.setHeader("Content-Language", requestContext.locale);
|
|
182
|
-
return requestContext;
|
|
183
|
-
}),
|
|
184
|
-
pars: getParams(req)
|
|
185
|
-
})));
|
|
172
|
+
})), cause => tsplus_module_3.sync(() => console.error("Error occurred while reporting error", cause)))), () => tsplus_module_3.flatMap(tsplus_module_1.get(RequestSettings), s => {
|
|
173
|
+
const headers = res.getHeaders();
|
|
174
|
+
return tsplus_module_8.logAnnotates({
|
|
175
|
+
method: req.method,
|
|
176
|
+
path: req.originalUrl,
|
|
177
|
+
statusCode: res.statusCode.toString(),
|
|
178
|
+
...s.verbose
|
|
179
|
+
? {
|
|
180
|
+
resHeaders: tsplus_module_7.RecordPretty(tsplus_module_7.object$(headers))
|
|
181
|
+
} :
|
|
182
|
+
undefined
|
|
183
|
+
})(tsplus_module_3.logInfo("Finished request"));
|
|
184
|
+
})), tsplus_module_6.tag, requestContext) // otherwise external error reporter breaks.
|
|
185
|
+
, requestContext)));
|
|
186
186
|
};
|
|
187
187
|
}
|
|
188
188
|
/**
|
|
@@ -244,4 +244,4 @@ export function matchResource(mod) {
|
|
|
244
244
|
return handler;
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL3JvdXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUd4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBR2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsMkJBQW9CO0lBQ2pELE9BQU8sRUFBRSxLQUFLO0NBQ2YsQ0FBQyxDQUFBO0FBRUYsTUFBTSxVQUFVLGtCQUFrQixDQVdoQyxPQVVZO0lBRVosTUFBTSxFQUFFLEdBQUcsMkJBQ1Qsb0JBR08sRUFBRSxDQUFDLFdBQVcsRUFIckIsb0JBRU8sQUE1Q0MsRUFBRSxDQTRDSCxNQUFNLENBQUMsR0FBRyxFQUZqQixvQkFDTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFEYiw2QkFBb0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUN0QixDQUNJLENBQ0ksQ0FDdkIsQ0FBQTtJQUNELE1BQU0sWUFBWSxHQUFHLENBQUMs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
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL3JvdXRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUd4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ3ZFLE9BQU8sS0FBSyxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBR2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFaEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFFdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsMkJBQW9CO0lBQ2pELE9BQU8sRUFBRSxLQUFLO0NBQ2YsQ0FBQyxDQUFBO0FBRUYsTUFBTSxVQUFVLGtCQUFrQixDQVdoQyxPQVVZO0lBRVosTUFBTSxFQUFFLEdBQUcsMkJBQ1Qsb0JBQUEsb0JBQUEsb0JBQUEsNkJBQW9CLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFDN0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDUCxBQTVDQyxFQUFFLENBNENILE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFDWCxFQUFFLENBQUMsV0FBVyxDQUFDLENBQ3ZCLENBQUE7SUFDRCxNQUFNLFlBQVksR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsOEJBQUEsRUFBRSxFQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFN0QsTUFBTSxFQUFFLEdBQUcsMkJBQ1Qsb0JBQUEsb0JBQUEsb0JBQUEsNkJBQW9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFDM0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDUCxBQXBEQyxFQUFFLENBb0RILE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFDWCxFQUFFLENBQUMsV0FBVyxDQUFDLENBQ3ZCLENBQUE7SUFDRCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsOEJBQUEsRUFBRSxFQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFM0QsTUFBTSxFQUFFLEdBQUcsMkJBQ1Qsb0JBQUEsb0JBQUEsb0JBQUEsNkJBQW9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDUCxBQTVEQyxFQUFFLENBNERILE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFDWCxFQUFFLENBQUMsV0FBVyxDQUFDLENBQ3ZCLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsOEJBQUEsRUFBRSxFQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFMUQsTUFBTSxFQUFFLEdBQUcsMkJBQ1Qsb0JBQUEsb0JBQUEsb0JBQUEsNkJBQW9CLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDMUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDUCxBQXBFQyxFQUFFLENBb0VILE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFDWCxFQUFFLENBQUMsV0FBVyxDQUFDLENBQ3ZCLENBQUE7SUFDRCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxF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
|
package/dist/api/setupRequest.js
CHANGED
|
@@ -11,7 +11,7 @@ import { RequestContext } from "../RequestContext.js";
|
|
|
11
11
|
* @tsplus fluent effect/io/Effect setupRequest
|
|
12
12
|
*/
|
|
13
13
|
function setupRequest_1(self, requestContext) {
|
|
14
|
-
return tsplus_module_4.untraced(() => tsplus_module_3.pipe(tsplus_module_1.logSpan("request")
|
|
14
|
+
return tsplus_module_4.untraced(() => tsplus_module_3.pipe(tsplus_module_1.logSpan(self, "request"), tsplus_module_2.logAnnotates({
|
|
15
15
|
requestRootId: requestContext.rootId,
|
|
16
16
|
requestId: requestContext.id,
|
|
17
17
|
requestName: requestContext.name
|
|
@@ -27,7 +27,7 @@ function setupRequestFrom_1(self) {
|
|
|
27
27
|
* @tsplus fluent effect/io/Effect setupRequestFromWith
|
|
28
28
|
*/
|
|
29
29
|
export function setupReq3(self, name) {
|
|
30
|
-
return tsplus_module_4.untraced(() => tsplus_module_1.provideService(tsplus_module_5.tag, makeInternalRequestContext(name))
|
|
30
|
+
return tsplus_module_4.untraced(() => tsplus_module_1.provideService(setupRequestFrom_1(self), tsplus_module_5.tag, makeInternalRequestContext(name)));
|
|
31
31
|
}
|
|
32
32
|
function makeInternalRequestContext(name) {
|
|
33
33
|
const id = tsplus_module_6.StringId.make();
|
|
@@ -38,4 +38,4 @@ function makeInternalRequestContext(name) {
|
|
|
38
38
|
name: tsplus_module_6.ReasonableString(name)
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBSZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vX3NyYy9hcGkvc2V0dXBSZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OzthQUtnQixZQUFZO2FBZ0JaLGdCQUFnQjtBQXJCaEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXJEOztHQUVHO0FBQ0gsd0JBQXNDLElBQXFCLEVBQUUsY0FBOEI7SUFDekYsT0FBTyx5QkFBZSxHQUFHLEVBQUUsQ0FDekIsZ0JBQUEsSUFBSSxDQUNGLHdCQUFBLElBQUksRUFBUyxTQUFTLENBQUMsRUFDdkIsNkJBQW9CO1FBQ2xCLGFBQWEsRUFBRSxjQUFjLENBQUMsTUFBTTtRQUNwQyxTQUFTLEVBQUUsY0FBYyxDQUFDLEVBQUU7UUFDNUIsV0FBVyxFQUFFLGNBQWMsQ0FBQyxJQUFJO0tBQ2pDLENBQUMsQ0FDSCxDQUNGLENBQUE7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCw0QkFBMEMsSUFBcUI7SUFDN0QsT0FBTyx5QkFBZSxHQUFHLEVBQUUsQ0FBQyx1REFBb0MsY0FBYyxDQUFDLEVBQUUsQ0FBQyxlQUFBLElBQUksRUFBYyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdkgsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBVSxJQUFxQixFQUFFLElBQVk7SUFDcEUsT0FBTyx5QkFBZSxHQUFHLEVBQUUsQ0FDekIsa0RBQUEsSUFBSSx3QkFFa0MsMEJBQTBCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDeEUsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFTLDBCQUEwQixDQUFDLElBQVk7SUFDOUMsTUFBTSxFQUFFLEdBQUcsZ0JBQUEsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzFCLE9BQU8sSUFBSSxjQUFjLENBQUM7UUFDeEIsRUFBRTtRQUNGLE1BQU0sRUFBRSxFQUFFO1FBQ1YsTUFBTSxFQUFFLElBQUk7UUFDWixJQUFJLEVBQUUsZ0JBQUEsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO0tBQzdCLENBQUMsQ0FBQTtBQUNKLENBQUMifQ==
|
package/dist/api/writeDocs.js
CHANGED
|
@@ -7,15 +7,15 @@ import { writeTextFile } from "@effect-app/infra-adapters/fileUtil";
|
|
|
7
7
|
import * as Plutus from "@effect-app/infra-adapters/Openapi/atlas-plutus";
|
|
8
8
|
import { makeOpenApiSpecs } from "./express/makeOpenApiSpecs.js";
|
|
9
9
|
export function writeOpenapiDocs(rdescs) {
|
|
10
|
-
return tsplus_module_1.flatMap(() =>
|
|
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
|
+
})), _ => ({
|
|
11
15
|
..._,
|
|
12
16
|
tags: [
|
|
13
17
|
// add the tags here
|
|
14
18
|
]
|
|
15
|
-
}))(
|
|
16
|
-
title: "api",
|
|
17
|
-
version: "X",
|
|
18
|
-
pageTitle: "api"
|
|
19
|
-
})))));
|
|
19
|
+
})), _ => tsplus_module_1.orDie(writeTextFile("./openapi.json", JSON.stringify(_, undefined, 2)))), () => tsplus_module_1.logInfo("OpenAPI spec written to './openapi.json'"));
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGVEb2NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vX3NyYy9hcGkvd3JpdGVEb2NzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ25FLE9BQU8sS0FBSyxNQUFNLE1BQU0saURBQWlELENBQUE7QUFDekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFHaEUsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE1BQTBEO0lBQ3pGLE9BQU8sd0JBQUEsd0JBQUEsb0JBQUEsZ0JBQWdCLENBQ3JCLHlCQUNZLDZCQUF1QixDQUFDLENBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHlCQUFDLEVBRHJFLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQW1DLENBQUMsQ0FDM0MsRUFDdEUsTUFBTSxDQUFDLElBQUksQ0FBQztRQUNWLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUFFLEdBQUc7UUFDWixTQUFTLEVBQUUsS0FBSztLQUNqQixDQUFDLENBQ0gsRUFDTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDVCxHQUFHLENBQUM7UUFDSixJQUFJLEVBQUU7UUFDSixvQkFBb0I7U0FDckI7S0FDRixDQUFDLENBQUMsRUFDTSxDQUFDLENBQUMsRUFBRSx1QkFBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQU0sQ0FBQyxFQUM1RSxHQUFHLEVBQUUsQ0FBQyx3QkFBZSwwQ0FBMEMsQ0FBQyxDQUFDLENBQUE7QUFDOUUsQ0FBQyJ9
|
package/dist/errorReporter.js
CHANGED
|
@@ -12,7 +12,7 @@ export function reportError(makeError) {
|
|
|
12
12
|
const error = makeError(cause);
|
|
13
13
|
const extras = { context, error: error.toJSON() };
|
|
14
14
|
reportSentry(error, extras);
|
|
15
|
-
yield* $(tsplus_module_3.logAnnotate("extras", JSON.stringify({ context, error: { _tag: error._tag, message: error.message } }))
|
|
15
|
+
yield* $(tsplus_module_3.logAnnotate(tsplus_module_3.logErrorCause(cause), "extras", JSON.stringify({ context, error: { _tag: error._tag, message: error.message } })));
|
|
16
16
|
}));
|
|
17
17
|
}
|
|
18
18
|
function reportSentry(error, extras) {
|
|
@@ -27,7 +27,7 @@ export function logError(makeError) {
|
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
29
|
const error = makeError(cause);
|
|
30
|
-
yield* $(tsplus_module_3.logAnnotate("extras", JSON.stringify({ context, error: { _tag: error._tag, message: error.message } }))
|
|
30
|
+
yield* $(tsplus_module_3.logAnnotate(tsplus_module_3.logWarningCause(cause), "extras", JSON.stringify({ context, error: { _tag: error._tag, message: error.message } })));
|
|
31
31
|
}));
|
|
32
32
|
}
|
|
33
33
|
export function captureException(error) {
|
|
@@ -41,4 +41,4 @@ export function reportMessage(message) {
|
|
|
41
41
|
export function reportMessageM(message) {
|
|
42
42
|
return tsplus_module_3.sync(() => reportMessage(message));
|
|
43
43
|
}
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JSZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvZXJyb3JSZXBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFHdEMsTUFBTSxVQUFVLFdBQVcsQ0FDekIsU0FBa0M7SUFFbEMsT0FBTyxDQUFDLEtBQWUsRUFBRSxPQUFpQyxFQUFFLEVBQUUsQ0FDNUQseUJBQWUsR0FBRyxFQUFFLENBQ2xCLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDcEIsSUFBSSw4QkFBQSxLQUFLLENBQWdCLEVBQUU7WUFDekIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUFnQixlQUFlLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxzREFBQyxPQUFPLEdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUMvRSxPQUFNO1NBQ1A7UUFDRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDOUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFBO1FBQ2pELFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDM0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNOLDBEQUFBLEtBQUssR0FDSCxRQUFRLEVBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FDakYsQ0FDRixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtBQUNMLENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxLQUFjLEVBQUUsTUFBK0I7SUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDaEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN2QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3ZDLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUN0QixTQUFrQztJQUVsQyxPQUFPLENBQUMsS0FBZSxFQUFFLE9BQWlDLEVBQUUsRUFBRSxDQUM1RCx5QkFBZSxHQUFHLEVBQUUsQ0FDbEIsb0JBQVcsUUFBUSxDQUFDLEVBQUMsQ0FBQztRQUNwQixJQUFJLDhCQUFBLEtBQUssQ0FBZ0IsRUFBRTtZQUN6QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQWdCLGVBQWUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLHNEQUFDLE9BQU8sR0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQy9FLE9BQU07U0FDUDtRQUNELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM5QixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ04sNERBQUEsS0FBSyxHQUNILFFBQVEsRUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUNqRixDQUNGLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxLQUFjO0lBQzdDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ3RCLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE9BQWU7SUFDM0MsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUU5QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE9BQWU7SUFDNUMsT0FBTywyQkFBTyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUN2QyxDQUFDIn0=
|
package/dist/instrument.js
CHANGED
|
@@ -5,7 +5,7 @@ import * as tsplus_module_3 from "@effect/io/Debug";
|
|
|
5
5
|
* @tsplus fluent effect/io/Effect instrument
|
|
6
6
|
*/
|
|
7
7
|
export function instr(self, name, properties) {
|
|
8
|
-
return tsplus_module_3.untraced(() => tsplus_module_2.logSpan(
|
|
8
|
+
return tsplus_module_3.untraced(() => 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));
|
|
9
9
|
// trackMetric(name, time, properties))
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1bWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL19zcmMvaW5zdHJ1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQU0sVUFBVSxLQUFLLENBQVUsSUFBcUIsRUFBRSxJQUFZLEVBQUUsVUFBbUM7SUFDckcsT0FBTyx5QkFBZSxHQUFHLEVBQUUsQ0FDekIsd0JBQUEsb0JBQUEsSUFBSSxFQUNHLEdBQUcsRUFBRSxDQUFDLDRCQUFBLHlCQUFnQixjQUFjLENBQUMsRUFBYSxZQUFZLHVEQUFFLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxHQUFXLENBQUMsRUFDMUYsSUFBSSxDQUFDLENBQ2pCLENBQUE7SUFDRCx1Q0FBdUM7QUFDekMsQ0FBQyJ9
|
package/dist/rateLimit.d.ts
CHANGED
|
@@ -13,19 +13,19 @@ import { NonEmptyChunk, Chunk } from "@effect/data/Chunk";
|
|
|
13
13
|
export declare function SEM_withPermitsDuration(permits: number, duration: Duration): (self: Semaphore) => <R, E, A>(effect: import("@effect/io/Effect").Effect<R, E, A>) => import("@effect/io/Effect").Effect<R, E, A>;
|
|
14
14
|
/**
|
|
15
15
|
* @tsplus pipeable Iterable batchPar
|
|
16
|
-
* @tsplus static Collection.
|
|
16
|
+
* @tsplus static Collection.Ops batchPar
|
|
17
17
|
* @tsplus location "@effect-app/infra/rateLimit"
|
|
18
18
|
*/
|
|
19
19
|
export declare function batchPar<R, E, A, R2, E2, A2, T>(n: number, forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<R, E, A>, forEachBatch: (a: NonEmptyChunk<A>, i: number) => Effect<R2, E2, A2>): (items: Iterable<T>) => import("@effect/io/Effect").Effect<R | R2, E | E2, import("@effect/data/Chunk").Chunk<A2>>;
|
|
20
20
|
/**
|
|
21
21
|
* @tsplus pipeable Iterable batch
|
|
22
|
-
* @tsplus static Collection.
|
|
22
|
+
* @tsplus static Collection.Ops batch
|
|
23
23
|
* @tsplus location "@effect-app/infra/rateLimit"
|
|
24
24
|
*/
|
|
25
25
|
export declare function batch<R, E, A, R2, E2, A2, T>(n: number, forEachItem: (item: T, iWithinBatch: number, batchI: number) => Effect<R, E, A>, forEachBatch: (a: NonEmptyChunk<A>, i: number) => Effect<R2, E2, A2>): (items: Iterable<T>) => import("@effect/io/Effect").Effect<R | R2, E | E2, import("@effect/data/Chunk").Chunk<A2>>;
|
|
26
26
|
/**
|
|
27
27
|
* @tsplus pipeable Iterable naiveRateLimit
|
|
28
|
-
* @tsplus static Collection.
|
|
28
|
+
* @tsplus static Collection.Ops naiveRateLimit
|
|
29
29
|
* @tsplus location "@effect-app/infra/rateLimit"
|
|
30
30
|
*/
|
|
31
31
|
export declare function naiveRateLimit(n: number, d: DUR): <T>(items: Iterable<T>) => <R, E, A, R2, E2, A2>(forEachItem: (i: T) => import("@effect/io/Effect").Effect<R, E, A>, forEachBatch: (a: import("@effect/data/Chunk").Chunk<A>) => import("@effect/io/Effect").Effect<R2, E2, A2>) => import("@effect/io/Effect").Effect<R | R2, E | E2, import("@effect/data/Chunk").Chunk<A2>>;
|
package/dist/rateLimit.js
CHANGED
|
@@ -36,26 +36,26 @@ import * as tsplus_module_3 from "@effect-app/core/Effect";
|
|
|
36
36
|
*/
|
|
37
37
|
export function SEM_withPermitsDuration(permits, duration) {
|
|
38
38
|
return (self) => {
|
|
39
|
-
return effect => tsplus_module_1.uninterruptibleMask(restore => tsplus_module_1.zipRight(tsplus_module_1.ensuring(tsplus_module_1.delay(
|
|
39
|
+
return effect => tsplus_module_1.uninterruptibleMask(restore => tsplus_module_1.zipRight(tsplus_module_1.ensuring(restore(effect), tsplus_module_1.delay(self.release(permits), duration)))(restore(self.take(permits))));
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* @tsplus pipeable Iterable batchPar
|
|
44
|
-
* @tsplus static Collection.
|
|
44
|
+
* @tsplus static Collection.Ops batchPar
|
|
45
45
|
*/
|
|
46
46
|
export function batchPar(n, forEachItem, forEachBatch) {
|
|
47
|
-
return (items) => tsplus_module_2.ext_forEachParWithIndex(tsplus_module_2.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(
|
|
47
|
+
return (items) => tsplus_module_2.ext_forEachParWithIndex(tsplus_module_2.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(tsplus_module_1.forEachParWithIndex(_, (_, j) => forEachItem(_, j, i)), _ => forEachBatch(_, i)));
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* @tsplus pipeable Iterable batch
|
|
51
|
-
* @tsplus static Collection.
|
|
51
|
+
* @tsplus static Collection.Ops batch
|
|
52
52
|
*/
|
|
53
53
|
export function batch(n, forEachItem, forEachBatch) {
|
|
54
|
-
return (items) => tsplus_module_2.ext_forEachWithIndex(tsplus_module_2.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(
|
|
54
|
+
return (items) => tsplus_module_2.ext_forEachWithIndex(tsplus_module_2.chunk_(items, n), (_, i) => tsplus_module_1.flatMap(tsplus_module_1.forEachParWithIndex(_, (_, j) => forEachItem(_, j, i)), _ => forEachBatch(_, i)));
|
|
55
55
|
}
|
|
56
56
|
// /**
|
|
57
57
|
// * @tsplus pipeable Iterable rateLimit
|
|
58
|
-
// * @tsplus static Collection.
|
|
58
|
+
// * @tsplus static Collection.Ops rateLimit
|
|
59
59
|
// */
|
|
60
60
|
// export function rateLimit(
|
|
61
61
|
// n: number,
|
|
@@ -74,9 +74,9 @@ export function batch(n, forEachItem, forEachBatch) {
|
|
|
74
74
|
// }
|
|
75
75
|
/**
|
|
76
76
|
* @tsplus pipeable Iterable naiveRateLimit
|
|
77
|
-
* @tsplus static Collection.
|
|
77
|
+
* @tsplus static Collection.Ops naiveRateLimit
|
|
78
78
|
*/
|
|
79
79
|
export function naiveRateLimit(n, d) {
|
|
80
|
-
return (items) => ((forEachItem, forEachBatch) => tsplus_module_2.ext_forEachWithIndex(tsplus_module_2.chunk_(items, n), (batch, i) => tsplus_module_1.zipRight(
|
|
80
|
+
return (items) => ((forEachItem, forEachBatch) => tsplus_module_2.ext_forEachWithIndex(tsplus_module_2.chunk_(items, n), (batch, i) => tsplus_module_1.zipRight(((i === 0) ? tsplus_module_3.unit : tsplus_module_1.delay(tsplus_module_3.unit, d)), tsplus_module_1.flatMap(tsplus_module_1.withParallelism(tsplus_module_2.ext_forEachEffectPar(batch, forEachItem), n), forEachBatch))));
|
|
81
81
|
}
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF0ZUxpbWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vX3NyYy9yYXRlTGltaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsTUFBTTtBQUNOLDhFQUE4RTtBQUM5RSx1RUFBdUU7QUFDdkUsbUZBQW1GO0FBQ25GLCtCQUErQjtBQUMvQixLQUFLO0FBQ0wsa0VBQWtFO0FBQ2xFLGdFQUFnRTtBQUNoRSxNQUFNO0FBQ04sNkVBQTZFO0FBQzdFLDBGQUEwRjtBQUMxRix1QkFBdUI7QUFDdkIsb0NBQW9DO0FBQ3BDLHFCQUFxQjtBQUNyQixtREFBbUQ7QUFDbkQsZ0NBQWdDO0FBQ2hDLDJCQUEyQjtBQUMzQix5Q0FBeUM7QUFDekMsNEJBQTRCO0FBQzVCLHFDQUFxQztBQUNyQyxrQkFBa0I7QUFDbEIsVUFBVTtBQUNWLE1BQU07QUFDTixJQUFJO0FBRUo7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsT0FBZSxFQUFFLFFBQWtCO0lBQ3pFLE9BQU8sQ0FBQyxJQUFlLEVBQXlELEVBQUU7UUFDaEYsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUNkLG9DQUNFLE9BQU8sQ0FBQyxFQUFFLDBCQUVKLHlCQUFBLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFFYixzQkFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUNaLFFBQVEsQ0FBQyxDQUNuQixFQUxMLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBS3RCLENBQ1IsQ0FBQTtJQUNMLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsUUFBUSxDQUN0QixDQUFTLEVBQ1QsV0FBK0UsRUFDL0UsWUFBb0U7SUFFcEUsT0FBTyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUM1Qix3Q0FBQSx1QkFBQSxLQUFLLEVBQU8sQ0FBQyxDQUFDLEVBQ2UsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDbEMsd0JBQUEsb0NBQUEsQ0FBQyxFQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDeEQsQ0FBQTtBQUNQLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUNuQixDQUFTLEVBQ1QsV0FBK0UsRUFDL0UsWUFBb0U7SUFFcEUsT0FBTyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUM1QixxQ0FBQSx1QkFBQSxLQUFLLEVBQU8sQ0FBQyxDQUFDLEVBQ1ksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDL0Isd0JBQUEsb0NBQUEsQ0FBQyxFQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQzFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDeEQsQ0FBQTtBQUNQLENBQUM7QUFFRCxNQUFNO0FBQ04seUNBQXlDO0FBQ3pDLDZDQUE2QztBQUM3QyxNQUFNO0FBQ04sNkJBQTZCO0FBQzdCLGVBQWU7QUFDZixXQUFXO0FBQ1gsTUFBTTtBQUNOLHNDQUFzQztBQUN0Qyw2QkFBNkI7QUFDN0IsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxXQUFXO0FBQ1gscUNBQXFDO0FBQ3JDLHNCQUFzQjtBQUN0Qix3Q0FBd0M7QUFDeEMsbUZBQW1GO0FBQ25GLHNCQUFzQjtBQUN0QixJQUFJO0FBRUo7OztHQUdHO0FBRUgsTUFBTSxVQUFVLGNBQWMsQ0FDNUIsQ0FBUyxFQUNULENBQU07SUFFTixPQUFPLENBQUksS0FBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNqQyxXQUFzQyxFQUN0QyxZQUFpRCxFQUNqRCxFQUFFLENBQ0YscUNBQUEsdUJBQUEsS0FBSyxFQUFPLENBQUMsQ0FBQyxFQUNZLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQ25DLHlCQUFBLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBYSxDQUFDLENBQUMsNENBQWtCLENBQUMsQ0FBQyxDQUFDLEVBRTVDLHdCQUFBLGdDQUFBLHFDQUFBLEtBQUssRUFBa0IsV0FBVyxDQUFDLEVBQ2hCLENBQUMsQ0FBQyxFQUNWLFlBQVksQ0FBQyxDQUN6QixDQUNKLENBQUMsQ0FBQTtBQUNSLENBQUMifQ==
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/io/Config/Secret";
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
-
import * as tsplus_module_3 from "@
|
|
4
|
-
import * as tsplus_module_4 from "@
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/core/
|
|
6
|
-
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";
|
|
7
6
|
import sgMail from "@sendgrid/mail";
|
|
8
7
|
import { inspect } from "util";
|
|
9
8
|
import { Emailer } from "./service.js";
|
|
@@ -16,7 +15,7 @@ const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) => t
|
|
|
16
15
|
const render = renderMessage(!realMail);
|
|
17
16
|
const renderedMsg_ = render(msg);
|
|
18
17
|
const renderedMsg = { ...renderedMsg_, subject: `${subjectPrefix}${renderedMsg_.subject}` };
|
|
19
|
-
yield* $(tsplus_module_2.logAnnotate("msg", inspect(renderedMsg, false, 5))
|
|
18
|
+
yield* $(tsplus_module_2.logAnnotate(tsplus_module_2.logDebug("Sending email"), "msg", inspect(renderedMsg, false, 5)));
|
|
20
19
|
const ret = yield* $(tsplus_module_2.async(cb => void sgMail.send(renderedMsg, false, (err, result) => err ?
|
|
21
20
|
cb(tsplus_module_2.fail(err)) :
|
|
22
21
|
cb(tsplus_module_2.sync(() => result)))));
|
|
@@ -38,7 +37,7 @@ const makeLiveSendgrid = ({ apiKey, defaultFrom, realMail, subjectPrefix }) => t
|
|
|
38
37
|
* @tsplus static Emailer.Ops LiveSendgrid
|
|
39
38
|
*/
|
|
40
39
|
export function LiveSendgrid(config) {
|
|
41
|
-
return
|
|
40
|
+
return tsplus_module_2.toLayer(tsplus_module_2.flatMap(tsplus_module_2.config(config), makeLiveSendgrid), Emailer);
|
|
42
41
|
}
|
|
43
42
|
/**
|
|
44
43
|
* @hidden
|
|
@@ -75,12 +74,12 @@ function renderFake(addr, makeId) {
|
|
|
75
74
|
email: `test+${makeId()}@nomizz.com`
|
|
76
75
|
};
|
|
77
76
|
}
|
|
78
|
-
const eq =
|
|
77
|
+
const eq = tsplus_module_3.contramap((to) => typeof to === "string" ? to.toLowerCase() : to.email.toLowerCase())(tsplus_module_3.string);
|
|
79
78
|
// TODO: should just not add any already added email address
|
|
80
79
|
// https://stackoverflow.com/a/53603076/11595834
|
|
81
80
|
function renderFakeIfTest(addr, makeId) {
|
|
82
81
|
return Array.isArray(addr)
|
|
83
|
-
?
|
|
82
|
+
? tsplus_module_5.iterableToArray(tsplus_module_4.uniqArray(eq)(addr
|
|
84
83
|
.map(x => (isTestAddress(x) ? renderFake(x, makeId) : x)))) : isTestAddress(addr)
|
|
85
84
|
? renderFake(addr, makeId)
|
|
86
85
|
: addr;
|
|
@@ -94,4 +93,4 @@ function renderMailData(md) {
|
|
|
94
93
|
}
|
|
95
94
|
return md.email;
|
|
96
95
|
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VuZGdyaWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL0VtYWlsZXIvU2VuZGdyaWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxPQUFPLE1BQU0sTUFBTSxnQkFBZ0IsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQzlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHdEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFrQixFQUFFLEVBQUUsQ0FDNUYscUJBQVksR0FBRyxFQUFFO0lBQ2YsTUFBTSxDQUFDLFNBQVMsdUJBQUMsTUFBTSxFQUFPLENBQUE7SUFFOUIsT0FBTztRQUNMLFFBQVEsQ0FBQyxJQUEwQjtZQUNqQyxPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7Z0JBQzNCLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksV0FBVyxFQUFFLENBQUE7Z0JBQ3ZELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2dCQUV2QyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2hDLE1BQU0sV0FBVyxHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsT0FBTyxFQUFFLEdBQUcsYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFBO2dCQUMzRixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQUEseUJBQWdCLGVBQWUsQ0FBQyxFQUFhLEtBQUssRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBRTdGLE1BQU0sR0FBRyxHQUFHLEtBQUss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
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
2
|
-
import * as tsplus_module_2 from "@effect-app/core/Effect";
|
|
3
2
|
import { pretty } from "@effect-app/prelude/utils";
|
|
4
3
|
import { Emailer } from "./service.js";
|
|
5
|
-
const makeFake = tsplus_module_1.map(() => ({
|
|
4
|
+
const makeFake = tsplus_module_1.map(tsplus_module_1.logDebug("FAKE Emailer Service enabled"), () => ({
|
|
6
5
|
sendMail(msg) {
|
|
7
|
-
return tsplus_module_1.logAnnotate(
|
|
6
|
+
return tsplus_module_1.logAnnotate(tsplus_module_1.logDebug(`Fake send mail`), "msg", pretty(msg));
|
|
8
7
|
}
|
|
9
|
-
}))
|
|
8
|
+
}));
|
|
10
9
|
/**
|
|
11
10
|
* @tsplus static Emailer.Ops Fake
|
|
12
11
|
*/
|
|
13
|
-
export const FakeSendgrid =
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
export const FakeSendgrid = tsplus_module_1.toLayer(makeFake, Emailer);
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFrZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvRW1haWxlci9mYWtlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV0QyxNQUFNLFFBQVEsR0FBRyxvQkFBQSx5QkFBZ0IsOEJBQThCLENBQUMsRUFDekQsR0FBWSxFQUFFLENBQUMsQ0FBQztJQUNuQixRQUFRLENBQUMsR0FBRztRQUNWLE9BQU8sNEJBQUEseUJBQWdCLGdCQUFnQixDQUFDLEVBQWEsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzFFLENBQUM7Q0FDRixDQUFDLENBQUMsQ0FBQTtBQUVMOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLHdCQUFBLFFBQVEsRUFBUyxPQUFPLENBQUMsQ0FBQSJ9
|
|
@@ -22,7 +22,7 @@ const make = tsplus_module_1.sync(() => {
|
|
|
22
22
|
const cleanup = tsplus_module_1.sync(() => {
|
|
23
23
|
const before = tsplus_module_2.DateSubHours(new Date(), 1);
|
|
24
24
|
tsplus_module_4.ext_itToChunk(ops.entries()).forEach(([id, op]) => {
|
|
25
|
-
const lastChanged = tsplus_module_3.getOrElse(() => op.createdAt)
|
|
25
|
+
const lastChanged = tsplus_module_3.getOrElse(tsplus_module_3.fromNullable(op.updatedAt), () => op.createdAt);
|
|
26
26
|
if (lastChanged < before) {
|
|
27
27
|
ops.delete(id);
|
|
28
28
|
}
|
|
@@ -37,7 +37,7 @@ const make = tsplus_module_1.sync(() => {
|
|
|
37
37
|
return tsplus_module_1.sync(() => tsplus_module_3.fromNullable(ops.get(id)));
|
|
38
38
|
}
|
|
39
39
|
function finishOp(id, exit) {
|
|
40
|
-
return tsplus_module_1.flatMap(_ => tsplus_module_1.sync(() => {
|
|
40
|
+
return tsplus_module_1.flatMap(findOp(id), _ => tsplus_module_1.sync(() => {
|
|
41
41
|
if (tsplus_module_3.isNone(_)) {
|
|
42
42
|
throw new Error("Not found");
|
|
43
43
|
}
|
|
@@ -51,38 +51,38 @@ const make = tsplus_module_1.sync(() => {
|
|
|
51
51
|
? tsplus_module_7.LongString("Interrupted")
|
|
52
52
|
: tsplus_module_6.isDie(exit.cause)
|
|
53
53
|
? tsplus_module_7.LongString("Unknown error")
|
|
54
|
-
: tsplus_module_8.getOrUndefined(tsplus_module_3.flatMap(_ => typeof _ === "object" && _ !== null && "message" in _ && tsplus_module_7.LongString.Guard(_.message)
|
|
54
|
+
: tsplus_module_8.getOrUndefined(tsplus_module_3.flatMap(tsplus_module_6.failureOption(exit.cause), _ => typeof _ === "object" && _ !== null && "message" in _ && tsplus_module_7.LongString.Guard(_.message)
|
|
55
55
|
? tsplus_module_3.some(_.message)
|
|
56
|
-
: tsplus_module_8.none)
|
|
56
|
+
: tsplus_module_8.none)) ?? null
|
|
57
57
|
})
|
|
58
58
|
});
|
|
59
|
-
}))
|
|
59
|
+
}));
|
|
60
60
|
}
|
|
61
61
|
function update(id, progress) {
|
|
62
|
-
return tsplus_module_1.flatMap(_ => tsplus_module_1.sync(() => {
|
|
62
|
+
return tsplus_module_1.flatMap(findOp(id), _ => tsplus_module_1.sync(() => {
|
|
63
63
|
if (tsplus_module_3.isNone(_)) {
|
|
64
64
|
throw new Error("Not found");
|
|
65
65
|
}
|
|
66
66
|
ops.set(id, { ..._.value, updatedAt: new Date(), progress });
|
|
67
|
-
}))
|
|
67
|
+
}));
|
|
68
68
|
}
|
|
69
69
|
return tsplus_module_10.make(Operations, {
|
|
70
70
|
cleanup,
|
|
71
|
-
register: tsplus_module_1.tap(id => tsplus_module_1.zipRight(tsplus_module_1.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit)))(tsplus_module_9.logAnnotateScoped("operationId", id)))
|
|
71
|
+
register: tsplus_module_1.tap(makeOp, id => tsplus_module_1.zipRight(tsplus_module_1.acquireRelease(addOp(id), (_, exit) => finishOp(id, exit)))(tsplus_module_9.logAnnotateScoped("operationId", id))),
|
|
72
72
|
find: findOp,
|
|
73
73
|
update
|
|
74
74
|
});
|
|
75
75
|
});
|
|
76
|
-
const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.forever(tsplus_module_1.delay(
|
|
76
|
+
const cleanupLoop = tsplus_module_1.forkScoped(tsplus_module_1.forever(tsplus_module_1.delay(tsplus_module_1.flatMap(tsplus_module_1.exit(tsplus_module_1.serviceWithEffect(Operations, _ => _.cleanup)), _ => {
|
|
77
77
|
if (tsplus_module_5.isSuccess(_)) {
|
|
78
78
|
return tsplus_module_12.unit;
|
|
79
79
|
}
|
|
80
80
|
else {
|
|
81
81
|
return reportAppError(_.cause);
|
|
82
82
|
}
|
|
83
|
-
})
|
|
83
|
+
}), tsplus_module_11.minutes(1))));
|
|
84
84
|
/**
|
|
85
85
|
* @tsplus static Operations.Ops Live
|
|
86
86
|
*/
|
|
87
|
-
export const Live = tsplus_module_13.provideMerge(tsplus_module_12.toScopedDiscardLayer(cleanupLoop))(
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
export const Live = tsplus_module_13.provideMerge(tsplus_module_12.toScopedDiscardLayer(cleanupLoop))(tsplus_module_1.toLayer(make, Operations));
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9saXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFFN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBRXhFLE1BQU0sSUFBSSxHQUFHLHFCQUFZLEdBQUcsRUFBRTtJQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQTtJQUM3QyxNQUFNLE1BQU0sR0FBRywyQkFBTyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUV6QyxNQUFNLE9BQU8sR0FBRyxxQkFBWSxHQUFHLEVBQUU7UUFDL0IsTUFBTSxNQUFNLEdBQUcsNkJBQUEsSUFBSSxJQUFJLEVBQUUsRUFBVSxDQUFDLENBQUMsQ0FBQTtRQUNyQyw4QkFBQSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBRVYsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLFdBQVcsR0FBRywwQkFBQSw2QkFBb0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUNuRixJQUFJLFdBQVcsR0FBRyxNQUFNLEVBQUU7Z0JBQ3hCLEdBQUcsQ0FBQyxNQUFN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
|