@effect-app/infra 0.13.0 → 0.14.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/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 +49 -49
- 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 +63 -63
- 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 -28
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +56 -56
- 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 +10 -10
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +18 -18
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +23 -23
- 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 +15 -14
- 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 +45 -45
- package/dist/api/express/schema/routing.js +21 -23
- package/dist/api/reportError.js +6 -18
- package/dist/api/routing.js +60 -60
- 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 -22
- package/dist/services/Store/Cosmos.d.ts +1 -1
- package/dist/services/Store/Cosmos.js +61 -61
- 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 +12 -11
- package/dist/services/simpledb/mongodb.d.ts +2 -2
- package/dist/services/simpledb/mongodb.js +18 -18
- package/dist/services/simpledb/redisdb.d.ts +8 -8
- package/dist/services/simpledb/redisdb.js +21 -21
- 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 -17
- package/package.json +11 -11
|
@@ -12,7 +12,8 @@ var tracer_1 = _interopRequireWildcard(require("@effect/io/Debug"));
|
|
|
12
12
|
var tsplus_module_1 = _interopRequireWildcard(require("@effect/io/Effect"));
|
|
13
13
|
var tsplus_module_2 = _interopRequireWildcard(require("@fp-ts/data/Context"));
|
|
14
14
|
var tsplus_module_3 = _interopRequireWildcard(require("@effect-app/core/Effect"));
|
|
15
|
-
var tsplus_module_4 = _interopRequireWildcard(require("@
|
|
15
|
+
var tsplus_module_4 = _interopRequireWildcard(require("@effect-app/core/Option"));
|
|
16
|
+
var tsplus_module_5 = _interopRequireWildcard(require("@fp-ts/core/Option"));
|
|
16
17
|
var _shared = require("./shared.cjs");
|
|
17
18
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
19
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -28,7 +29,7 @@ exports.InvalidStateError = InvalidStateError;
|
|
|
28
29
|
function makeLiveRecordCache() {
|
|
29
30
|
const m = new Map();
|
|
30
31
|
return {
|
|
31
|
-
get: type =>
|
|
32
|
+
get: type => tsplus_module_1.sync(() => {
|
|
32
33
|
const ex = m.get(type);
|
|
33
34
|
if (!ex) {
|
|
34
35
|
const nm = (0, _shared.makeMap)();
|
|
@@ -36,42 +37,42 @@ function makeLiveRecordCache() {
|
|
|
36
37
|
return nm;
|
|
37
38
|
}
|
|
38
39
|
return ex;
|
|
39
|
-
})
|
|
40
|
+
})
|
|
40
41
|
};
|
|
41
42
|
}
|
|
42
43
|
// module tag
|
|
43
44
|
const RecordCache = tsplus_module_2.Tag();
|
|
44
45
|
exports.RecordCache = RecordCache;
|
|
45
|
-
const LiveRecordCache =
|
|
46
|
+
const LiveRecordCache = tsplus_module_1.toLayer(tsplus_module_1.sync(() => makeLiveRecordCache()), RecordCache);
|
|
46
47
|
exports.LiveRecordCache = LiveRecordCache;
|
|
47
|
-
const getM = type => eff =>
|
|
48
|
+
const getM = type => eff => tsplus_module_1.gen(function* ($) {
|
|
48
49
|
const {
|
|
49
50
|
get
|
|
50
51
|
} = yield* $(tsplus_module_1.service(RecordCache));
|
|
51
|
-
return yield* $(
|
|
52
|
-
})
|
|
52
|
+
return yield* $(tsplus_module_1.flatMap(get(type), eff));
|
|
53
|
+
});
|
|
53
54
|
function find(tryRead, decode, type) {
|
|
54
55
|
const getCache = getM(type);
|
|
55
56
|
const read = id => tracer_1.withCallTrace(fileName_1 + ":54:8")(tsplus_module_3.mapOpt(tracer_1.withCallTrace(fileName_1 + ":53:8")(tsplus_module_3.tapOpt(tracer_1.withCallTrace(fileName_1 + ":47:8")(tsplus_module_3.flatMapOpt(tryRead(id), ({
|
|
56
57
|
data,
|
|
57
58
|
version
|
|
58
|
-
}) =>
|
|
59
|
+
}) => tsplus_module_1.mapBoth(decode(data), err => new InvalidStateError("DB serialisation Issue", err), data => ({
|
|
59
60
|
data,
|
|
60
61
|
version
|
|
61
|
-
})))
|
|
62
|
-
return id => getCache(c =>
|
|
62
|
+
})))), r => getCache(c => c.set(id, r)))), r => r.data));
|
|
63
|
+
return id => getCache(c => tsplus_module_1.orElse(tracer_1.withCallTrace(fileName_1 + ":60:10")(tsplus_module_3.mapOpt(c.find(id), existing => existing.data)), () => read(id)));
|
|
63
64
|
}
|
|
64
65
|
function storeDirectly(save, type) {
|
|
65
66
|
const getCache = getM(type);
|
|
66
|
-
return record => getCache(c =>
|
|
67
|
+
return record => getCache(c => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tracer_1.withCallTrace(fileName_1 + ":74:10")(tsplus_module_3.mapOpt(c.find(record.id), x => x.version)), cv => save(record, cv)), r => c.set(record.id, r)), r => r.data));
|
|
67
68
|
}
|
|
68
69
|
function store(tryRead, save, lock, type) {
|
|
69
70
|
const getCache = getM(type);
|
|
70
|
-
return record => getCache(c =>
|
|
71
|
+
return record => getCache(c => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tracer_1.withCallTrace(fileName_1 + ":92:10")(tsplus_module_3.mapOpt(c.find(record.id), x => x.version)), _ => tsplus_module_5.match(() => save(record, tsplus_module_4.none), confirmVersionAndSave(record))(_)), r => c.set(record.id, r)), r => r.data));
|
|
71
72
|
function confirmVersionAndSave(record) {
|
|
72
|
-
return cv => tsplus_module_1.scoped(
|
|
73
|
+
return cv => tsplus_module_1.scoped(tsplus_module_1.zipRight(lock(record.id), tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_1.flatMap(tryRead(record.id), _ => tsplus_module_5.match(() => tsplus_module_1.fail(new InvalidStateError("record is gone")), tsplus_module_1.succeed)(_)), ({
|
|
73
74
|
version
|
|
74
|
-
}) => version !== cv ?
|
|
75
|
+
}) => version !== cv ? tsplus_module_1.fail(new _shared.OptimisticLockException(type, record.id)) : tsplus_module_3.unit), save(record, tsplus_module_5.some(cv)))));
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
//# sourceMappingURL=simpledb.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simpledb.cjs","mappings":"
|
|
1
|
+
{"version":3,"file":"simpledb.cjs","mappings":"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","names":["InvalidStateError","constructor","message","details","makeLiveRecordCache","m","Map","get","type","tsplus_module_1","ex","nm","set","RecordCache","tsplus_module_2","LiveRecordCache","getM","eff","$","find","tryRead","decode","getCache","read","id","tracer_1","tsplus_module_3","data","version","err","r","c","existing","storeDirectly","save","record","x","cv","store","lock","_","tsplus_module_5","confirmVersionAndSave","OptimisticLockException"],"sourceRoot":"","sources":["../../../_src/services/simpledb/simpledb.ts"],"sourcesContent":[null]}
|
package/_src/errors.ts
CHANGED
|
@@ -37,7 +37,7 @@ export class CauseException<E> extends Error {
|
|
|
37
37
|
readonly pretty: string
|
|
38
38
|
constructor(readonly exitCause: Cause<E>, readonly _tag: string) {
|
|
39
39
|
super(`An unexpected ${_tag} Exception occurred, see \`pretty\` for details.`)
|
|
40
|
-
this.pretty = exitCause.pretty
|
|
40
|
+
this.pretty = exitCause.pretty
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
toJSON() {
|
|
@@ -44,7 +44,7 @@ export function createContext<TKey extends string, EA, A extends DBRecord<TKey>>
|
|
|
44
44
|
const cr = { data: JSON.parse(sdb.data) as EA, version: sdb.version }
|
|
45
45
|
const r = yield* $(
|
|
46
46
|
decode(cr.data).flatMap(d =>
|
|
47
|
-
eq(d as unknown as V)
|
|
47
|
+
eq(keys, d as unknown as V)
|
|
48
48
|
? Effect(d)
|
|
49
49
|
: Effect.fail("not equals")
|
|
50
50
|
).exit
|
package/dist/RequestContext.d.ts
CHANGED
|
@@ -4,13 +4,13 @@ export declare const RequestId: import("@effect-app/prelude/schema").StringIdSch
|
|
|
4
4
|
};
|
|
5
5
|
export type RequestId = ParsedShapeOfCustom<typeof RequestId>;
|
|
6
6
|
declare const RequestContextParent_base: import("@effect-app/schema").MNModel<import("@effect-app/schema").SchemaProperties<{
|
|
7
|
-
_tag: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "RequestContext", "RequestContext", "RequestContext", import("@effect-app/schema").LiteralApi<["RequestContext"]>>, "required", import("@fp-ts/
|
|
7
|
+
_tag: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "RequestContext", "RequestContext", "RequestContext", import("@effect-app/schema").LiteralApi<["RequestContext"]>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
8
8
|
id: import("@effect-app/schema").Property<import("@effect-app/prelude/schema").StringIdSchema & import("@effect-app/schema").Utils<import("@effect-app/prelude/schema").StringIdSchema> & {
|
|
9
9
|
make(this: void): import("@effect-app/prelude/schema").StringId;
|
|
10
|
-
}, "required", import("@fp-ts/
|
|
11
|
-
name: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>>>, "required", import("@fp-ts/
|
|
12
|
-
locale: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "en" | "de", "en" | "de", "en" | "de", import("@effect-app/schema").LiteralApi<["en", "de"]>>, "required", import("@fp-ts/
|
|
13
|
-
createdAt: import("@effect-app/schema").FromProperty<import("@effect-app/schema").SchemaDefaultSchema<unknown, Date, Date, string, {}>, "required", import("@fp-ts/
|
|
10
|
+
}, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
11
|
+
name: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
12
|
+
locale: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "en" | "de", "en" | "de", "en" | "de", import("@effect-app/schema").LiteralApi<["en", "de"]>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
13
|
+
createdAt: import("@effect-app/schema").FromProperty<import("@effect-app/schema").SchemaDefaultSchema<unknown, Date, Date, string, {}>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").Some<["constructor", () => Date]>>;
|
|
14
14
|
}>, RequestContextParent, RequestContextParent.ConstructorInput, RequestContextParent.Encoded, RequestContextParent.Props> & import("@effect-app/schema").PropsExtensions<RequestContextParent.Props>;
|
|
15
15
|
export declare class RequestContextParent extends RequestContextParent_base {
|
|
16
16
|
}
|
|
@@ -18,15 +18,15 @@ export declare class RequestContextParent extends RequestContextParent_base {
|
|
|
18
18
|
export type RequestContextParentConstructor = typeof RequestContextParent;
|
|
19
19
|
export declare function makeRequestId(): import("@effect-app/prelude/schema").StringId;
|
|
20
20
|
declare const RequestContext_base: import("@effect-app/schema").MNModel<import("@effect-app/schema").SchemaProperties<{
|
|
21
|
-
id: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/prelude/schema").StringId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId>>, "required", import("@fp-ts/
|
|
21
|
+
id: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/prelude/schema").StringId, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/prelude/schema").StringId>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").Some<["constructor", () => import("@effect-app/prelude/schema").StringId]>>;
|
|
22
22
|
rootId: import("@effect-app/schema").Property<import("@effect-app/prelude/schema").StringIdSchema & import("@effect-app/schema").Utils<import("@effect-app/prelude/schema").StringIdSchema> & {
|
|
23
23
|
make(this: void): import("@effect-app/prelude/schema").StringId;
|
|
24
|
-
}, "required", import("@fp-ts/
|
|
25
|
-
parent: import("@effect-app/schema").Property<typeof RequestContextParent, "optional", import("@fp-ts/
|
|
26
|
-
_tag: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "RequestContext", "RequestContext", "RequestContext", import("@effect-app/schema").LiteralApi<["RequestContext"]>>, "required", import("@fp-ts/
|
|
27
|
-
name: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>>>, "required", import("@fp-ts/
|
|
28
|
-
locale: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "en" | "de", "en" | "de", "en" | "de", import("@effect-app/schema").LiteralApi<["en", "de"]>>, "required", import("@fp-ts/
|
|
29
|
-
createdAt: import("@effect-app/schema").FromProperty<import("@effect-app/schema").SchemaDefaultSchema<unknown, Date, Date, string, {}>, "required", import("@fp-ts/
|
|
24
|
+
}, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
25
|
+
parent: import("@effect-app/schema").Property<typeof RequestContextParent, "optional", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
26
|
+
_tag: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "RequestContext", "RequestContext", "RequestContext", import("@effect-app/schema").LiteralApi<["RequestContext"]>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
27
|
+
name: import("@effect-app/schema").Property<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>> & import("@effect-app/schema").Utils<import("@effect-app/schema").SchemaDefaultSchema<unknown, import("@effect-app/schema").ReasonableString, string, string, import("@effect-app/schema").ApiSelfType<import("@effect-app/schema").ReasonableString>>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
28
|
+
locale: import("@effect-app/schema").Property<import("@effect-app/schema").DefaultSchema<unknown, "en" | "de", "en" | "de", "en" | "de", import("@effect-app/schema").LiteralApi<["en", "de"]>>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").None>;
|
|
29
|
+
createdAt: import("@effect-app/schema").FromProperty<import("@effect-app/schema").SchemaDefaultSchema<unknown, Date, Date, string, {}>, "required", import("@fp-ts/core/Option").None, import("@fp-ts/core/Option").Some<["constructor", () => Date]>>;
|
|
30
30
|
}>, RequestContext, RequestContext.ConstructorInput, RequestContext.Encoded, RequestContext.Props> & import("@effect-app/schema").PropsExtensions<RequestContext.Props>;
|
|
31
31
|
/**
|
|
32
32
|
* @tsplus type RequestContext
|
package/dist/api/codec.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/codec.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
2
|
import * as tsplus_module_2 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
|
|
5
3
|
import * as MO from "@effect-app/schema";
|
|
@@ -9,11 +7,11 @@ export function makeCodec(self) {
|
|
|
9
7
|
// TODO: strict
|
|
10
8
|
const decode = (e, env) => parse(e, env);
|
|
11
9
|
const enc = Encoder.for(self);
|
|
12
|
-
const encode = (u) =>
|
|
10
|
+
const encode = (u) => tsplus_module_1.sync(() => enc(u));
|
|
13
11
|
const encodeToMap = toMap(encode);
|
|
14
12
|
return [decode, encode, encodeToMap];
|
|
15
13
|
}
|
|
16
14
|
function toMap(encode) {
|
|
17
|
-
return (a) =>
|
|
15
|
+
return (a) => tsplus_module_1.map(tsplus_module_2.ext_collectAll(a.map(task => tsplus_module_1.tuple(tsplus_module_1.sync(() => task.id), encode(task)))), _ => new Map(_));
|
|
18
16
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9fc3JjL2FwaS9jb2RlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUdwRCxNQUFNLFVBQVUsU0FBUyxDQU12QixJQUFxRTtJQUNyRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUM3QyxlQUFlO0lBQ2YsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFVLEVBQUUsR0FBZSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0lBQzdELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFjLEVBQUUsRUFBRSxDQUFDLHFCQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3ZELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNqQyxPQUFPLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQVUsQ0FBQTtBQUMvQyxDQUFDO0FBRUQsU0FBUyxLQUFLLENBQThCLE1BQXlDO0lBQ25GLE9BQU8sQ0FBQyxDQUFtQixFQUFFLEVBQUUsQ0FDN0Isb0JBQUEsK0JBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFhLDJCQUFPLElBQUksQ0FBQyxFQUFhLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUN0RCxFQUNSLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMzQixDQUFDIn0=
|
|
@@ -1,37 +1,36 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/defaultErrorHandler.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Cause";
|
|
5
3
|
import * as tsplus_module_3 from "@effect-app/core/Effect";
|
|
6
4
|
import * as tsplus_module_4 from "@effect/io/Schedule";
|
|
7
5
|
import { logRequestError } from "./reportError.js";
|
|
8
6
|
export function defaultBasicErrorHandler(_req, res, _requestContext, r2) {
|
|
9
|
-
return
|
|
7
|
+
return tsplus_module_1.catchAll(tsplus_module_1.catchTag(tsplus_module_1.tapErrorCause(r2, cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit), "ValidationError", err => tsplus_module_1.sync(() => {
|
|
10
8
|
res.status(400).send(err.errors);
|
|
11
|
-
}))
|
|
9
|
+
}))
|
|
12
10
|
// final catch all; expecting never so that unhandled known errors will show up
|
|
13
|
-
);
|
|
11
|
+
, (err) => tsplus_module_1.flatMap(tsplus_module_1.map(tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err), () => err), tsplus_module_1.die));
|
|
14
12
|
}
|
|
15
|
-
const optimisticConcurrencySchedule = tsplus_module_4.
|
|
13
|
+
const optimisticConcurrencySchedule = tsplus_module_4.once() &&
|
|
14
|
+
tsplus_module_4.recurWhile(a => a._tag === "OptimisticConcurrencyException");
|
|
16
15
|
export function defaultErrorHandler(req, res, _, r2) {
|
|
17
16
|
const r3 = req.method === "PATCH"
|
|
18
|
-
?
|
|
17
|
+
? tsplus_module_1.retry(r2, optimisticConcurrencySchedule)
|
|
19
18
|
: r2;
|
|
20
|
-
return
|
|
19
|
+
return tsplus_module_1.catchAll(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.catchTag(tsplus_module_1.tapErrorCause(r3, cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit), "ValidationError", err => tsplus_module_1.sync(() => {
|
|
20
|
+
res.status(400).send(err.errors);
|
|
21
|
+
})), "NotFoundError", err => tsplus_module_1.sync(() => {
|
|
22
|
+
res.status(404).send(err);
|
|
23
|
+
})), "NotLoggedInError", err => tsplus_module_1.sync(() => {
|
|
24
|
+
res.status(401).send(err);
|
|
25
|
+
})), "UnauthorizedError", err => tsplus_module_1.sync(() => {
|
|
26
|
+
res.status(403).send(err);
|
|
27
|
+
})), "InvalidStateError", err => tsplus_module_1.sync(() => {
|
|
28
|
+
res.status(422).send(err);
|
|
29
|
+
})), "OptimisticConcurrencyException", err => tsplus_module_1.sync(() => {
|
|
21
30
|
// 412 or 409.. https://stackoverflow.com/questions/19122088/which-http-status-code-to-use-to-reject-a-put-due-to-optimistic-locking-failure
|
|
22
31
|
res.status(412).send(err);
|
|
23
|
-
}))
|
|
24
|
-
res.status(422).send(err);
|
|
25
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":61:6")(tsplus_module_1.catchTag("UnauthorizedError", err => tracer_1.withCallTrace(fileName_1 + ":62:7")(tsplus_module_1.sync(() => {
|
|
26
|
-
res.status(403).send(err);
|
|
27
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":57:6")(tsplus_module_1.catchTag("NotLoggedInError", err => tracer_1.withCallTrace(fileName_1 + ":58:7")(tsplus_module_1.sync(() => {
|
|
28
|
-
res.status(401).send(err);
|
|
29
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":53:6")(tsplus_module_1.catchTag("NotFoundError", err => tracer_1.withCallTrace(fileName_1 + ":54:7")(tsplus_module_1.sync(() => {
|
|
30
|
-
res.status(404).send(err);
|
|
31
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":49:6")(tsplus_module_1.catchTag("ValidationError", err => tracer_1.withCallTrace(fileName_1 + ":50:7")(tsplus_module_1.sync(() => {
|
|
32
|
-
res.status(400).send(err.errors);
|
|
33
|
-
}))))(tracer_1.withCallTrace(fileName_1 + ":48:6")(tsplus_module_1.tapErrorCause(cause => tsplus_module_2.isFailure(cause) ? logRequestError(cause) : tsplus_module_3.unit))(r3)))))))
|
|
32
|
+
}))
|
|
34
33
|
// final catch all; expecting never so that unhandled known errors will show up
|
|
35
|
-
);
|
|
34
|
+
, (err) => tsplus_module_1.flatMap(tsplus_module_1.map(tsplus_module_1.logError("Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect" + err), () => err), tsplus_module_1.die));
|
|
36
35
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdEVycm9ySGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL19zcmMvYXBpL2RlZmF1bHRFcnJvckhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQVVBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVsRCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLElBQXFCLEVBQ3JCLEdBQXFCLEVBQ3JCLGVBQStCLEVBQy9CLEVBQW9DO0lBRXBDLE9BQU8seUJBQUEseUJBQUEsOEJBQUEsRUFBRSxFQUNRLEtBQUssQ0FBQyxFQUFFLENBQUMsMEJBQUEsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFZLENBQUMsRUFDdkUsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDakMscUJBQU8sR0FBRyxFQUFFO1FBQ1YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsK0VBQStFO01BQ3JFLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FDdkIsd0JBQUEsb0JBQUEseUJBQ0UsZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxFQUNNLEdBQUcsRUFBRSxDQUFDLEdBQWMsQ0FBQyxzQkFDTixDQUN2QixDQUFBO0FBQ0wsQ0FBQztBQUVELE1BQU0sNkJBQTZCLEdBQUcsc0JBQWU7SUFDbkQsMkJBQXFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRXhGLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsR0FBb0IsRUFDcEIsR0FBcUIsRUFDckIsQ0FBaUIsRUFDakIsRUFBb0M7SUFFcEMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sS0FBSyxPQUFPO1FBQy9CLENBQUMsQ0FBQyxzQkFBQSxFQUFFLEVBQU8sNkJBQTZCLENBQUM7UUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE9BQU8seUJBQUEseUJBQUEseUJBQUEseUJBQUEseUJBQUEseUJBQUEseUJBQUEsOEJBQUEsRUFBRSxFQUNRLEtBQUssQ0FBQyxFQUFFLENBQUMsMEJBQUEsS0FBSyxDQUFZLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFZLENBQUMsRUFDdkUsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDakMscUJBQU8sR0FBRyxFQUFFO1FBQ1YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2xDLENBQUMsQ0FBQyxDQUFDLEVBQ0ssZUFBZSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQy9CLHFCQUFPLEdBQUcsRUFBRTtRQUNWLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFDLEVBQ0ssa0JBQWtCLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDbEMscUJBQU8sR0FBRyxFQUFFO1FBQ1YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDM0IsQ0FBQyxDQUFDLENBQUMsRUFDSyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUNuQyxxQkFBTyxHQUFHLEVBQUU7UUFDVixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUMzQixDQUFDLENBQUMsQ0FBQyxFQUNLLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQ25DLHFCQUFPLEdBQUcsRUFBRTtRQUNWLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFDLEVBQ0ssZ0NBQWdDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FDaEQscUJBQU8sR0FBRyxFQUFFO1FBQ1YsNElBQTRJO1FBQzVJLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsK0VBQStFO01BQ3JFLENBQUMsR0FBVSxFQUFFLEVBQUUsQ0FDdkIsd0JBQUEsb0JBQUEseUJBQ0UsZ0dBQWdHLEdBQUcsR0FBRyxDQUN2RyxFQUNNLEdBQUcsRUFBRSxDQUFDLEdBQWMsQ0FBQyxzQkFDTixDQUN2QixDQUFBO0FBQ0wsQ0FBQyJ9
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/express/makeJsonSchema.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@fp-ts/data/Chunk";
|
|
4
2
|
import * as tsplus_module_2 from "@effect-app/core/fluent/_ext/awesome/_files/Iterable";
|
|
5
3
|
import * as tsplus_module_3 from "@effect/io/Effect";
|
|
@@ -10,7 +8,7 @@ const rx = /:(\w+)/g;
|
|
|
10
8
|
* Work in progress JSONSchema generator.
|
|
11
9
|
*/
|
|
12
10
|
export function makeJsonSchema(r) {
|
|
13
|
-
return
|
|
11
|
+
return tsplus_module_3.map(tsplus_module_2.ext_forEach(tsplus_module_1.fromIterable(r), RS.makeFromSchema), e => {
|
|
14
12
|
const map = ({ method, path, responses, ...rest }) => ({
|
|
15
13
|
[method]: {
|
|
16
14
|
...rest,
|
|
@@ -28,7 +26,7 @@ export function makeJsonSchema(r) {
|
|
|
28
26
|
};
|
|
29
27
|
return prev;
|
|
30
28
|
})(e);
|
|
31
|
-
})
|
|
29
|
+
});
|
|
32
30
|
}
|
|
33
31
|
class Response {
|
|
34
32
|
constructor(statusCode, type // string | JSONSchema | SubSchema
|
|
@@ -37,4 +35,4 @@ class Response {
|
|
|
37
35
|
this.type = type;
|
|
38
36
|
}
|
|
39
37
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZUpzb25TY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL21ha2VKc29uU2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEtBQUssRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBSXpDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQTtBQUlwQjs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsQ0FBa0M7SUFDL0QsT0FBTyxvQkFBQSw0QkFBQSw2QkFBbUIsQ0FBQyxDQUFDLEVBQ1gsRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUM1QixDQUFDLENBQUMsRUFBRTtRQUNQLE1BQU0sR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksRUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNSLEdBQUcsSUFBSTtnQkFDUCxTQUFTLEVBQUcsU0FBd0IsQ0FBQyxNQUFNLENBQ3pDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO29CQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtvQkFDL0IsT0FBTyxJQUFJLENBQUE7Z0JBQ2IsQ0FBQyxFQUNELEVBQXNELENBQ3ZEO2FBQ0Y7U0FDRixDQUFDLENBQUE7UUFDRixPQUFPLHVCQUNMLEVBQTZELEVBQzdELENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ1YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNsRSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ1gsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNiLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBUTthQUNqQixDQUFBO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLEVBVEksQ0FBQyxDQVVQLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUM7QUFFRCxNQUFNLFFBQVE7SUFDWixZQUNrQixVQUFrQixFQUNsQixJQUFTLENBQUMsa0NBQWtDOztRQUQ1QyxlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFNBQUksR0FBSixJQUFJLENBQUs7SUFDeEIsQ0FBQztDQUNMIn0=
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import * as tracer_1 from "@effect/io/Debug";
|
|
2
|
-
const fileName_1 = "packages/infra/_src/api/express/makeOpenApiSpecs.ts";
|
|
3
1
|
import * as tsplus_module_1 from "@effect/io/Ref";
|
|
4
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
5
3
|
import { References } from "@effect-app/infra-adapters/Openapi/atlas-plutus/Schema/index";
|
|
6
4
|
import { makeJsonSchema } from "./makeJsonSchema.js";
|
|
7
5
|
export function makeOpenApiSpecs(rdescs, info) {
|
|
8
|
-
return
|
|
9
|
-
const ref = yield* $(
|
|
10
|
-
const paths = yield* $(
|
|
6
|
+
return tsplus_module_2.gen(function* ($) {
|
|
7
|
+
const ref = yield* $(tsplus_module_1.make(new Map()));
|
|
8
|
+
const paths = yield* $(tsplus_module_2.provideService(makeJsonSchema(rdescs), References, { ref }));
|
|
11
9
|
const refs = yield* $(tsplus_module_1.get(ref));
|
|
12
10
|
const parameterRefs = {}; // todos
|
|
13
11
|
const schemas = {};
|
|
@@ -49,6 +47,6 @@ export function makeOpenApiSpecs(rdescs, info) {
|
|
|
49
47
|
components
|
|
50
48
|
// test,
|
|
51
49
|
};
|
|
52
|
-
})
|
|
50
|
+
});
|
|
53
51
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZU9wZW5BcGlTcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvYXBpL2V4cHJlc3MvbWFrZU9wZW5BcGlTcGVjcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4REFBOEQsQ0FBQTtBQUN6RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHcEQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFvQyxFQUNwQyxJQUFpQjtJQUVqQixPQUFPLG9CQUFXLFFBQVEsQ0FBQyxFQUFDLENBQUM7UUFDM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLHFCQUE4QyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUM5RSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsK0JBQUEsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFnQixVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEYsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxxQkFBQyxHQUFHLEVBQUssQ0FBQTtRQUM5QixNQUFNLGFBQWEsR0FBd0IsRUFBRSxDQUFBLENBQUMsUUFBUTtRQUN0RCxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFBO1FBQ3ZDLE1BQU0sZUFBZSxHQUFHO1lBQ3RCLFVBQVUsRUFBRTtnQkFDVixJQUFJLEVBQUUsTUFBTTtnQkFDWixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsWUFBWSxFQUFFLEtBQUs7YUFDcEI7U0FDRixDQUFBLENBQUMsbURBQW1EO1FBQ3JELE1BQU0sVUFBVSxHQUFHLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUE7UUFFMUUsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsZ0RBQWdEO1lBQ2hELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDN0I7UUFFRCxPQUFPO1lBQ0wsT0FBTyxFQUFFLE9BQU87WUFDaEIsSUFBSSxFQUFFO2dCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO2dCQUM3QixjQUFjLEVBQUUsSUFBSSxDQUFDLEdBQUc7Z0JBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDbkIsQ0FBQyxDQUFDO3dCQUNBLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7d0JBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7d0JBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7cUJBQ3RCO29CQUNELENBQUMsQ0FBQyxTQUFTO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztvQkFDbkIsQ0FBQyxDQUFDO3dCQUNBLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7d0JBQ3ZCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUc7cUJBQ3RCO29CQUNELENBQUMsQ0FBQyxTQUFTO2dCQUNiLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QjtZQUNELElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSztZQUNMLFVBQVU7WUFDVixRQUFRO1NBQ1QsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
|
|
@@ -27,11 +27,11 @@ export type Request2<Path extends string, Method extends Methods, ReqA> = MO.Req
|
|
|
27
27
|
export type Encode<A, E> = (a: A) => E;
|
|
28
28
|
export declare function decodeErrors(x: unknown): unknown[];
|
|
29
29
|
export declare function parseRequestParams<PathA, CookieA, QueryA, BodyA, HeaderA>(parsers: RequestParsers<PathA, CookieA, QueryA, BodyA, HeaderA>): ({ body, cookies, headers, params, query }: express.Request) => import("@effect/io/Effect").Effect<never, ValidationError, {
|
|
30
|
-
body: import("@fp-ts/
|
|
31
|
-
cookie: import("@fp-ts/
|
|
32
|
-
headers: import("@fp-ts/
|
|
33
|
-
path: import("@fp-ts/
|
|
34
|
-
query: import("@fp-ts/
|
|
30
|
+
body: import("@fp-ts/core/Option").Option<BodyA>;
|
|
31
|
+
cookie: import("@fp-ts/core/Option").Option<CookieA>;
|
|
32
|
+
headers: import("@fp-ts/core/Option").Option<HeaderA>;
|
|
33
|
+
path: import("@fp-ts/core/Option").Option<PathA>;
|
|
34
|
+
query: import("@fp-ts/core/Option").Option<QueryA>;
|
|
35
35
|
}>;
|
|
36
36
|
export declare function respondSuccess<ReqA, A, E>(encodeResponse: (req: ReqA) => Encode<A, E>): (req: ReqA, res: express.Response) => (a: A) => import("@effect/io/Effect").Effect<never, never, void>;
|
|
37
37
|
export interface RequestHandlerOptRes<R, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends PathA & QueryA & BodyA, ResA, ResE> {
|
|
@@ -4,7 +4,7 @@ import * as tsplus_module_1 from "@effect/io/Effect";
|
|
|
4
4
|
import * as tsplus_module_2 from "@effect/io/Exit";
|
|
5
5
|
import * as tsplus_module_3 from "@effect/io/Cause";
|
|
6
6
|
import * as tsplus_module_4 from "@effect-app/core/Function";
|
|
7
|
-
import * as tsplus_module_5 from "@fp-ts/
|
|
7
|
+
import * as tsplus_module_5 from "@fp-ts/core/Option";
|
|
8
8
|
import * as tsplus_module_6 from "@effect-app/core/Effect";
|
|
9
9
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
10
10
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
@@ -31,7 +31,38 @@ export function decodeErrors(x) {
|
|
|
31
31
|
// )
|
|
32
32
|
// const structValidation = DSL.structF(ValidationApplicative)
|
|
33
33
|
export function parseRequestParams(parsers) {
|
|
34
|
-
return ({ body, cookies, headers, params, query }) =>
|
|
34
|
+
return ({ body, cookies, headers, params, query }) => tsplus_module_1.flatMap(tsplus_module_1.struct({
|
|
35
|
+
body: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
36
|
+
.parseBody(body)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
37
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
38
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
39
|
+
? { _tag: "Success", value: _.value }
|
|
40
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) })),
|
|
41
|
+
cookie: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
42
|
+
.parseCookie(cookies)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
43
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
44
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
45
|
+
? { _tag: "Success", value: _.value }
|
|
46
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) })),
|
|
47
|
+
headers: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
48
|
+
.parseHeaders(headers)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
49
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
50
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
51
|
+
? { _tag: "Success", value: _.value }
|
|
52
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) })),
|
|
53
|
+
query: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
54
|
+
.parseQuery(query)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
55
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
56
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
57
|
+
? { _tag: "Success", value: _.value }
|
|
58
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) })),
|
|
59
|
+
path: tsplus_module_1.flatMap(tsplus_module_1.exit(parsers
|
|
60
|
+
.parsePath(params)), _ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
61
|
+
? tsplus_module_1.failCauseSync(() => _.cause)
|
|
62
|
+
: tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
63
|
+
? { _tag: "Success", value: _.value }
|
|
64
|
+
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))
|
|
65
|
+
}), ({ body, cookie, headers, path, query }) => {
|
|
35
66
|
const errors = [];
|
|
36
67
|
if (body._tag === "Failure") {
|
|
37
68
|
errors.push(makeError("body")(body.errors));
|
|
@@ -49,47 +80,16 @@ export function parseRequestParams(parsers) {
|
|
|
49
80
|
errors.push(makeError("path")(path.errors));
|
|
50
81
|
}
|
|
51
82
|
if (errors.length) {
|
|
52
|
-
return
|
|
83
|
+
return tsplus_module_1.fail(new ValidationError(errors));
|
|
53
84
|
}
|
|
54
|
-
return
|
|
85
|
+
return tsplus_module_1.sync(() => ({
|
|
55
86
|
body: body.value,
|
|
56
87
|
cookie: cookie.value,
|
|
57
88
|
headers: headers.value,
|
|
58
89
|
path: path.value,
|
|
59
90
|
query: query.value
|
|
60
|
-
}))
|
|
61
|
-
})
|
|
62
|
-
body: tracer_1.withCallTrace(fileName_1 + ":75:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
63
|
-
? tracer_1.withCallTrace(fileName_1 + ":77:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
64
|
-
: tracer_1.withCallTrace(fileName_1 + ":78:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
65
|
-
? { _tag: "Success", value: _.value }
|
|
66
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
67
|
-
.parseBody(body))),
|
|
68
|
-
cookie: tracer_1.withCallTrace(fileName_1 + ":86:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
69
|
-
? tracer_1.withCallTrace(fileName_1 + ":88:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
70
|
-
: tracer_1.withCallTrace(fileName_1 + ":89:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
71
|
-
? { _tag: "Success", value: _.value }
|
|
72
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
73
|
-
.parseCookie(cookies))),
|
|
74
|
-
headers: tracer_1.withCallTrace(fileName_1 + ":97:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
75
|
-
? tracer_1.withCallTrace(fileName_1 + ":99:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
76
|
-
: tracer_1.withCallTrace(fileName_1 + ":100:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
77
|
-
? { _tag: "Success", value: _.value }
|
|
78
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
79
|
-
.parseHeaders(headers))),
|
|
80
|
-
query: tracer_1.withCallTrace(fileName_1 + ":108:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
81
|
-
? tracer_1.withCallTrace(fileName_1 + ":110:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
82
|
-
: tracer_1.withCallTrace(fileName_1 + ":111:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
83
|
-
? { _tag: "Success", value: _.value }
|
|
84
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
85
|
-
.parseQuery(query))),
|
|
86
|
-
path: tracer_1.withCallTrace(fileName_1 + ":119:15")(tsplus_module_1.flatMap(_ => tsplus_module_2.isFailure(_) && !tsplus_module_3.isFailure(_.cause)
|
|
87
|
-
? tracer_1.withCallTrace(fileName_1 + ":121:23")(tsplus_module_1.failCauseSync(() => _.cause))
|
|
88
|
-
: tracer_1.withCallTrace(fileName_1 + ":122:15")(tsplus_module_1.sync(() => tsplus_module_2.isSuccess(_)
|
|
89
|
-
? { _tag: "Success", value: _.value }
|
|
90
|
-
: { _tag: "Failure", errors: tsplus_module_3.failures(_.cause) }))))(tsplus_module_1.exit(parsers
|
|
91
|
-
.parsePath(params)))
|
|
92
|
-
})));
|
|
91
|
+
}));
|
|
92
|
+
});
|
|
93
93
|
}
|
|
94
94
|
// // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
95
95
|
// function mapErrors_<E, NE, NER extends Record<string, Effect<any, E, any>>>(
|
|
@@ -112,22 +112,22 @@ function makeError(type) {
|
|
|
112
112
|
return (e) => [{ type, errors: decodeErrors(e) }];
|
|
113
113
|
}
|
|
114
114
|
export function respondSuccess(encodeResponse) {
|
|
115
|
-
return (req, res) => tsplus_module_4.flow(encodeResponse(req), tsplus_module_1.succeed, _ =>
|
|
115
|
+
return (req, res) => tsplus_module_4.flow(encodeResponse(req), tsplus_module_1.succeed, _ => tsplus_module_1.flatMap(_, r => tsplus_module_1.sync(() => {
|
|
116
116
|
r === undefined
|
|
117
117
|
? res.status(204).send()
|
|
118
118
|
: res.status(200).send(r === null ? JSON.stringify(null) : r);
|
|
119
|
-
})))
|
|
119
|
+
})));
|
|
120
120
|
}
|
|
121
121
|
export function makeRequestParsers(Request) {
|
|
122
|
-
const ph =
|
|
122
|
+
const ph = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Headers)))));
|
|
123
123
|
const parseHeaders = (u) => tracer_1.withCallTrace(fileName_1 + ":309:43")(tsplus_module_6.flatMapOpt(ph, d => d(u)));
|
|
124
|
-
const pq =
|
|
124
|
+
const pq = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Query)))));
|
|
125
125
|
const parseQuery = (u) => tracer_1.withCallTrace(fileName_1 + ":317:41")(tsplus_module_6.flatMapOpt(pq, d => d(u)));
|
|
126
|
-
const pb =
|
|
126
|
+
const pb = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Body)))));
|
|
127
127
|
const parseBody = (u) => tracer_1.withCallTrace(fileName_1 + ":325:40")(tsplus_module_6.flatMapOpt(pb, d => d(u)));
|
|
128
|
-
const pp =
|
|
128
|
+
const pp = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Path)))));
|
|
129
129
|
const parsePath = (u) => tracer_1.withCallTrace(fileName_1 + ":333:40")(tsplus_module_6.flatMapOpt(pp, d => d(u)));
|
|
130
|
-
const pc =
|
|
130
|
+
const pc = tsplus_module_1.sync(() => tsplus_module_5.map(MO.condemn)(tsplus_module_5.map(Parser.for)(tsplus_module_5.map(s => s)(tsplus_module_5.fromNullable(Request.Cookie)))));
|
|
131
131
|
const parseCookie = (u) => tracer_1.withCallTrace(fileName_1 + ":341:42")(tsplus_module_6.flatMapOpt(pc, d => d(u)));
|
|
132
132
|
return {
|
|
133
133
|
parseBody,
|
|
@@ -137,4 +137,4 @@ export function makeRequestParsers(Request) {
|
|
|
137
137
|
parseQuery
|
|
138
138
|
};
|
|
139
139
|
}
|
|
140
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9fc3JjL2FwaS9leHByZXNzL3NjaGVtYS9yZXF1ZXN0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLHVEQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV4QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBd0NwRCxvREFBb0Q7QUFDcEQsaUNBQWlDO0FBQ2pDLDZCQUE2QjtBQUM3QixtQ0FBbUM7QUFDbkMsTUFBTTtBQUNOLG1FQUFtRTtBQUNuRSxpQ0FBaUM7QUFDakMsTUFBTTtBQUNOLHFDQUFxQztBQUNyQyxJQUFJO0FBQ0osTUFBTSxVQUFVLFlBQVksQ0FBQyxDQUFVO0lBQ3JDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUNaLENBQUM7QUFFRCxpRUFBaUU7QUFDakUsK0ZBQStGO0FBQy9GLDRCQUE0QjtBQUM1QixNQUFNO0FBQ04sSUFBSTtBQUVKLDhEQUE4RDtBQUM5RCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLE9BQStEO0lBRS9ELE9BQU8sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQW1CLEVBQUUsRUFBRSxDQUNwRSx3QkFBQSx1QkFBYztRQUNaLElBQUksRUFBRSw2Q0FBQSxPQUFPO2FBQ1YsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUNGLENBQUMsQ0FBQyxFQUFFLENBQ2hCLDBCQUFBLENBQUMsQ0FBWSxJQUFJLENBQUMsMEJBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBWTtZQUNuQyxDQUFDLENBQUUsOEJBQXFCLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQTJDO1lBQ2hGLENB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
|